403.gcc__combine.c   [plain text]


# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 1
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 146 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2
# 77 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/config.h" 1

# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/auto-host.h" 1
# 3 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/config.h" 2




struct rtx_def;
typedef struct rtx_def *rtx;
struct rtvec_def;
typedef struct rtvec_def *rtvec;
union tree_node;
typedef union tree_node *tree;

# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/ansidecl.h" 1
# 14 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/config.h" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/biarch64.h" 1
# 15 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/config.h" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/i386.h" 1
# 53 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/i386.h"
struct processor_costs {
  const int add;
  const int lea;
  const int shift_var;
  const int shift_const;
  const int mult_init;
  const int mult_bit;
  const int divide;
  int movsx;
  int movzx;
  const int large_insn;
  const int move_ratio;

  const int movzbl_load;
  const int int_load[3];


  const int int_store[3];

  const int fp_move;
  const int fp_load[3];

  const int fp_store[3];

  const int mmx_move;
  const int mmx_load[2];

  const int mmx_store[2];

  const int sse_move;
  const int sse_load[3];

  const int sse_store[3];

  const int mmxsse_to_integer;

  const int prefetch_block;
  const int simultaneous_prefetches;

};

extern const struct processor_costs *ix86_cost;



extern int target_flags;
# 211 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/i386.h"
extern const int x86_use_leave, x86_push_memory, x86_zero_extend_with_and;
extern const int x86_use_bit_test, x86_cmove, x86_deep_branch;
extern const int x86_branch_hints, x86_unroll_strlen;
extern const int x86_double_with_add, x86_partial_reg_stall, x86_movx;
extern const int x86_use_loop, x86_use_fiop, x86_use_mov0;
extern const int x86_use_cltd, x86_read_modify_write;
extern const int x86_read_modify, x86_split_long_moves;
extern const int x86_promote_QImode, x86_single_stringop;
extern const int x86_himode_math, x86_qimode_math, x86_promote_qi_regs;
extern const int x86_promote_hi_regs, x86_integer_DFmode_moves;
extern const int x86_add_esp_4, x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8;
extern const int x86_partial_reg_dependency, x86_memory_mismatch_stall;
extern const int x86_accumulate_outgoing_args, x86_prologue_using_move;
extern const int x86_epilogue_using_move, x86_decompose_lea;
extern const int x86_arch_always_fancy_math_387;
extern int x86_prefetch_sse;
# 395 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/i386.h"
enum processor_type
{
  PROCESSOR_I386,
  PROCESSOR_I486,
  PROCESSOR_PENTIUM,
  PROCESSOR_PENTIUMPRO,
  PROCESSOR_K6,
  PROCESSOR_ATHLON,
  PROCESSOR_PENTIUM4,
  PROCESSOR_max
};
enum fpmath_unit
{
  FPMATH_387 = 1,
  FPMATH_SSE = 2
};

extern enum processor_type ix86_cpu;
extern enum fpmath_unit ix86_fpmath;

extern int ix86_arch;
# 1202 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/i386.h"
enum reg_class
{
  NO_REGS,
  AREG, DREG, CREG, BREG, SIREG, DIREG,
  AD_REGS,
  Q_REGS,
  NON_Q_REGS,
  INDEX_REGS,
  LEGACY_REGS,
  GENERAL_REGS,
  FP_TOP_REG, FP_SECOND_REG,
  FLOAT_REGS,
  SSE_REGS,
  MMX_REGS,
  FP_TOP_SSE_REGS,
  FP_SECOND_SSE_REGS,
  FLOAT_SSE_REGS,
  FLOAT_INT_REGS,
  INT_SSE_REGS,
  FLOAT_INT_SSE_REGS,
  ALL_REGS, LIM_REG_CLASSES
};
# 1667 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/i386.h"
typedef struct ix86_args {
  int words;
  int nregs;
  int regno;
  int sse_words;
  int sse_nregs;
  int sse_regno;
  int maybe_vaarg;
} CUMULATIVE_ARGS;
# 2029 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/i386.h"
enum ix86_builtins
{
  IX86_BUILTIN_ADDPS,
  IX86_BUILTIN_ADDSS,
  IX86_BUILTIN_DIVPS,
  IX86_BUILTIN_DIVSS,
  IX86_BUILTIN_MULPS,
  IX86_BUILTIN_MULSS,
  IX86_BUILTIN_SUBPS,
  IX86_BUILTIN_SUBSS,

  IX86_BUILTIN_CMPEQPS,
  IX86_BUILTIN_CMPLTPS,
  IX86_BUILTIN_CMPLEPS,
  IX86_BUILTIN_CMPGTPS,
  IX86_BUILTIN_CMPGEPS,
  IX86_BUILTIN_CMPNEQPS,
  IX86_BUILTIN_CMPNLTPS,
  IX86_BUILTIN_CMPNLEPS,
  IX86_BUILTIN_CMPNGTPS,
  IX86_BUILTIN_CMPNGEPS,
  IX86_BUILTIN_CMPORDPS,
  IX86_BUILTIN_CMPUNORDPS,
  IX86_BUILTIN_CMPNEPS,
  IX86_BUILTIN_CMPEQSS,
  IX86_BUILTIN_CMPLTSS,
  IX86_BUILTIN_CMPLESS,
  IX86_BUILTIN_CMPGTSS,
  IX86_BUILTIN_CMPGESS,
  IX86_BUILTIN_CMPNEQSS,
  IX86_BUILTIN_CMPNLTSS,
  IX86_BUILTIN_CMPNLESS,
  IX86_BUILTIN_CMPNGTSS,
  IX86_BUILTIN_CMPNGESS,
  IX86_BUILTIN_CMPORDSS,
  IX86_BUILTIN_CMPUNORDSS,
  IX86_BUILTIN_CMPNESS,

  IX86_BUILTIN_COMIEQSS,
  IX86_BUILTIN_COMILTSS,
  IX86_BUILTIN_COMILESS,
  IX86_BUILTIN_COMIGTSS,
  IX86_BUILTIN_COMIGESS,
  IX86_BUILTIN_COMINEQSS,
  IX86_BUILTIN_UCOMIEQSS,
  IX86_BUILTIN_UCOMILTSS,
  IX86_BUILTIN_UCOMILESS,
  IX86_BUILTIN_UCOMIGTSS,
  IX86_BUILTIN_UCOMIGESS,
  IX86_BUILTIN_UCOMINEQSS,

  IX86_BUILTIN_CVTPI2PS,
  IX86_BUILTIN_CVTPS2PI,
  IX86_BUILTIN_CVTSI2SS,
  IX86_BUILTIN_CVTSS2SI,
  IX86_BUILTIN_CVTTPS2PI,
  IX86_BUILTIN_CVTTSS2SI,

  IX86_BUILTIN_MAXPS,
  IX86_BUILTIN_MAXSS,
  IX86_BUILTIN_MINPS,
  IX86_BUILTIN_MINSS,

  IX86_BUILTIN_LOADAPS,
  IX86_BUILTIN_LOADUPS,
  IX86_BUILTIN_STOREAPS,
  IX86_BUILTIN_STOREUPS,
  IX86_BUILTIN_LOADSS,
  IX86_BUILTIN_STORESS,
  IX86_BUILTIN_MOVSS,

  IX86_BUILTIN_MOVHLPS,
  IX86_BUILTIN_MOVLHPS,
  IX86_BUILTIN_LOADHPS,
  IX86_BUILTIN_LOADLPS,
  IX86_BUILTIN_STOREHPS,
  IX86_BUILTIN_STORELPS,

  IX86_BUILTIN_MASKMOVQ,
  IX86_BUILTIN_MOVMSKPS,
  IX86_BUILTIN_PMOVMSKB,

  IX86_BUILTIN_MOVNTPS,
  IX86_BUILTIN_MOVNTQ,

  IX86_BUILTIN_PACKSSWB,
  IX86_BUILTIN_PACKSSDW,
  IX86_BUILTIN_PACKUSWB,

  IX86_BUILTIN_PADDB,
  IX86_BUILTIN_PADDW,
  IX86_BUILTIN_PADDD,
  IX86_BUILTIN_PADDSB,
  IX86_BUILTIN_PADDSW,
  IX86_BUILTIN_PADDUSB,
  IX86_BUILTIN_PADDUSW,
  IX86_BUILTIN_PSUBB,
  IX86_BUILTIN_PSUBW,
  IX86_BUILTIN_PSUBD,
  IX86_BUILTIN_PSUBSB,
  IX86_BUILTIN_PSUBSW,
  IX86_BUILTIN_PSUBUSB,
  IX86_BUILTIN_PSUBUSW,

  IX86_BUILTIN_PAND,
  IX86_BUILTIN_PANDN,
  IX86_BUILTIN_POR,
  IX86_BUILTIN_PXOR,

  IX86_BUILTIN_PAVGB,
  IX86_BUILTIN_PAVGW,

  IX86_BUILTIN_PCMPEQB,
  IX86_BUILTIN_PCMPEQW,
  IX86_BUILTIN_PCMPEQD,
  IX86_BUILTIN_PCMPGTB,
  IX86_BUILTIN_PCMPGTW,
  IX86_BUILTIN_PCMPGTD,

  IX86_BUILTIN_PEXTRW,
  IX86_BUILTIN_PINSRW,

  IX86_BUILTIN_PMADDWD,

  IX86_BUILTIN_PMAXSW,
  IX86_BUILTIN_PMAXUB,
  IX86_BUILTIN_PMINSW,
  IX86_BUILTIN_PMINUB,

  IX86_BUILTIN_PMULHUW,
  IX86_BUILTIN_PMULHW,
  IX86_BUILTIN_PMULLW,

  IX86_BUILTIN_PSADBW,
  IX86_BUILTIN_PSHUFW,

  IX86_BUILTIN_PSLLW,
  IX86_BUILTIN_PSLLD,
  IX86_BUILTIN_PSLLQ,
  IX86_BUILTIN_PSRAW,
  IX86_BUILTIN_PSRAD,
  IX86_BUILTIN_PSRLW,
  IX86_BUILTIN_PSRLD,
  IX86_BUILTIN_PSRLQ,
  IX86_BUILTIN_PSLLWI,
  IX86_BUILTIN_PSLLDI,
  IX86_BUILTIN_PSLLQI,
  IX86_BUILTIN_PSRAWI,
  IX86_BUILTIN_PSRADI,
  IX86_BUILTIN_PSRLWI,
  IX86_BUILTIN_PSRLDI,
  IX86_BUILTIN_PSRLQI,

  IX86_BUILTIN_PUNPCKHBW,
  IX86_BUILTIN_PUNPCKHWD,
  IX86_BUILTIN_PUNPCKHDQ,
  IX86_BUILTIN_PUNPCKLBW,
  IX86_BUILTIN_PUNPCKLWD,
  IX86_BUILTIN_PUNPCKLDQ,

  IX86_BUILTIN_SHUFPS,

  IX86_BUILTIN_RCPPS,
  IX86_BUILTIN_RCPSS,
  IX86_BUILTIN_RSQRTPS,
  IX86_BUILTIN_RSQRTSS,
  IX86_BUILTIN_SQRTPS,
  IX86_BUILTIN_SQRTSS,

  IX86_BUILTIN_UNPCKHPS,
  IX86_BUILTIN_UNPCKLPS,

  IX86_BUILTIN_ANDPS,
  IX86_BUILTIN_ANDNPS,
  IX86_BUILTIN_ORPS,
  IX86_BUILTIN_XORPS,

  IX86_BUILTIN_EMMS,
  IX86_BUILTIN_LDMXCSR,
  IX86_BUILTIN_STMXCSR,
  IX86_BUILTIN_SFENCE,


  IX86_BUILTIN_FEMMS,
  IX86_BUILTIN_PAVGUSB,
  IX86_BUILTIN_PF2ID,
  IX86_BUILTIN_PFACC,
  IX86_BUILTIN_PFADD,
  IX86_BUILTIN_PFCMPEQ,
  IX86_BUILTIN_PFCMPGE,
  IX86_BUILTIN_PFCMPGT,
  IX86_BUILTIN_PFMAX,
  IX86_BUILTIN_PFMIN,
  IX86_BUILTIN_PFMUL,
  IX86_BUILTIN_PFRCP,
  IX86_BUILTIN_PFRCPIT1,
  IX86_BUILTIN_PFRCPIT2,
  IX86_BUILTIN_PFRSQIT1,
  IX86_BUILTIN_PFRSQRT,
  IX86_BUILTIN_PFSUB,
  IX86_BUILTIN_PFSUBR,
  IX86_BUILTIN_PI2FD,
  IX86_BUILTIN_PMULHRW,


  IX86_BUILTIN_PF2IW,
  IX86_BUILTIN_PFNACC,
  IX86_BUILTIN_PFPNACC,
  IX86_BUILTIN_PI2FW,
  IX86_BUILTIN_PSWAPDSI,
  IX86_BUILTIN_PSWAPDSF,

  IX86_BUILTIN_SSE_ZERO,
  IX86_BUILTIN_MMX_ZERO,

  IX86_BUILTIN_MAX
};
# 2818 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/i386.h"
extern int const dbx_register_map[53];
extern int const dbx64_register_map[53];
extern int const svr4_dbx_register_map[53];
# 3092 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/i386.h"
enum cmodel {
  CM_32,
  CM_SMALL,
  CM_KERNEL,
  CM_MEDIUM,
  CM_LARGE,
  CM_SMALL_PIC
};





extern const char *ix86_debug_arg_string, *ix86_debug_addr_string;

enum asm_dialect {
  ASM_ATT,
  ASM_INTEL
};
extern const char *ix86_asm_string;
extern enum asm_dialect ix86_asm_dialect;

extern const char *ix86_cmodel_string;
extern enum cmodel ix86_cmodel;


extern const char *ix86_cpu_string;
extern const char *ix86_arch_string;
extern const char *ix86_fpmath_string;
extern const char *ix86_regparm_string;
extern const char *ix86_align_loops_string;
extern const char *ix86_align_jumps_string;
extern const char *ix86_align_funcs_string;
extern const char *ix86_preferred_stack_boundary_string;
extern const char *ix86_branch_cost_string;
extern int ix86_regparm;
extern int ix86_preferred_stack_boundary;
extern int ix86_branch_cost;
extern enum reg_class const regclass_map[53];
extern rtx ix86_compare_op0;
extern rtx ix86_compare_op1;
# 3149 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/i386.h"
enum fp_cw_mode {FP_CW_STORED, FP_CW_UNINITIALIZED, FP_CW_ANY};
# 16 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/config.h" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/att.h" 1
# 22 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/att.h"
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/unix.h" 1
# 23 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/att.h" 2
# 17 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/config.h" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/dbxelf.h" 1
# 18 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/config.h" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/elfos.h" 1
# 19 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/config.h" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/svr4.h" 1
# 20 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/config.h" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/linux.h" 1
# 21 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/config.h" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/x86-64.h" 1
# 22 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/config.h" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/linux64.h" 1
# 23 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/config.h" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/defaults.h" 1
# 24 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/config.h" 2




# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/insn-constants.h" 1
# 29 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/config.h" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/insn-flags.h" 1
# 599 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/insn-flags.h"
struct rtx_def;
extern struct rtx_def *gen_cmpdi_ccno_1_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpdi_1_insn_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpqi_ext_3_insn (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpqi_ext_3_insn_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_fnstsw_1 (struct rtx_def *);
extern struct rtx_def *gen_x86_sahf_1 (struct rtx_def *);
extern struct rtx_def *gen_popsi1 (struct rtx_def *);
extern struct rtx_def *gen_movsi_insv_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pushdi2_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_popdi1 (struct rtx_def *);
extern struct rtx_def *gen_swapxf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_swaptf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendhisi2_and (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendsidi2_32 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendsidi2_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendhidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendqidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendsidi2_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendhidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendhisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqihi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_truncdfsf2_3 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_truncdfsf2_sse_only (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdi_nomemory (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdi_memory (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsfdi_sse (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdfdi_sse (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsi_nomemory (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsi_memory (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsfsi_sse (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdfsi_sse (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_trunchi_nomemory (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_trunchi_memory (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_fnstcw_1 (struct rtx_def *);
extern struct rtx_def *gen_x86_fldcw_1 (struct rtx_def *);
extern struct rtx_def *gen_floathisf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floathidf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floathixf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floathitf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatsixf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatsitf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatdixf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatditf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addqi3_cc (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addsi_1_zext (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addqi_ext_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subdi3_carry_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subsi3_carry (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subsi3_carry_zext (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_udivqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divmodhi4 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_udivmoddi4 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_udivmodsi4 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_testsi_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_andqi_ext_0 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negsf2_memory (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negsf2_ifs (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negdf2_memory (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negdf2_ifs (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_abssf2_memory (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_abssf2_ifs (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absdf2_memory (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absdf2_ifs (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashldi3_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_shld_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrdi3_63_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrdi3_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_shrd_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrsi3_31 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrdi3_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_setcc_2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_jump (struct rtx_def *);
extern struct rtx_def *gen_doloop_end_internal (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_blockage (void);
extern struct rtx_def *gen_return_internal (void);
extern struct rtx_def *gen_return_pop_internal (struct rtx_def *);
extern struct rtx_def *gen_return_indirect_internal (struct rtx_def *);
extern struct rtx_def *gen_nop (void);
extern struct rtx_def *gen_prologue_set_got (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_prologue_get_pc (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_eh_return_si (struct rtx_def *);
extern struct rtx_def *gen_eh_return_di (struct rtx_def *);
extern struct rtx_def *gen_leave (void);
extern struct rtx_def *gen_leave_rex64 (void);
extern struct rtx_def *gen_ffssi_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtsf2_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtsf2_1_sse_only (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtsf2_i387 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtdf2_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtdf2_1_sse_only (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtdf2_i387 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtxf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrttf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sindf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sinsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sinxf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sintf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cosdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cossf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cosxf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_costf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cld (void);
extern struct rtx_def *gen_strmovdi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovsi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovsi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovhi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovhi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovqi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovqi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_movdi_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_movsi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_movsi_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_movqi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_movqi_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetdi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetsi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetsi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsethi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsethi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetqi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetqi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_stosdi_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_stossi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_stossi_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_stosqi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rep_stosqi_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpstrqi_nz_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpstrqi_nz_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpstrqi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpstrqi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strlenqi_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strlenqi_rex_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_movdicc_0_m1_rex64 (struct rtx_def *);
extern struct rtx_def *gen_x86_movsicc_0_m1 (struct rtx_def *);
extern struct rtx_def *gen_pro_epilogue_adjust_stack_rex64 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movsfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movsfcc_eq (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movdfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movdfcc_eq (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_allocate_stack_worker_1 (struct rtx_def *);
extern struct rtx_def *gen_allocate_stack_worker_rex64 (struct rtx_def *);
extern struct rtx_def *gen_trap (void);
extern struct rtx_def *gen_movv4sf_internal (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv4si_internal (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv8qi_internal (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv4hi_internal (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv2si_internal (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv2sf_internal (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movti_internal (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movaps (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movups (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movmskps (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_pmovmskb (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_maskmovq (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_maskmovq_rex (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movntv4sf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movntdi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movhlps (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movlhps (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movhps (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movlps (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_loadss (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_movss (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_storess (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_shufps (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmaddv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmsubv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmmulv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmdivv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rcpv4sf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmrcpv4sf2 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rsqrtv4sf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmrsqrtv4sf2 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtv4sf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmsqrtv4sf2 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_andti3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_nandti3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_iorti3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_xorti3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_clrv4sf (struct rtx_def *);
extern struct rtx_def *gen_maskcmpv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_maskncmpv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmmaskcmpv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmmaskncmpv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_comi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_ucomi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_unpckhps (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sse_unpcklps (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smaxv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmsmaxv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sminv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_vmsminv4sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cvtpi2ps (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cvtps2pi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cvttps2pi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cvtsi2ss (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cvtss2si (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cvttss2si (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addv2si3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ssaddv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ssaddv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_usaddv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_usaddv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subv2si3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sssubv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sssubv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ussubv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ussubv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smulv4hi3_highpart (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umulv4hi3_highpart (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_pmaddwd (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_iordi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_xordi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_clrdi (struct rtx_def *);
extern struct rtx_def *gen_mmx_anddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_nanddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_uavgv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_uavgv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_psadbw (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_pinsrw (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_pextrw (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_pshufw (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_eqv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_eqv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_eqv2si3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_gtv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_gtv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_gtv2si3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umaxv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smaxv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_uminv8qi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sminv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrv2si3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrv2si3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_lshrdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashlv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashlv2si3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_ashldi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_packsswb (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_packssdw (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_packuswb (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_punpckhbw (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_punpckhwd (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_punpckhdq (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_punpcklbw (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_punpcklwd (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mmx_punpckldq (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_emms (void);
extern struct rtx_def *gen_ldmxcsr (struct rtx_def *);
extern struct rtx_def *gen_stmxcsr (struct rtx_def *);
extern struct rtx_def *gen_addv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subrv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_gtv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_gev2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_eqv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfmaxv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfminv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulv2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_femms (void);
extern struct rtx_def *gen_pf2id (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pf2iw (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfacc (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfnacc (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfpnacc (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pi2fw (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatv2si2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pavgusb (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfrcpv2sf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfrcpit1v2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfrcpit2v2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfrsqrtv2sf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pfrsqit1v2sf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pmulhrwv4hi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pswapdv2si2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pswapdv2sf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpdi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpsi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmphi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpqi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpdi_1_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpsi_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpqi_ext_3 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpxf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmptf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpdf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpsf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movsi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movhi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movstricthi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movqi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_outqi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movstrictqi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movsf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movxf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movtf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendhisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendqihi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendqisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendsidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendsidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendsfdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendsfxf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendsftf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extenddfxf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extenddftf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_truncdfsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_truncxfsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_trunctfsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_truncxfdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_trunctfdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncxfdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_trunctfdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdfdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsfdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncxfsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_trunctfsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdfsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsfsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncxfhi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_trunctfhi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdfhi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsfhi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatsisf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatdisf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatsidf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatdidf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_adddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addxf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addtf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_adddf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subxf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subtf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subdf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_muldi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umulqihi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulqihi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umulditi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umulsidi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulditi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulsidi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umuldi3_highpart (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umulsi3_highpart (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smuldi3_highpart (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smulsi3_highpart (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulxf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_multf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_muldf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divxf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divtf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divdf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divmoddi4 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divmodsi4 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_udivmodhi4 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_testsi_ccno_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_testqi_ccz_1 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_testqi_ext_ccno_0 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_anddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_andsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_andhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_andqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_iordi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_iorsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_iorhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_iorqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_xordi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_xorsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_xorhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_xorqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_xorqi_cc_ext_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_neghi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negqi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negxf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negtf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_abssf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absxf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_abstf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_one_cmpldi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_one_cmplsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_one_cmplhi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_one_cmplqi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashldi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_shift_adj_1 (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_shift_adj_2 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashlsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashlhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashlqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_x86_shift_adj_3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotldi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotlsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotlhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotlqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotrdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotrsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotrhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_rotrqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extv (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extzv (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insv (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_seq (struct rtx_def *);
extern struct rtx_def *gen_sne (struct rtx_def *);
extern struct rtx_def *gen_sgt (struct rtx_def *);
extern struct rtx_def *gen_sgtu (struct rtx_def *);
extern struct rtx_def *gen_slt (struct rtx_def *);
extern struct rtx_def *gen_sltu (struct rtx_def *);
extern struct rtx_def *gen_sge (struct rtx_def *);
extern struct rtx_def *gen_sgeu (struct rtx_def *);
extern struct rtx_def *gen_sle (struct rtx_def *);
extern struct rtx_def *gen_sleu (struct rtx_def *);
extern struct rtx_def *gen_sunordered (struct rtx_def *);
extern struct rtx_def *gen_sordered (struct rtx_def *);
extern struct rtx_def *gen_suneq (struct rtx_def *);
extern struct rtx_def *gen_sunge (struct rtx_def *);
extern struct rtx_def *gen_sungt (struct rtx_def *);
extern struct rtx_def *gen_sunle (struct rtx_def *);
extern struct rtx_def *gen_sunlt (struct rtx_def *);
extern struct rtx_def *gen_sltgt (struct rtx_def *);
extern struct rtx_def *gen_beq (struct rtx_def *);
extern struct rtx_def *gen_bne (struct rtx_def *);
extern struct rtx_def *gen_bgt (struct rtx_def *);
extern struct rtx_def *gen_bgtu (struct rtx_def *);
extern struct rtx_def *gen_blt (struct rtx_def *);
extern struct rtx_def *gen_bltu (struct rtx_def *);
extern struct rtx_def *gen_bge (struct rtx_def *);
extern struct rtx_def *gen_bgeu (struct rtx_def *);
extern struct rtx_def *gen_ble (struct rtx_def *);
extern struct rtx_def *gen_bleu (struct rtx_def *);
extern struct rtx_def *gen_bunordered (struct rtx_def *);
extern struct rtx_def *gen_bordered (struct rtx_def *);
extern struct rtx_def *gen_buneq (struct rtx_def *);
extern struct rtx_def *gen_bunge (struct rtx_def *);
extern struct rtx_def *gen_bungt (struct rtx_def *);
extern struct rtx_def *gen_bunle (struct rtx_def *);
extern struct rtx_def *gen_bunlt (struct rtx_def *);
extern struct rtx_def *gen_bltgt (struct rtx_def *);
extern struct rtx_def *gen_indirect_jump (struct rtx_def *);
extern struct rtx_def *gen_tablejump (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_doloop_end (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);

extern struct rtx_def *gen_call_pop (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);

extern struct rtx_def *gen_call (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_exp (struct rtx_def *, struct rtx_def *);

extern struct rtx_def *gen_call_value_pop (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);

extern struct rtx_def *gen_call_value (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_value_exp (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_untyped_call (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_return (void);
extern struct rtx_def *gen_prologue (void);
extern struct rtx_def *gen_epilogue (void);
extern struct rtx_def *gen_sibcall_epilogue (void);
extern struct rtx_def *gen_eh_return (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ffssi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movstrsi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movstrdi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovdi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovsi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovsi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovhi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovhi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovqi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strmovqi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_clrstrsi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_clrstrdi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetdi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetsi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetsi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsethi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsethi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetqi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strsetqi_rex64 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpstrsi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpintqi (struct rtx_def *);
extern struct rtx_def *gen_strlensi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_strlendi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdicc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movsicc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movhicc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movsfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movxfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movtfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_minsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mindf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_maxsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_maxdf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_pro_epilogue_adjust_stack (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_allocate_stack_worker (struct rtx_def *);
extern struct rtx_def *gen_allocate_stack (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_builtin_setjmp_receiver (struct rtx_def *);
extern struct rtx_def *gen_conditional_trap (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movti (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv4sf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv4si (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv2si (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv4hi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv8qi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movv2sf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sfence (void);
extern struct rtx_def *gen_sse_prologue_save (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_prefetch (struct rtx_def *, struct rtx_def *, struct rtx_def *);
# 30 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/config.h" 2
# 78 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 1
# 33 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h"
# 1 "/Users/ddunbar/rt/10907846/clang-211.10.1-Slate/Developer/usr/bin/../lib/clang/3.0/include/stdarg.h" 1 3 4
# 30 "/Users/ddunbar/rt/10907846/clang-211.10.1-Slate/Developer/usr/bin/../lib/clang/3.0/include/stdarg.h" 3 4
typedef __builtin_va_list va_list;
# 48 "/Users/ddunbar/rt/10907846/clang-211.10.1-Slate/Developer/usr/bin/../lib/clang/3.0/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 34 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2
# 47 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h"
# 1 "/Users/ddunbar/rt/10907846/clang-211.10.1-Slate/Developer/usr/bin/../lib/clang/3.0/include/stddef.h" 1 3 4
# 31 "/Users/ddunbar/rt/10907846/clang-211.10.1-Slate/Developer/usr/bin/../lib/clang/3.0/include/stddef.h" 3 4
typedef __typeof__(((int*)0)-((int*)0)) ptrdiff_t;



typedef __typeof__(sizeof(int)) size_t;




typedef int wchar_t;
# 48 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2


# 1 "/usr/include/stdio.h" 1 3 4
# 64 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/sys/cdefs.h" 1 3 4
# 417 "/usr/include/sys/cdefs.h" 3 4
# 1 "/usr/include/sys/_symbol_aliasing.h" 1 3 4
# 418 "/usr/include/sys/cdefs.h" 2 3 4
# 494 "/usr/include/sys/cdefs.h" 3 4
# 1 "/usr/include/sys/_posix_availability.h" 1 3 4
# 495 "/usr/include/sys/cdefs.h" 2 3 4
# 65 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/Availability.h" 1 3 4
# 141 "/usr/include/Availability.h" 3 4
# 1 "/usr/include/AvailabilityInternal.h" 1 3 4
# 142 "/usr/include/Availability.h" 2 3 4
# 66 "/usr/include/stdio.h" 2 3 4

# 1 "/usr/include/_types.h" 1 3 4
# 27 "/usr/include/_types.h" 3 4
# 1 "/usr/include/sys/_types.h" 1 3 4
# 33 "/usr/include/sys/_types.h" 3 4
# 1 "/usr/include/machine/_types.h" 1 3 4
# 32 "/usr/include/machine/_types.h" 3 4
# 1 "/usr/include/i386/_types.h" 1 3 4
# 37 "/usr/include/i386/_types.h" 3 4
typedef signed char __int8_t;



typedef unsigned char __uint8_t;
typedef short __int16_t;
typedef unsigned short __uint16_t;
typedef int __int32_t;
typedef unsigned int __uint32_t;
typedef long long __int64_t;
typedef unsigned long long __uint64_t;

typedef long __darwin_intptr_t;
typedef unsigned int __darwin_natural_t;
# 70 "/usr/include/i386/_types.h" 3 4
typedef int __darwin_ct_rune_t;





typedef union {
 char __mbstate8[128];
 long long _mbstateL;
} __mbstate_t;

typedef __mbstate_t __darwin_mbstate_t;


typedef long int __darwin_ptrdiff_t;





typedef long unsigned int __darwin_size_t;





typedef __builtin_va_list __darwin_va_list;





typedef int __darwin_wchar_t;




typedef __darwin_wchar_t __darwin_rune_t;


typedef int __darwin_wint_t;




typedef unsigned long __darwin_clock_t;
typedef __uint32_t __darwin_socklen_t;
typedef long __darwin_ssize_t;
typedef long __darwin_time_t;
# 33 "/usr/include/machine/_types.h" 2 3 4
# 34 "/usr/include/sys/_types.h" 2 3 4
# 58 "/usr/include/sys/_types.h" 3 4
struct __darwin_pthread_handler_rec
{
 void (*__routine)(void *);
 void *__arg;
 struct __darwin_pthread_handler_rec *__next;
};
struct _opaque_pthread_attr_t { long __sig; char __opaque[56]; };
struct _opaque_pthread_cond_t { long __sig; char __opaque[40]; };
struct _opaque_pthread_condattr_t { long __sig; char __opaque[8]; };
struct _opaque_pthread_mutex_t { long __sig; char __opaque[56]; };
struct _opaque_pthread_mutexattr_t { long __sig; char __opaque[8]; };
struct _opaque_pthread_once_t { long __sig; char __opaque[8]; };
struct _opaque_pthread_rwlock_t { long __sig; char __opaque[192]; };
struct _opaque_pthread_rwlockattr_t { long __sig; char __opaque[16]; };
struct _opaque_pthread_t { long __sig; struct __darwin_pthread_handler_rec *__cleanup_stack; char __opaque[1168]; };
# 94 "/usr/include/sys/_types.h" 3 4
typedef __int64_t __darwin_blkcnt_t;
typedef __int32_t __darwin_blksize_t;
typedef __int32_t __darwin_dev_t;
typedef unsigned int __darwin_fsblkcnt_t;
typedef unsigned int __darwin_fsfilcnt_t;
typedef __uint32_t __darwin_gid_t;
typedef __uint32_t __darwin_id_t;
typedef __uint64_t __darwin_ino64_t;

typedef __darwin_ino64_t __darwin_ino_t;



typedef __darwin_natural_t __darwin_mach_port_name_t;
typedef __darwin_mach_port_name_t __darwin_mach_port_t;
typedef __uint16_t __darwin_mode_t;
typedef __int64_t __darwin_off_t;
typedef __int32_t __darwin_pid_t;
typedef struct _opaque_pthread_attr_t
   __darwin_pthread_attr_t;
typedef struct _opaque_pthread_cond_t
   __darwin_pthread_cond_t;
typedef struct _opaque_pthread_condattr_t
   __darwin_pthread_condattr_t;
typedef unsigned long __darwin_pthread_key_t;
typedef struct _opaque_pthread_mutex_t
   __darwin_pthread_mutex_t;
typedef struct _opaque_pthread_mutexattr_t
   __darwin_pthread_mutexattr_t;
typedef struct _opaque_pthread_once_t
   __darwin_pthread_once_t;
typedef struct _opaque_pthread_rwlock_t
   __darwin_pthread_rwlock_t;
typedef struct _opaque_pthread_rwlockattr_t
   __darwin_pthread_rwlockattr_t;
typedef struct _opaque_pthread_t
   *__darwin_pthread_t;
typedef __uint32_t __darwin_sigset_t;
typedef __int32_t __darwin_suseconds_t;
typedef __uint32_t __darwin_uid_t;
typedef __uint32_t __darwin_useconds_t;
typedef unsigned char __darwin_uuid_t[16];
typedef char __darwin_uuid_string_t[37];
# 28 "/usr/include/_types.h" 2 3 4
# 39 "/usr/include/_types.h" 3 4
typedef int __darwin_nl_item;
typedef int __darwin_wctrans_t;

typedef __uint32_t __darwin_wctype_t;
# 68 "/usr/include/stdio.h" 2 3 4
# 85 "/usr/include/stdio.h" 3 4
typedef __darwin_off_t fpos_t;
# 96 "/usr/include/stdio.h" 3 4
struct __sbuf {
 unsigned char *_base;
 int _size;
};


struct __sFILEX;
# 130 "/usr/include/stdio.h" 3 4
typedef struct __sFILE {
 unsigned char *_p;
 int _r;
 int _w;
 short _flags;
 short _file;
 struct __sbuf _bf;
 int _lbfsize;


 void *_cookie;
 int (*_close)(void *);
 int (*_read) (void *, char *, int);
 fpos_t (*_seek) (void *, fpos_t, int);
 int (*_write)(void *, const char *, int);


 struct __sbuf _ub;
 struct __sFILEX *_extra;
 int _ur;


 unsigned char _ubuf[3];
 unsigned char _nbuf[1];


 struct __sbuf _lb;


 int _blksize;
 fpos_t _offset;
} FILE;


extern FILE *__stdinp;
extern FILE *__stdoutp;
extern FILE *__stderrp;
# 239 "/usr/include/stdio.h" 3 4
void clearerr(FILE *);
int fclose(FILE *);
int feof(FILE *);
int ferror(FILE *);
int fflush(FILE *);
int fgetc(FILE *);
int fgetpos(FILE * restrict, fpos_t *);
char *fgets(char * restrict, int, FILE *);



FILE *fopen(const char * restrict, const char * restrict) __asm("_" "fopen" );

int fprintf(FILE * restrict, const char * restrict, ...) __attribute__((__format__ (__printf__, 2, 3)));
int fputc(int, FILE *);
int fputs(const char * restrict, FILE * restrict) __asm("_" "fputs" );
size_t fread(void * restrict, size_t, size_t, FILE * restrict);
FILE *freopen(const char * restrict, const char * restrict,
                 FILE * restrict) __asm("_" "freopen" );
int fscanf(FILE * restrict, const char * restrict, ...) __attribute__((__format__ (__scanf__, 2, 3)));
int fseek(FILE *, long, int);
int fsetpos(FILE *, const fpos_t *);
long ftell(FILE *);
size_t fwrite(const void * restrict, size_t, size_t, FILE * restrict) __asm("_" "fwrite" );
int getc(FILE *);
int getchar(void);
char *gets(char *);
void perror(const char *);
int printf(const char * restrict, ...) __attribute__((__format__ (__printf__, 1, 2)));
int putc(int, FILE *);
int putchar(int);
int puts(const char *);
int remove(const char *);
int rename (const char *, const char *);
void rewind(FILE *);
int scanf(const char * restrict, ...) __attribute__((__format__ (__scanf__, 1, 2)));
void setbuf(FILE * restrict, char * restrict);
int setvbuf(FILE * restrict, char * restrict, int, size_t);
int sprintf(char * restrict, const char * restrict, ...) __attribute__((__format__ (__printf__, 2, 3)));
int sscanf(const char * restrict, const char * restrict, ...) __attribute__((__format__ (__scanf__, 2, 3)));
FILE *tmpfile(void);
char *tmpnam(char *);
int ungetc(int, FILE *);
int vfprintf(FILE * restrict, const char * restrict, va_list) __attribute__((__format__ (__printf__, 2, 0)));
int vprintf(const char * restrict, va_list) __attribute__((__format__ (__printf__, 1, 0)));
int vsprintf(char * restrict, const char * restrict, va_list) __attribute__((__format__ (__printf__, 2, 0)));
# 300 "/usr/include/stdio.h" 3 4
char *ctermid(char *);





FILE *fdopen(int, const char *) __asm("_" "fdopen" );

int fileno(FILE *);
# 319 "/usr/include/stdio.h" 3 4
int pclose(FILE *);



FILE *popen(const char *, const char *) __asm("_" "popen" );
# 341 "/usr/include/stdio.h" 3 4
int __srget(FILE *);
int __svfscanf(FILE *, const char *, va_list) __attribute__((__format__ (__scanf__, 2, 0)));
int __swbuf(int, FILE *);
# 352 "/usr/include/stdio.h" 3 4
static __inline int __sputc(int _c, FILE *_p) {
 if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
  return (*_p->_p++ = _c);
 else
  return (__swbuf(_c, _p));
}
# 378 "/usr/include/stdio.h" 3 4
void flockfile(FILE *);
int ftrylockfile(FILE *);
void funlockfile(FILE *);
int getc_unlocked(FILE *);
int getchar_unlocked(void);
int putc_unlocked(int, FILE *);
int putchar_unlocked(int);



int getw(FILE *);
int putw(int, FILE *);


char *tempnam(const char *, const char *) __asm("_" "tempnam" );
# 414 "/usr/include/stdio.h" 3 4
typedef __darwin_off_t off_t;



int fseeko(FILE *, off_t, int);
off_t ftello(FILE *);





int snprintf(char * restrict, size_t, const char * restrict, ...) __attribute__((__format__ (__printf__, 3, 4)));
int vfscanf(FILE * restrict, const char * restrict, va_list) __attribute__((__format__ (__scanf__, 2, 0)));
int vscanf(const char * restrict, va_list) __attribute__((__format__ (__scanf__, 1, 0)));
int vsnprintf(char * restrict, size_t, const char * restrict, va_list) __attribute__((__format__ (__printf__, 3, 0)));
int vsscanf(const char * restrict, const char * restrict, va_list) __attribute__((__format__ (__scanf__, 2, 0)));
# 442 "/usr/include/stdio.h" 3 4
typedef __darwin_ssize_t ssize_t;



int dprintf(int, const char * restrict, ...) __attribute__((__format__ (__printf__, 2, 3))) __attribute__((visibility("default")));
int vdprintf(int, const char * restrict, va_list) __attribute__((__format__ (__printf__, 2, 0))) __attribute__((visibility("default")));
ssize_t getdelim(char ** restrict, size_t * restrict, int, FILE * restrict) __attribute__((visibility("default")));
ssize_t getline(char ** restrict, size_t * restrict, FILE * restrict) __attribute__((visibility("default")));
# 459 "/usr/include/stdio.h" 3 4
extern const int sys_nerr;
extern const char *const sys_errlist[];

int asprintf(char **, const char *, ...) __attribute__((__format__ (__printf__, 2, 3)));
char *ctermid_r(char *);
char *fgetln(FILE *, size_t *);
const char *fmtcheck(const char *, const char *);
int fpurge(FILE *);
void setbuffer(FILE *, char *, int);
int setlinebuf(FILE *);
int vasprintf(char **, const char *, va_list) __attribute__((__format__ (__printf__, 2, 0)));
FILE *zopen(const char *, const char *, int);





FILE *funopen(const void *,
                 int (*)(void *, char *, int),
                 int (*)(void *, const char *, int),
                 fpos_t (*)(void *, fpos_t, int),
                 int (*)(void *));
# 499 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/secure/_stdio.h" 1 3 4
# 31 "/usr/include/secure/_stdio.h" 3 4
# 1 "/usr/include/secure/_common.h" 1 3 4
# 32 "/usr/include/secure/_stdio.h" 2 3 4
# 45 "/usr/include/secure/_stdio.h" 3 4
extern int __sprintf_chk (char * restrict, int, size_t,
     const char * restrict, ...)
                                      ;




extern int __snprintf_chk (char * restrict, size_t, int, size_t,
      const char * restrict, ...)
                                       ;





extern int __vsprintf_chk (char * restrict, int, size_t,
      const char * restrict, va_list)
                                       ;




extern int __vsnprintf_chk (char * restrict, size_t, int, size_t,
       const char * restrict, va_list)
                                        ;
# 500 "/usr/include/stdio.h" 2 3 4
# 51 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2
# 110 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h"
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/safe-ctype.h" 1
# 44 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/safe-ctype.h"
enum {

  _sch_isblank = 0x0001,
  _sch_iscntrl = 0x0002,
  _sch_isdigit = 0x0004,
  _sch_islower = 0x0008,
  _sch_isprint = 0x0010,
  _sch_ispunct = 0x0020,
  _sch_isspace = 0x0040,
  _sch_isupper = 0x0080,
  _sch_isxdigit = 0x0100,


  _sch_isidst = 0x0200,
  _sch_isvsp = 0x0400,
  _sch_isnvsp = 0x0800,


  _sch_isalpha = _sch_isupper|_sch_islower,
  _sch_isalnum = _sch_isalpha|_sch_isdigit,
  _sch_isidnum = _sch_isidst|_sch_isdigit,
  _sch_isgraph = _sch_isalnum|_sch_ispunct,
  _sch_iscppsp = _sch_isvsp|_sch_isnvsp,
  _sch_isbasic = _sch_isprint|_sch_iscppsp

};


extern const unsigned short _sch_istable[256];
# 97 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/safe-ctype.h"
extern const unsigned char _sch_toupper[256];
extern const unsigned char _sch_tolower[256];
# 111 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2

# 1 "/usr/include/sys/types.h" 1 3 4
# 72 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/sys/appleapiopts.h" 1 3 4
# 73 "/usr/include/sys/types.h" 2 3 4





# 1 "/usr/include/machine/types.h" 1 3 4
# 35 "/usr/include/machine/types.h" 3 4
# 1 "/usr/include/i386/types.h" 1 3 4
# 78 "/usr/include/i386/types.h" 3 4
typedef signed char int8_t;

typedef unsigned char u_int8_t;


typedef short int16_t;

typedef unsigned short u_int16_t;


typedef int int32_t;

typedef unsigned int u_int32_t;


typedef long long int64_t;

typedef unsigned long long u_int64_t;


typedef int64_t register_t;






typedef __darwin_intptr_t intptr_t;



typedef unsigned long uintptr_t;




typedef u_int64_t user_addr_t;
typedef u_int64_t user_size_t;
typedef int64_t user_ssize_t;
typedef int64_t user_long_t;
typedef u_int64_t user_ulong_t;
typedef int64_t user_time_t;
typedef int64_t user_off_t;







typedef u_int64_t syscall_arg_t;
# 36 "/usr/include/machine/types.h" 2 3 4
# 79 "/usr/include/sys/types.h" 2 3 4


# 1 "/usr/include/machine/endian.h" 1 3 4
# 35 "/usr/include/machine/endian.h" 3 4
# 1 "/usr/include/i386/endian.h" 1 3 4
# 99 "/usr/include/i386/endian.h" 3 4
# 1 "/usr/include/sys/_endian.h" 1 3 4
# 124 "/usr/include/sys/_endian.h" 3 4
# 1 "/usr/include/libkern/_OSByteOrder.h" 1 3 4
# 66 "/usr/include/libkern/_OSByteOrder.h" 3 4
# 1 "/usr/include/libkern/i386/_OSByteOrder.h" 1 3 4
# 44 "/usr/include/libkern/i386/_OSByteOrder.h" 3 4
static __inline__
__uint16_t
_OSSwapInt16(
    __uint16_t _data
)
{
    return ((_data << 8) | (_data >> 8));
}

static __inline__
__uint32_t
_OSSwapInt32(
    __uint32_t _data
)
{

    return __builtin_bswap32(_data);




}


static __inline__
__uint64_t
_OSSwapInt64(
    __uint64_t _data
)
{
    return __builtin_bswap64(_data);
}
# 67 "/usr/include/libkern/_OSByteOrder.h" 2 3 4
# 125 "/usr/include/sys/_endian.h" 2 3 4
# 100 "/usr/include/i386/endian.h" 2 3 4
# 36 "/usr/include/machine/endian.h" 2 3 4
# 82 "/usr/include/sys/types.h" 2 3 4


typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;

typedef unsigned long u_long;


typedef unsigned short ushort;
typedef unsigned int uint;


typedef u_int64_t u_quad_t;
typedef int64_t quad_t;
typedef quad_t * qaddr_t;

typedef char * caddr_t;
typedef int32_t daddr_t;


typedef __darwin_dev_t dev_t;



typedef u_int32_t fixpt_t;


typedef __darwin_blkcnt_t blkcnt_t;




typedef __darwin_blksize_t blksize_t;




typedef __darwin_gid_t gid_t;





typedef __uint32_t in_addr_t;




typedef __uint16_t in_port_t;



typedef __darwin_ino_t ino_t;





typedef __darwin_ino64_t ino64_t;






typedef __int32_t key_t;



typedef __darwin_mode_t mode_t;




typedef __uint16_t nlink_t;





typedef __darwin_id_t id_t;



typedef __darwin_pid_t pid_t;
# 176 "/usr/include/sys/types.h" 3 4
typedef int32_t segsz_t;
typedef int32_t swblk_t;


typedef __darwin_uid_t uid_t;
# 223 "/usr/include/sys/types.h" 3 4
typedef __darwin_clock_t clock_t;
# 240 "/usr/include/sys/types.h" 3 4
typedef __darwin_time_t time_t;




typedef __darwin_useconds_t useconds_t;




typedef __darwin_suseconds_t suseconds_t;
# 260 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/sys/_structs.h" 1 3 4
# 184 "/usr/include/sys/_structs.h" 3 4
typedef struct fd_set {
 __int32_t fds_bits[((((1024) % ((sizeof(__int32_t) * 8))) == 0) ? ((1024) / ((sizeof(__int32_t) * 8))) : (((1024) / ((sizeof(__int32_t) * 8))) + 1))];
} fd_set;



static __inline int
__darwin_fd_isset(int _n, const struct fd_set *_p)
{
 return (_p->fds_bits[_n/(sizeof(__int32_t) * 8)] & (1<<(_n % (sizeof(__int32_t) * 8))));
}
# 261 "/usr/include/sys/types.h" 2 3 4




typedef __int32_t fd_mask;
# 318 "/usr/include/sys/types.h" 3 4
typedef __darwin_pthread_attr_t pthread_attr_t;



typedef __darwin_pthread_cond_t pthread_cond_t;



typedef __darwin_pthread_condattr_t pthread_condattr_t;



typedef __darwin_pthread_mutex_t pthread_mutex_t;



typedef __darwin_pthread_mutexattr_t pthread_mutexattr_t;



typedef __darwin_pthread_once_t pthread_once_t;



typedef __darwin_pthread_rwlock_t pthread_rwlock_t;



typedef __darwin_pthread_rwlockattr_t pthread_rwlockattr_t;



typedef __darwin_pthread_t pthread_t;






typedef __darwin_pthread_key_t pthread_key_t;





typedef __darwin_fsblkcnt_t fsblkcnt_t;




typedef __darwin_fsfilcnt_t fsfilcnt_t;
# 113 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2

# 1 "/usr/include/errno.h" 1 3 4
# 23 "/usr/include/errno.h" 3 4
# 1 "/usr/include/sys/errno.h" 1 3 4
# 75 "/usr/include/sys/errno.h" 3 4
extern int * __error(void);
# 24 "/usr/include/errno.h" 2 3 4
# 115 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2
# 125 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h"
# 1 "/usr/include/string.h" 1 3 4
# 80 "/usr/include/string.h" 3 4
void *memchr(const void *, int, size_t);
int memcmp(const void *, const void *, size_t);
void *memcpy(void *, const void *, size_t);
void *memmove(void *, const void *, size_t);
void *memset(void *, int, size_t);
char *strcat(char *, const char *);
char *strchr(const char *, int);
int strcmp(const char *, const char *);
int strcoll(const char *, const char *);
char *strcpy(char *, const char *);
size_t strcspn(const char *, const char *);
char *strerror(int) __asm("_" "strerror" );
size_t strlen(const char *);
char *strncat(char *, const char *, size_t);
int strncmp(const char *, const char *, size_t);
char *strncpy(char *, const char *, size_t);
char *strpbrk(const char *, const char *);
char *strrchr(const char *, int);
size_t strspn(const char *, const char *);
char *strstr(const char *, const char *);
char *strtok(char *, const char *);
size_t strxfrm(char *, const char *, size_t);
# 114 "/usr/include/string.h" 3 4
char *strtok_r(char *, const char *, char **);
# 126 "/usr/include/string.h" 3 4
int strerror_r(int, char *, size_t);
char *strdup(const char *);
void *memccpy(void *, const void *, int, size_t);
# 140 "/usr/include/string.h" 3 4
char *stpcpy(char *, const char *);
char *stpncpy(char *, const char *, size_t) __attribute__((visibility("default")));
char *strndup(const char *, size_t) __attribute__((visibility("default")));
size_t strnlen(const char *, size_t) __attribute__((visibility("default")));
char *strsignal(int sig);
# 159 "/usr/include/string.h" 3 4
void *memmem(const void *, size_t, const void *, size_t) __attribute__((visibility("default")));
void memset_pattern4(void *, const void *, size_t) __attribute__((visibility("default")));
void memset_pattern8(void *, const void *, size_t) __attribute__((visibility("default")));
void memset_pattern16(void *, const void *, size_t) __attribute__((visibility("default")));

char *strcasestr(const char *, const char *);
char *strnstr(const char *, const char *, size_t);
size_t strlcat(char *, const char *, size_t);
size_t strlcpy(char *, const char *, size_t);
void strmode(int, char *);
char *strsep(char **, const char *);


void swab(const void * restrict, void * restrict, ssize_t);








# 1 "/usr/include/strings.h" 1 3 4
# 74 "/usr/include/strings.h" 3 4
int bcmp(const void *, const void *, size_t) ;
void bcopy(const void *, void *, size_t) ;
void bzero(void *, size_t) ;
char *index(const char *, int) ;
char *rindex(const char *, int) ;


int ffs(int);
int strcasecmp(const char *, const char *);
int strncasecmp(const char *, const char *, size_t);





int ffsl(long) __attribute__((visibility("default")));
int fls(int) __attribute__((visibility("default")));
int flsl(long) __attribute__((visibility("default")));



# 1 "/usr/include/string.h" 1 3 4
# 95 "/usr/include/strings.h" 2 3 4
# 181 "/usr/include/string.h" 2 3 4
# 190 "/usr/include/string.h" 3 4
# 1 "/usr/include/secure/_string.h" 1 3 4
# 58 "/usr/include/secure/_string.h" 3 4
static __inline void *
__inline_memcpy_chk (void *__dest, const void *__src, size_t __len)
{
  return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
}






static __inline void *
__inline_memmove_chk (void *__dest, const void *__src, size_t __len)
{
  return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
}






static __inline void *
__inline_memset_chk (void *__dest, int __val, size_t __len)
{
  return __builtin___memset_chk (__dest, __val, __len, __builtin_object_size (__dest, 0));
}






static __inline char *
__inline_strcpy_chk (char *restrict __dest, const char *restrict __src)
{
  return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
}







static __inline char *
__inline_stpcpy_chk (char *__dest, const char *__src)
{
  return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
}






static __inline char *
__inline_stpncpy_chk (char *restrict __dest, const char *restrict __src,
        size_t __len)
{
  return __builtin___stpncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));
}







static __inline char *
__inline_strncpy_chk (char *restrict __dest, const char *restrict __src,
        size_t __len)
{
  return __builtin___strncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));
}






static __inline char *
__inline_strcat_chk (char *restrict __dest, const char *restrict __src)
{
  return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
}







static __inline char *
__inline_strncat_chk (char *restrict __dest, const char *restrict __src,
        size_t __len)
{
  return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));
}
# 191 "/usr/include/string.h" 2 3 4
# 126 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2








# 1 "/usr/include/stdlib.h" 1 3 4
# 65 "/usr/include/stdlib.h" 3 4
# 1 "/usr/include/sys/wait.h" 1 3 4
# 79 "/usr/include/sys/wait.h" 3 4
typedef enum {
 P_ALL,
 P_PID,
 P_PGID
} idtype_t;
# 116 "/usr/include/sys/wait.h" 3 4
# 1 "/usr/include/sys/signal.h" 1 3 4
# 81 "/usr/include/sys/signal.h" 3 4
# 1 "/usr/include/machine/signal.h" 1 3 4
# 32 "/usr/include/machine/signal.h" 3 4
# 1 "/usr/include/i386/signal.h" 1 3 4
# 39 "/usr/include/i386/signal.h" 3 4
typedef int sig_atomic_t;
# 55 "/usr/include/i386/signal.h" 3 4
# 1 "/usr/include/i386/_structs.h" 1 3 4
# 56 "/usr/include/i386/signal.h" 2 3 4
# 33 "/usr/include/machine/signal.h" 2 3 4
# 82 "/usr/include/sys/signal.h" 2 3 4
# 148 "/usr/include/sys/signal.h" 3 4
# 1 "/usr/include/sys/_structs.h" 1 3 4
# 57 "/usr/include/sys/_structs.h" 3 4
# 1 "/usr/include/machine/_structs.h" 1 3 4
# 29 "/usr/include/machine/_structs.h" 3 4
# 1 "/usr/include/i386/_structs.h" 1 3 4
# 38 "/usr/include/i386/_structs.h" 3 4
# 1 "/usr/include/mach/i386/_structs.h" 1 3 4
# 43 "/usr/include/mach/i386/_structs.h" 3 4
struct __darwin_i386_thread_state
{
    unsigned int __eax;
    unsigned int __ebx;
    unsigned int __ecx;
    unsigned int __edx;
    unsigned int __edi;
    unsigned int __esi;
    unsigned int __ebp;
    unsigned int __esp;
    unsigned int __ss;
    unsigned int __eflags;
    unsigned int __eip;
    unsigned int __cs;
    unsigned int __ds;
    unsigned int __es;
    unsigned int __fs;
    unsigned int __gs;
};
# 89 "/usr/include/mach/i386/_structs.h" 3 4
struct __darwin_fp_control
{
    unsigned short __invalid :1,
        __denorm :1,
    __zdiv :1,
    __ovrfl :1,
    __undfl :1,
    __precis :1,
      :2,
    __pc :2,





    __rc :2,






             :1,
      :3;
};
typedef struct __darwin_fp_control __darwin_fp_control_t;
# 147 "/usr/include/mach/i386/_structs.h" 3 4
struct __darwin_fp_status
{
    unsigned short __invalid :1,
        __denorm :1,
    __zdiv :1,
    __ovrfl :1,
    __undfl :1,
    __precis :1,
    __stkflt :1,
    __errsumm :1,
    __c0 :1,
    __c1 :1,
    __c2 :1,
    __tos :3,
    __c3 :1,
    __busy :1;
};
typedef struct __darwin_fp_status __darwin_fp_status_t;
# 191 "/usr/include/mach/i386/_structs.h" 3 4
struct __darwin_mmst_reg
{
 char __mmst_reg[10];
 char __mmst_rsrv[6];
};
# 210 "/usr/include/mach/i386/_structs.h" 3 4
struct __darwin_xmm_reg
{
 char __xmm_reg[16];
};
# 232 "/usr/include/mach/i386/_structs.h" 3 4
struct __darwin_i386_float_state
{
 int __fpu_reserved[2];
 struct __darwin_fp_control __fpu_fcw;
 struct __darwin_fp_status __fpu_fsw;
 __uint8_t __fpu_ftw;
 __uint8_t __fpu_rsrv1;
 __uint16_t __fpu_fop;
 __uint32_t __fpu_ip;
 __uint16_t __fpu_cs;
 __uint16_t __fpu_rsrv2;
 __uint32_t __fpu_dp;
 __uint16_t __fpu_ds;
 __uint16_t __fpu_rsrv3;
 __uint32_t __fpu_mxcsr;
 __uint32_t __fpu_mxcsrmask;
 struct __darwin_mmst_reg __fpu_stmm0;
 struct __darwin_mmst_reg __fpu_stmm1;
 struct __darwin_mmst_reg __fpu_stmm2;
 struct __darwin_mmst_reg __fpu_stmm3;
 struct __darwin_mmst_reg __fpu_stmm4;
 struct __darwin_mmst_reg __fpu_stmm5;
 struct __darwin_mmst_reg __fpu_stmm6;
 struct __darwin_mmst_reg __fpu_stmm7;
 struct __darwin_xmm_reg __fpu_xmm0;
 struct __darwin_xmm_reg __fpu_xmm1;
 struct __darwin_xmm_reg __fpu_xmm2;
 struct __darwin_xmm_reg __fpu_xmm3;
 struct __darwin_xmm_reg __fpu_xmm4;
 struct __darwin_xmm_reg __fpu_xmm5;
 struct __darwin_xmm_reg __fpu_xmm6;
 struct __darwin_xmm_reg __fpu_xmm7;
 char __fpu_rsrv4[14*16];
 int __fpu_reserved1;
};


struct __darwin_i386_avx_state
{
 int __fpu_reserved[2];
 struct __darwin_fp_control __fpu_fcw;
 struct __darwin_fp_status __fpu_fsw;
 __uint8_t __fpu_ftw;
 __uint8_t __fpu_rsrv1;
 __uint16_t __fpu_fop;
 __uint32_t __fpu_ip;
 __uint16_t __fpu_cs;
 __uint16_t __fpu_rsrv2;
 __uint32_t __fpu_dp;
 __uint16_t __fpu_ds;
 __uint16_t __fpu_rsrv3;
 __uint32_t __fpu_mxcsr;
 __uint32_t __fpu_mxcsrmask;
 struct __darwin_mmst_reg __fpu_stmm0;
 struct __darwin_mmst_reg __fpu_stmm1;
 struct __darwin_mmst_reg __fpu_stmm2;
 struct __darwin_mmst_reg __fpu_stmm3;
 struct __darwin_mmst_reg __fpu_stmm4;
 struct __darwin_mmst_reg __fpu_stmm5;
 struct __darwin_mmst_reg __fpu_stmm6;
 struct __darwin_mmst_reg __fpu_stmm7;
 struct __darwin_xmm_reg __fpu_xmm0;
 struct __darwin_xmm_reg __fpu_xmm1;
 struct __darwin_xmm_reg __fpu_xmm2;
 struct __darwin_xmm_reg __fpu_xmm3;
 struct __darwin_xmm_reg __fpu_xmm4;
 struct __darwin_xmm_reg __fpu_xmm5;
 struct __darwin_xmm_reg __fpu_xmm6;
 struct __darwin_xmm_reg __fpu_xmm7;
 char __fpu_rsrv4[14*16];
 int __fpu_reserved1;
 char __avx_reserved1[64];
 struct __darwin_xmm_reg __fpu_ymmh0;
 struct __darwin_xmm_reg __fpu_ymmh1;
 struct __darwin_xmm_reg __fpu_ymmh2;
 struct __darwin_xmm_reg __fpu_ymmh3;
 struct __darwin_xmm_reg __fpu_ymmh4;
 struct __darwin_xmm_reg __fpu_ymmh5;
 struct __darwin_xmm_reg __fpu_ymmh6;
 struct __darwin_xmm_reg __fpu_ymmh7;
};
# 402 "/usr/include/mach/i386/_structs.h" 3 4
struct __darwin_i386_exception_state
{
 __uint16_t __trapno;
 __uint16_t __cpu;
 __uint32_t __err;
 __uint32_t __faultvaddr;
};
# 422 "/usr/include/mach/i386/_structs.h" 3 4
struct __darwin_x86_debug_state32
{
 unsigned int __dr0;
 unsigned int __dr1;
 unsigned int __dr2;
 unsigned int __dr3;
 unsigned int __dr4;
 unsigned int __dr5;
 unsigned int __dr6;
 unsigned int __dr7;
};
# 454 "/usr/include/mach/i386/_structs.h" 3 4
struct __darwin_x86_thread_state64
{
 __uint64_t __rax;
 __uint64_t __rbx;
 __uint64_t __rcx;
 __uint64_t __rdx;
 __uint64_t __rdi;
 __uint64_t __rsi;
 __uint64_t __rbp;
 __uint64_t __rsp;
 __uint64_t __r8;
 __uint64_t __r9;
 __uint64_t __r10;
 __uint64_t __r11;
 __uint64_t __r12;
 __uint64_t __r13;
 __uint64_t __r14;
 __uint64_t __r15;
 __uint64_t __rip;
 __uint64_t __rflags;
 __uint64_t __cs;
 __uint64_t __fs;
 __uint64_t __gs;
};
# 509 "/usr/include/mach/i386/_structs.h" 3 4
struct __darwin_x86_float_state64
{
 int __fpu_reserved[2];
 struct __darwin_fp_control __fpu_fcw;
 struct __darwin_fp_status __fpu_fsw;
 __uint8_t __fpu_ftw;
 __uint8_t __fpu_rsrv1;
 __uint16_t __fpu_fop;


 __uint32_t __fpu_ip;
 __uint16_t __fpu_cs;

 __uint16_t __fpu_rsrv2;


 __uint32_t __fpu_dp;
 __uint16_t __fpu_ds;

 __uint16_t __fpu_rsrv3;
 __uint32_t __fpu_mxcsr;
 __uint32_t __fpu_mxcsrmask;
 struct __darwin_mmst_reg __fpu_stmm0;
 struct __darwin_mmst_reg __fpu_stmm1;
 struct __darwin_mmst_reg __fpu_stmm2;
 struct __darwin_mmst_reg __fpu_stmm3;
 struct __darwin_mmst_reg __fpu_stmm4;
 struct __darwin_mmst_reg __fpu_stmm5;
 struct __darwin_mmst_reg __fpu_stmm6;
 struct __darwin_mmst_reg __fpu_stmm7;
 struct __darwin_xmm_reg __fpu_xmm0;
 struct __darwin_xmm_reg __fpu_xmm1;
 struct __darwin_xmm_reg __fpu_xmm2;
 struct __darwin_xmm_reg __fpu_xmm3;
 struct __darwin_xmm_reg __fpu_xmm4;
 struct __darwin_xmm_reg __fpu_xmm5;
 struct __darwin_xmm_reg __fpu_xmm6;
 struct __darwin_xmm_reg __fpu_xmm7;
 struct __darwin_xmm_reg __fpu_xmm8;
 struct __darwin_xmm_reg __fpu_xmm9;
 struct __darwin_xmm_reg __fpu_xmm10;
 struct __darwin_xmm_reg __fpu_xmm11;
 struct __darwin_xmm_reg __fpu_xmm12;
 struct __darwin_xmm_reg __fpu_xmm13;
 struct __darwin_xmm_reg __fpu_xmm14;
 struct __darwin_xmm_reg __fpu_xmm15;
 char __fpu_rsrv4[6*16];
 int __fpu_reserved1;
};


struct __darwin_x86_avx_state64
{
 int __fpu_reserved[2];
 struct __darwin_fp_control __fpu_fcw;
 struct __darwin_fp_status __fpu_fsw;
 __uint8_t __fpu_ftw;
 __uint8_t __fpu_rsrv1;
 __uint16_t __fpu_fop;


 __uint32_t __fpu_ip;
 __uint16_t __fpu_cs;

 __uint16_t __fpu_rsrv2;


 __uint32_t __fpu_dp;
 __uint16_t __fpu_ds;

 __uint16_t __fpu_rsrv3;
 __uint32_t __fpu_mxcsr;
 __uint32_t __fpu_mxcsrmask;
 struct __darwin_mmst_reg __fpu_stmm0;
 struct __darwin_mmst_reg __fpu_stmm1;
 struct __darwin_mmst_reg __fpu_stmm2;
 struct __darwin_mmst_reg __fpu_stmm3;
 struct __darwin_mmst_reg __fpu_stmm4;
 struct __darwin_mmst_reg __fpu_stmm5;
 struct __darwin_mmst_reg __fpu_stmm6;
 struct __darwin_mmst_reg __fpu_stmm7;
 struct __darwin_xmm_reg __fpu_xmm0;
 struct __darwin_xmm_reg __fpu_xmm1;
 struct __darwin_xmm_reg __fpu_xmm2;
 struct __darwin_xmm_reg __fpu_xmm3;
 struct __darwin_xmm_reg __fpu_xmm4;
 struct __darwin_xmm_reg __fpu_xmm5;
 struct __darwin_xmm_reg __fpu_xmm6;
 struct __darwin_xmm_reg __fpu_xmm7;
 struct __darwin_xmm_reg __fpu_xmm8;
 struct __darwin_xmm_reg __fpu_xmm9;
 struct __darwin_xmm_reg __fpu_xmm10;
 struct __darwin_xmm_reg __fpu_xmm11;
 struct __darwin_xmm_reg __fpu_xmm12;
 struct __darwin_xmm_reg __fpu_xmm13;
 struct __darwin_xmm_reg __fpu_xmm14;
 struct __darwin_xmm_reg __fpu_xmm15;
 char __fpu_rsrv4[6*16];
 int __fpu_reserved1;
 char __avx_reserved1[64];
 struct __darwin_xmm_reg __fpu_ymmh0;
 struct __darwin_xmm_reg __fpu_ymmh1;
 struct __darwin_xmm_reg __fpu_ymmh2;
 struct __darwin_xmm_reg __fpu_ymmh3;
 struct __darwin_xmm_reg __fpu_ymmh4;
 struct __darwin_xmm_reg __fpu_ymmh5;
 struct __darwin_xmm_reg __fpu_ymmh6;
 struct __darwin_xmm_reg __fpu_ymmh7;
 struct __darwin_xmm_reg __fpu_ymmh8;
 struct __darwin_xmm_reg __fpu_ymmh9;
 struct __darwin_xmm_reg __fpu_ymmh10;
 struct __darwin_xmm_reg __fpu_ymmh11;
 struct __darwin_xmm_reg __fpu_ymmh12;
 struct __darwin_xmm_reg __fpu_ymmh13;
 struct __darwin_xmm_reg __fpu_ymmh14;
 struct __darwin_xmm_reg __fpu_ymmh15;
};
# 751 "/usr/include/mach/i386/_structs.h" 3 4
struct __darwin_x86_exception_state64
{
    __uint16_t __trapno;
    __uint16_t __cpu;
    __uint32_t __err;
    __uint64_t __faultvaddr;
};
# 771 "/usr/include/mach/i386/_structs.h" 3 4
struct __darwin_x86_debug_state64
{
 __uint64_t __dr0;
 __uint64_t __dr1;
 __uint64_t __dr2;
 __uint64_t __dr3;
 __uint64_t __dr4;
 __uint64_t __dr5;
 __uint64_t __dr6;
 __uint64_t __dr7;
};
# 39 "/usr/include/i386/_structs.h" 2 3 4
# 48 "/usr/include/i386/_structs.h" 3 4
struct __darwin_mcontext32
{
 struct __darwin_i386_exception_state __es;
 struct __darwin_i386_thread_state __ss;
 struct __darwin_i386_float_state __fs;
};


struct __darwin_mcontext_avx32
{
 struct __darwin_i386_exception_state __es;
 struct __darwin_i386_thread_state __ss;
 struct __darwin_i386_avx_state __fs;
};
# 86 "/usr/include/i386/_structs.h" 3 4
struct __darwin_mcontext64
{
 struct __darwin_x86_exception_state64 __es;
 struct __darwin_x86_thread_state64 __ss;
 struct __darwin_x86_float_state64 __fs;
};


struct __darwin_mcontext_avx64
{
 struct __darwin_x86_exception_state64 __es;
 struct __darwin_x86_thread_state64 __ss;
 struct __darwin_x86_avx_state64 __fs;
};
# 127 "/usr/include/i386/_structs.h" 3 4
typedef struct __darwin_mcontext64 *mcontext_t;
# 30 "/usr/include/machine/_structs.h" 2 3 4
# 58 "/usr/include/sys/_structs.h" 2 3 4
# 75 "/usr/include/sys/_structs.h" 3 4
struct __darwin_sigaltstack
{
 void *ss_sp;
 __darwin_size_t ss_size;
 int ss_flags;
};
# 128 "/usr/include/sys/_structs.h" 3 4
struct __darwin_ucontext
{
 int uc_onstack;
 __darwin_sigset_t uc_sigmask;
 struct __darwin_sigaltstack uc_stack;
 struct __darwin_ucontext *uc_link;
 __darwin_size_t uc_mcsize;
 struct __darwin_mcontext64 *uc_mcontext;



};
# 218 "/usr/include/sys/_structs.h" 3 4
typedef struct __darwin_sigaltstack stack_t;
# 227 "/usr/include/sys/_structs.h" 3 4
typedef struct __darwin_ucontext ucontext_t;
# 149 "/usr/include/sys/signal.h" 2 3 4
# 162 "/usr/include/sys/signal.h" 3 4
typedef __darwin_sigset_t sigset_t;
# 175 "/usr/include/sys/signal.h" 3 4
union sigval {

 int sival_int;
 void *sival_ptr;
};





struct sigevent {
 int sigev_notify;
 int sigev_signo;
 union sigval sigev_value;
 void (*sigev_notify_function)(union sigval);
 pthread_attr_t *sigev_notify_attributes;
};


typedef struct __siginfo {
 int si_signo;
 int si_errno;
 int si_code;
 pid_t si_pid;
 uid_t si_uid;
 int si_status;
 void *si_addr;
 union sigval si_value;
 long si_band;
 unsigned long __pad[7];
} siginfo_t;
# 286 "/usr/include/sys/signal.h" 3 4
union __sigaction_u {
 void (*__sa_handler)(int);
 void (*__sa_sigaction)(int, struct __siginfo *,
         void *);
};


struct __sigaction {
 union __sigaction_u __sigaction_u;
 void (*sa_tramp)(void *, int, int, siginfo_t *, void *);
 sigset_t sa_mask;
 int sa_flags;
};




struct sigaction {
 union __sigaction_u __sigaction_u;
 sigset_t sa_mask;
 int sa_flags;
};
# 348 "/usr/include/sys/signal.h" 3 4
typedef void (*sig_t)(int);
# 365 "/usr/include/sys/signal.h" 3 4
struct sigvec {
 void (*sv_handler)(int);
 int sv_mask;
 int sv_flags;
};
# 384 "/usr/include/sys/signal.h" 3 4
struct sigstack {
 char *ss_sp;
 int ss_onstack;
};
# 407 "/usr/include/sys/signal.h" 3 4
void (*signal(int, void (*)(int)))(int);
# 117 "/usr/include/sys/wait.h" 2 3 4
# 1 "/usr/include/sys/resource.h" 1 3 4
# 77 "/usr/include/sys/resource.h" 3 4
# 1 "/usr/include/sys/_structs.h" 1 3 4
# 100 "/usr/include/sys/_structs.h" 3 4
struct timeval
{
 __darwin_time_t tv_sec;
 __darwin_suseconds_t tv_usec;
};
# 78 "/usr/include/sys/resource.h" 2 3 4
# 89 "/usr/include/sys/resource.h" 3 4
typedef __uint64_t rlim_t;
# 151 "/usr/include/sys/resource.h" 3 4
struct rusage {
 struct timeval ru_utime;
 struct timeval ru_stime;
# 162 "/usr/include/sys/resource.h" 3 4
 long ru_maxrss;

 long ru_ixrss;
 long ru_idrss;
 long ru_isrss;
 long ru_minflt;
 long ru_majflt;
 long ru_nswap;
 long ru_inblock;
 long ru_oublock;
 long ru_msgsnd;
 long ru_msgrcv;
 long ru_nsignals;
 long ru_nvcsw;
 long ru_nivcsw;


};
# 222 "/usr/include/sys/resource.h" 3 4
struct rlimit {
 rlim_t rlim_cur;
 rlim_t rlim_max;
};
# 245 "/usr/include/sys/resource.h" 3 4
int getpriority(int, id_t);

int getiopolicy_np(int, int) __attribute__((visibility("default")));

int getrlimit(int, struct rlimit *) __asm("_" "getrlimit" );
int getrusage(int, struct rusage *);
int setpriority(int, id_t, int);

int setiopolicy_np(int, int, int) __attribute__((visibility("default")));

int setrlimit(int, const struct rlimit *) __asm("_" "setrlimit" );
# 118 "/usr/include/sys/wait.h" 2 3 4
# 201 "/usr/include/sys/wait.h" 3 4
union wait {
 int w_status;



 struct {

  unsigned int w_Termsig:7,
    w_Coredump:1,
    w_Retcode:8,
    w_Filler:16;







 } w_T;





 struct {

  unsigned int w_Stopval:8,
    w_Stopsig:8,
    w_Filler:16;






 } w_S;
};
# 255 "/usr/include/sys/wait.h" 3 4
pid_t wait(int *) __asm("_" "wait" );
pid_t waitpid(pid_t, int *, int) __asm("_" "waitpid" );

int waitid(idtype_t, id_t, siginfo_t *, int) __asm("_" "waitid" );


pid_t wait3(int *, int, struct rusage *);
pid_t wait4(pid_t, int *, int, struct rusage *);
# 66 "/usr/include/stdlib.h" 2 3 4

# 1 "/usr/include/alloca.h" 1 3 4
# 36 "/usr/include/alloca.h" 3 4
void *alloca(size_t);
# 68 "/usr/include/stdlib.h" 2 3 4
# 81 "/usr/include/stdlib.h" 3 4
typedef __darwin_ct_rune_t ct_rune_t;




typedef __darwin_rune_t rune_t;
# 97 "/usr/include/stdlib.h" 3 4
typedef struct {
 int quot;
 int rem;
} div_t;

typedef struct {
 long quot;
 long rem;
} ldiv_t;


typedef struct {
 long long quot;
 long long rem;
} lldiv_t;
# 134 "/usr/include/stdlib.h" 3 4
extern int __mb_cur_max;
# 145 "/usr/include/stdlib.h" 3 4
void abort(void) __attribute__((__noreturn__));
int abs(int) __attribute__((__const__));
int atexit(void (*)(void));
double atof(const char *);
int atoi(const char *);
long atol(const char *);

long long
  atoll(const char *);

void *bsearch(const void *, const void *, size_t,
     size_t, int (*)(const void *, const void *));
void *calloc(size_t, size_t);
div_t div(int, int) __attribute__((__const__));
void exit(int) __attribute__((__noreturn__));
void free(void *);
char *getenv(const char *);
long labs(long) __attribute__((__const__));
ldiv_t ldiv(long, long) __attribute__((__const__));

long long
  llabs(long long);
lldiv_t lldiv(long long, long long);

void *malloc(size_t);
int mblen(const char *, size_t);
size_t mbstowcs(wchar_t * restrict , const char * restrict, size_t);
int mbtowc(wchar_t * restrict, const char * restrict, size_t);
int posix_memalign(void **, size_t, size_t) __attribute__((visibility("default")));
void qsort(void *, size_t, size_t,
     int (*)(const void *, const void *));
int rand(void);
void *realloc(void *, size_t);
void srand(unsigned);
double strtod(const char *, char **) __asm("_" "strtod" );
float strtof(const char *, char **) __asm("_" "strtof" );
long strtol(const char *, char **, int);
long double
  strtold(const char *, char **) ;

long long
  strtoll(const char *, char **, int);

unsigned long
  strtoul(const char *, char **, int);

unsigned long long
  strtoull(const char *, char **, int);

int system(const char *) __asm("_" "system" );
size_t wcstombs(char * restrict, const wchar_t * restrict, size_t);
int wctomb(char *, wchar_t);


void _Exit(int) __attribute__((__noreturn__));
long a64l(const char *);
double drand48(void);
char *ecvt(double, int, int *restrict, int *restrict);
double erand48(unsigned short[3]);
char *fcvt(double, int, int *restrict, int *restrict);
char *gcvt(double, int, char *);
int getsubopt(char **, char * const *, char **);
int grantpt(int);

char *initstate(unsigned, char *, size_t);



long jrand48(unsigned short[3]);
char *l64a(long);
void lcong48(unsigned short[7]);
long lrand48(void);
char *mktemp(char *);
int mkstemp(char *);
long mrand48(void);
long nrand48(unsigned short[3]);
int posix_openpt(int);
char *ptsname(int);
int putenv(char *) __asm("_" "putenv" );
long random(void);
int rand_r(unsigned *);

char *realpath(const char * restrict, char * restrict) __asm("_" "realpath" "$DARWIN_EXTSN");



unsigned short
 *seed48(unsigned short[3]);
int setenv(const char *, const char *, int) __asm("_" "setenv" );

void setkey(const char *) __asm("_" "setkey" );



char *setstate(const char *);
void srand48(long);

void srandom(unsigned);



int unlockpt(int);

int unsetenv(const char *) __asm("_" "unsetenv" );
# 267 "/usr/include/stdlib.h" 3 4
u_int32_t
  arc4random(void);
void arc4random_addrandom(unsigned char * , int );
void arc4random_buf(void * , size_t ) __attribute__((visibility("default")));
void arc4random_stir(void);
u_int32_t
  arc4random_uniform(u_int32_t ) __attribute__((visibility("default")));

int atexit_b(void (^)(void)) __attribute__((visibility("default")));
void *bsearch_b(const void *, const void *, size_t,
     size_t, int (^)(const void *, const void *)) __attribute__((visibility("default")));



char *cgetcap(char *, const char *, int);
int cgetclose(void);
int cgetent(char **, char **, const char *);
int cgetfirst(char **, char **);
int cgetmatch(const char *, const char *);
int cgetnext(char **, char **);
int cgetnum(char *, const char *, long *);
int cgetset(const char *);
int cgetstr(char *, const char *, char **);
int cgetustr(char *, const char *, char **);

int daemon(int, int) __asm("_" "daemon" "$1050") __attribute__((deprecated,visibility("default")));
char *devname(dev_t, mode_t);
char *devname_r(dev_t, mode_t, char *buf, int len);
char *getbsize(int *, long *);
int getloadavg(double [], int);
const char
 *getprogname(void);

int heapsort(void *, size_t, size_t,
     int (*)(const void *, const void *));

int heapsort_b(void *, size_t, size_t,
     int (^)(const void *, const void *)) __attribute__((visibility("default")));

int mergesort(void *, size_t, size_t,
     int (*)(const void *, const void *));

int mergesort_b(void *, size_t, size_t,
     int (^)(const void *, const void *)) __attribute__((visibility("default")));

void psort(void *, size_t, size_t,
     int (*)(const void *, const void *)) __attribute__((visibility("default")));

void psort_b(void *, size_t, size_t,
     int (^)(const void *, const void *)) __attribute__((visibility("default")));

void psort_r(void *, size_t, size_t, void *,
     int (*)(void *, const void *, const void *)) __attribute__((visibility("default")));

void qsort_b(void *, size_t, size_t,
     int (^)(const void *, const void *)) __attribute__((visibility("default")));

void qsort_r(void *, size_t, size_t, void *,
     int (*)(void *, const void *, const void *));
int radixsort(const unsigned char **, int, const unsigned char *,
     unsigned);
void setprogname(const char *);
int sradixsort(const unsigned char **, int, const unsigned char *,
     unsigned);
void sranddev(void);
void srandomdev(void);
void *reallocf(void *, size_t);

long long
  strtoq(const char *, char **, int);
unsigned long long
  strtouq(const char *, char **, int);

extern char *suboptarg;
void *valloc(size_t);
# 135 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2
# 157 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h"
# 1 "/usr/include/unistd.h" 1 3 4
# 72 "/usr/include/unistd.h" 3 4
# 1 "/usr/include/sys/unistd.h" 1 3 4
# 138 "/usr/include/sys/unistd.h" 3 4
struct accessx_descriptor {
 unsigned int ad_name_offset;
 int ad_flags;
 int ad_pad[2];
};
# 73 "/usr/include/unistd.h" 2 3 4
# 469 "/usr/include/unistd.h" 3 4
void _exit(int) __attribute__((__noreturn__));
int access(const char *, int);
unsigned int
  alarm(unsigned int);
int chdir(const char *);
int chown(const char *, uid_t, gid_t);

int close(int) __asm("_" "close" );

int dup(int);
int dup2(int, int);
int execl(const char *, const char *, ...);
int execle(const char *, const char *, ...);
int execlp(const char *, const char *, ...);
int execv(const char *, char * const *);
int execve(const char *, char * const *, char * const *);
int execvp(const char *, char * const *);
pid_t fork(void);
long fpathconf(int, int);
char *getcwd(char *, size_t);
gid_t getegid(void);
uid_t geteuid(void);
gid_t getgid(void);



int getgroups(int, gid_t []);

char *getlogin(void);
pid_t getpgrp(void);
pid_t getpid(void);
pid_t getppid(void);
uid_t getuid(void);
int isatty(int);
int link(const char *, const char *);
off_t lseek(int, off_t, int);
long pathconf(const char *, int);

int pause(void) __asm("_" "pause" );

int pipe(int [2]);

ssize_t read(int, void *, size_t) __asm("_" "read" );

int rmdir(const char *);
int setgid(gid_t);
int setpgid(pid_t, pid_t);
pid_t setsid(void);
int setuid(uid_t);

unsigned int
  sleep(unsigned int) __asm("_" "sleep" );

long sysconf(int);
pid_t tcgetpgrp(int);
int tcsetpgrp(int, pid_t);
char *ttyname(int);


int ttyname_r(int, char *, size_t) __asm("_" "ttyname_r" );




int unlink(const char *);

ssize_t write(int, const void *, size_t) __asm("_" "write" );
# 546 "/usr/include/unistd.h" 3 4
size_t confstr(int, char *, size_t) __asm("_" "confstr" );

int getopt(int, char * const [], const char *) __asm("_" "getopt" );

extern char *optarg;
extern int optind, opterr, optopt;
# 575 "/usr/include/unistd.h" 3 4
void *brk(const void *);
int chroot(const char *) ;


char *crypt(const char *, const char *);






void encrypt(char *, int) __asm("_" "encrypt" );



int fchdir(int);
long gethostid(void);
pid_t getpgid(pid_t);
pid_t getsid(pid_t);



int getdtablesize(void) ;
int getpagesize(void) __attribute__((__const__)) ;
char *getpass(const char *) ;




char *getwd(char *) ;


int lchown(const char *, uid_t, gid_t) __asm("_" "lchown" );

int lockf(int, int, off_t) __asm("_" "lockf" );

int nice(int) __asm("_" "nice" );

ssize_t pread(int, void *, size_t, off_t) __asm("_" "pread" );

ssize_t pwrite(int, const void *, size_t, off_t) __asm("_" "pwrite" );





void *sbrk(int);



pid_t setpgrp(void) __asm("_" "setpgrp" );




int setregid(gid_t, gid_t) __asm("_" "setregid" );

int setreuid(uid_t, uid_t) __asm("_" "setreuid" );

void swab(const void * restrict, void * restrict, ssize_t);
void sync(void);
int truncate(const char *, off_t);
useconds_t ualarm(useconds_t, useconds_t);
int usleep(useconds_t) __asm("_" "usleep" );
pid_t vfork(void);


int fsync(int) __asm("_" "fsync" );

int ftruncate(int, off_t);
int getlogin_r(char *, size_t);
# 658 "/usr/include/unistd.h" 3 4
int fchown(int, uid_t, gid_t);
int gethostname(char *, size_t);
ssize_t readlink(const char * restrict, char * restrict, size_t);
int setegid(gid_t);
int seteuid(uid_t);
int symlink(const char *, const char *);
# 672 "/usr/include/unistd.h" 3 4
# 1 "/usr/include/sys/select.h" 1 3 4
# 78 "/usr/include/sys/select.h" 3 4
# 1 "/usr/include/sys/_structs.h" 1 3 4
# 88 "/usr/include/sys/_structs.h" 3 4
struct timespec
{
 __darwin_time_t tv_sec;
 long tv_nsec;
};
# 79 "/usr/include/sys/select.h" 2 3 4
# 137 "/usr/include/sys/select.h" 3 4
int pselect(int, fd_set * restrict, fd_set * restrict,
  fd_set * restrict, const struct timespec * restrict,
  const sigset_t * restrict)




  __asm("_" "pselect" "$1050")




  ;



# 1 "/usr/include/sys/_select.h" 1 3 4
# 39 "/usr/include/sys/_select.h" 3 4
int select(int, fd_set * restrict, fd_set * restrict,
  fd_set * restrict, struct timeval * restrict)




  __asm("_" "select" "$1050")




  ;
# 153 "/usr/include/sys/select.h" 2 3 4
# 673 "/usr/include/unistd.h" 2 3 4
# 686 "/usr/include/unistd.h" 3 4
typedef __darwin_uuid_t uuid_t;



void _Exit(int) __attribute__((__noreturn__));
int accessx_np(const struct accessx_descriptor *, size_t, int *, uid_t);
int acct(const char *);
int add_profil(char *, size_t, unsigned long, unsigned int);
void endusershell(void);
int execvP(const char *, const char *, char * const *);
char *fflagstostr(unsigned long);
int getdomainname(char *, int);
int getgrouplist(const char *, int, int *, int *);
int gethostuuid(uuid_t, const struct timespec *) __attribute__((visibility("default")));
mode_t getmode(const void *, mode_t);
int getpeereid(int, uid_t *, gid_t *);
int getsgroups_np(int *, uuid_t);
char *getusershell(void);
int getwgroups_np(int *, uuid_t);
int initgroups(const char *, int);
int iruserok(unsigned long, int, const char *, const char *);
int iruserok_sa(const void *, int, int, const char *, const char *);
int issetugid(void);
char *mkdtemp(char *);
int mknod(const char *, mode_t, dev_t);
int mkstemp(char *);
int mkstemps(char *, int);
char *mktemp(char *);
int nfssvc(int, void *);
int profil(char *, size_t, unsigned long, unsigned int);
int pthread_setugid_np(uid_t, gid_t);
int pthread_getugid_np( uid_t *, gid_t *);
int rcmd(char **, int, const char *, const char *, const char *, int *);
int rcmd_af(char **, int, const char *, const char *, const char *, int *,
  int);
int reboot(int);
int revoke(const char *);
int rresvport(int *);
int rresvport_af(int *, int);
int ruserok(const char *, int, const char *, const char *);
int setdomainname(const char *, int);
int setgroups(int, const gid_t *);
void sethostid(long);
int sethostname(const char *, int);

void setkey(const char *) __asm("_" "setkey" );



int setlogin(const char *);
void *setmode(const char *) __asm("_" "setmode" );
int setrgid(gid_t);
int setruid(uid_t);
int setsgroups_np(int, const uuid_t);
void setusershell(void);
int setwgroups_np(int, const uuid_t);
int strtofflags(char **, unsigned long *, unsigned long *);
int swapon(const char *);
int syscall(int, ...);
int ttyslot(void);
int undelete(const char *);
int unwhiteout(const char *);
void *valloc(size_t);

extern char *suboptarg;
int getsubopt(char **, char * const *, char **);



int fgetattrlist(int,void*,void*,size_t,unsigned int) __attribute__((visibility("default")));
int fsetattrlist(int,void*,void*,size_t,unsigned int) __attribute__((visibility("default")));
int getattrlist(const char*,void*,void*,size_t,unsigned int) __asm("_" "getattrlist" );
int setattrlist(const char*,void*,void*,size_t,unsigned int) __asm("_" "setattrlist" );
int exchangedata(const char*,const char*,unsigned int);
int getdirentriesattr(int,void*,void*,size_t,unsigned int*,unsigned int*,unsigned int*,unsigned int);
# 772 "/usr/include/unistd.h" 3 4
struct fssearchblock;
struct searchstate;

int searchfs(const char *, struct fssearchblock *, unsigned long *, unsigned int, unsigned int, struct searchstate *);
int fsctl(const char *,unsigned long,void*,unsigned int);
int ffsctl(int,unsigned long,void*,unsigned int) __attribute__((visibility("default")));

extern int optreset;
# 158 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2
# 167 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h"
# 1 "/Users/ddunbar/rt/10907846/clang-211.10.1-Slate/Developer/usr/bin/../lib/clang/3.0/include/limits.h" 1 3 4
# 38 "/Users/ddunbar/rt/10907846/clang-211.10.1-Slate/Developer/usr/bin/../lib/clang/3.0/include/limits.h" 3 4
# 1 "/usr/include/limits.h" 1 3 4
# 64 "/usr/include/limits.h" 3 4
# 1 "/usr/include/machine/limits.h" 1 3 4





# 1 "/usr/include/i386/limits.h" 1 3 4
# 40 "/usr/include/i386/limits.h" 3 4
# 1 "/usr/include/i386/_limits.h" 1 3 4
# 41 "/usr/include/i386/limits.h" 2 3 4
# 7 "/usr/include/machine/limits.h" 2 3 4
# 65 "/usr/include/limits.h" 2 3 4
# 1 "/usr/include/sys/syslimits.h" 1 3 4
# 66 "/usr/include/limits.h" 2 3 4
# 39 "/Users/ddunbar/rt/10907846/clang-211.10.1-Slate/Developer/usr/bin/../lib/clang/3.0/include/limits.h" 2 3 4
# 168 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2



# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/hwint.h" 1
# 172 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2
# 207 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h"
# 1 "/usr/include/time.h" 1 3 4
# 69 "/usr/include/time.h" 3 4
# 1 "/usr/include/_structs.h" 1 3 4
# 24 "/usr/include/_structs.h" 3 4
# 1 "/usr/include/sys/_structs.h" 1 3 4
# 25 "/usr/include/_structs.h" 2 3 4
# 70 "/usr/include/time.h" 2 3 4
# 90 "/usr/include/time.h" 3 4
struct tm {
 int tm_sec;
 int tm_min;
 int tm_hour;
 int tm_mday;
 int tm_mon;
 int tm_year;
 int tm_wday;
 int tm_yday;
 int tm_isdst;
 long tm_gmtoff;
 char *tm_zone;
};
# 113 "/usr/include/time.h" 3 4
extern char *tzname[];


extern int getdate_err;

extern long timezone __asm("_" "timezone" );

extern int daylight;


char *asctime(const struct tm *);
clock_t clock(void) __asm("_" "clock" );
char *ctime(const time_t *);
double difftime(time_t, time_t);
struct tm *getdate(const char *);
struct tm *gmtime(const time_t *);
struct tm *localtime(const time_t *);
time_t mktime(struct tm *) __asm("_" "mktime" );
size_t strftime(char * restrict, size_t, const char * restrict, const struct tm * restrict) __asm("_" "strftime" );
char *strptime(const char * restrict, const char * restrict, struct tm * restrict) __asm("_" "strptime" );
time_t time(time_t *);


void tzset(void);



char *asctime_r(const struct tm * restrict, char * restrict);
char *ctime_r(const time_t *, char *);
struct tm *gmtime_r(const time_t * restrict, struct tm * restrict);
struct tm *localtime_r(const time_t * restrict, struct tm * restrict);


time_t posix2time(time_t);



void tzsetwall(void);
time_t time2posix(time_t);
time_t timelocal(struct tm * const);
time_t timegm(struct tm * const);



int nanosleep(const struct timespec *, struct timespec *) __asm("_" "nanosleep" );
# 208 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2





# 1 "/usr/include/fcntl.h" 1 3 4
# 23 "/usr/include/fcntl.h" 3 4
# 1 "/usr/include/sys/fcntl.h" 1 3 4
# 339 "/usr/include/sys/fcntl.h" 3 4
struct flock {
 off_t l_start;
 off_t l_len;
 pid_t l_pid;
 short l_type;
 short l_whence;
};
# 355 "/usr/include/sys/fcntl.h" 3 4
struct radvisory {
       off_t ra_offset;
       int ra_count;
};
# 367 "/usr/include/sys/fcntl.h" 3 4
typedef struct fsignatures {
 off_t fs_file_start;
 void *fs_blob_start;
 size_t fs_blob_size;
} fsignatures_t;
# 381 "/usr/include/sys/fcntl.h" 3 4
typedef struct fstore {
 unsigned int fst_flags;
 int fst_posmode;
 off_t fst_offset;
 off_t fst_length;
 off_t fst_bytesalloc;
} fstore_t;



typedef struct fbootstraptransfer {
  off_t fbt_offset;
  size_t fbt_length;
  void *fbt_buffer;
} fbootstraptransfer_t;
# 419 "/usr/include/sys/fcntl.h" 3 4
#pragma pack(4)

struct log2phys {
 unsigned int l2p_flags;
 off_t l2p_contigbytes;


 off_t l2p_devoffset;


};

#pragma pack()
# 442 "/usr/include/sys/fcntl.h" 3 4
struct _filesec;
typedef struct _filesec *filesec_t;


typedef enum {
 FILESEC_OWNER = 1,
 FILESEC_GROUP = 2,
 FILESEC_UUID = 3,
 FILESEC_MODE = 4,
 FILESEC_ACL = 5,
 FILESEC_GRPUUID = 6,


 FILESEC_ACL_RAW = 100,
 FILESEC_ACL_ALLOCSIZE = 101
} filesec_property_t;






int open(const char *, int, ...) __asm("_" "open" );
int creat(const char *, mode_t) __asm("_" "creat" );
int fcntl(int, int, ...) __asm("_" "fcntl" );


int openx_np(const char *, int, filesec_t);
int flock(int, int);
filesec_t filesec_init(void);
filesec_t filesec_dup(filesec_t);
void filesec_free(filesec_t);
int filesec_get_property(filesec_t, filesec_property_t, void *);
int filesec_query_property(filesec_t, filesec_property_t, int *);
int filesec_set_property(filesec_t, filesec_property_t, const void *);
int filesec_unset_property(filesec_t, filesec_property_t) __attribute__((visibility("default")));
# 24 "/usr/include/fcntl.h" 2 3 4
# 214 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2
# 381 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h"
# 1 "/usr/include/sys/stat.h" 1 3 4
# 79 "/usr/include/sys/stat.h" 3 4
# 1 "/usr/include/sys/_structs.h" 1 3 4
# 80 "/usr/include/sys/stat.h" 2 3 4
# 153 "/usr/include/sys/stat.h" 3 4
struct ostat {
 __uint16_t st_dev;
 ino_t st_ino;
 mode_t st_mode;
 nlink_t st_nlink;
 __uint16_t st_uid;
 __uint16_t st_gid;
 __uint16_t st_rdev;
 __int32_t st_size;
 struct timespec st_atimespec;
 struct timespec st_mtimespec;
 struct timespec st_ctimespec;
 __int32_t st_blksize;
 __int32_t st_blocks;
 __uint32_t st_flags;
 __uint32_t st_gen;
};
# 225 "/usr/include/sys/stat.h" 3 4
struct stat { dev_t st_dev; mode_t st_mode; nlink_t st_nlink; __darwin_ino64_t st_ino; uid_t st_uid; gid_t st_gid; dev_t st_rdev; struct timespec st_atimespec; struct timespec st_mtimespec; struct timespec st_ctimespec; struct timespec st_birthtimespec; off_t st_size; blkcnt_t st_blocks; blksize_t st_blksize; __uint32_t st_flags; __uint32_t st_gen; __int32_t st_lspare; __int64_t st_qspare[2]; };
# 264 "/usr/include/sys/stat.h" 3 4
struct stat64 { dev_t st_dev; mode_t st_mode; nlink_t st_nlink; __darwin_ino64_t st_ino; uid_t st_uid; gid_t st_gid; dev_t st_rdev; struct timespec st_atimespec; struct timespec st_mtimespec; struct timespec st_ctimespec; struct timespec st_birthtimespec; off_t st_size; blkcnt_t st_blocks; blksize_t st_blksize; __uint32_t st_flags; __uint32_t st_gen; __int32_t st_lspare; __int64_t st_qspare[2]; };
# 430 "/usr/include/sys/stat.h" 3 4
int chmod(const char *, mode_t) __asm("_" "chmod" );
int fchmod(int, mode_t) __asm("_" "fchmod" );
int fstat(int, struct stat *) __asm("_" "fstat" "$INODE64");
int lstat(const char *, struct stat *) __asm("_" "lstat" "$INODE64");
int mkdir(const char *, mode_t);
int mkfifo(const char *, mode_t);
int stat(const char *, struct stat *) __asm("_" "stat" "$INODE64");
int mknod(const char *, mode_t, dev_t);
mode_t umask(mode_t);







int chflags(const char *, __uint32_t);
int chmodx_np(const char *, filesec_t);
int fchflags(int, __uint32_t);
int fchmodx_np(int, filesec_t);
int fstatx_np(int, struct stat *, filesec_t) __asm("_" "fstatx_np" "$INODE64");
int lchflags(const char *, __uint32_t) __attribute__((visibility("default")));
int lchmod(const char *, mode_t) __attribute__((visibility("default")));
int lstatx_np(const char *, struct stat *, filesec_t) __asm("_" "lstatx_np" "$INODE64");
int mkdirx_np(const char *, filesec_t);
int mkfifox_np(const char *, filesec_t);
int statx_np(const char *, struct stat *, filesec_t) __asm("_" "statx_np" "$INODE64");
int umaskx_np(filesec_t) __attribute__((deprecated,visibility("default")));



int fstatx64_np(int, struct stat64 *, filesec_t) __attribute__((deprecated,visibility("default")));
int lstatx64_np(const char *, struct stat64 *, filesec_t) __attribute__((deprecated,visibility("default")));
int statx64_np(const char *, struct stat64 *, filesec_t) __attribute__((deprecated,visibility("default")));
int fstat64(int, struct stat64 *) __attribute__((deprecated,visibility("default")));
int lstat64(const char *, struct stat64 *) __attribute__((deprecated,visibility("default")));
int stat64(const char *, struct stat64 *) __attribute__((deprecated,visibility("default")));
# 382 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2
# 493 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h"
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/libiberty.h" 1
# 46 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/libiberty.h"
# 1 "/Users/ddunbar/rt/10907846/clang-211.10.1-Slate/Developer/usr/bin/../lib/clang/3.0/include/stddef.h" 1 3 4
# 47 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/libiberty.h" 2
# 59 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/libiberty.h"
extern char **buildargv (const char *) __attribute__ ((__malloc__));



extern void freeargv (char **);




extern char **dupargv (char **) __attribute__ ((__malloc__));
# 91 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/libiberty.h"
extern const char *lbasename (const char *);





extern char *concat (const char *, ...) __attribute__ ((__malloc__));
# 106 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/libiberty.h"
extern char *reconcat (char *, const char *, ...) __attribute__ ((__malloc__));





extern unsigned long concat_length (const char *, ...);






extern char *concat_copy (char *, const char *, ...);






extern char *concat_copy2 (const char *, ...);



extern char *libiberty_concat_ptr;
# 142 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/libiberty.h"
extern int fdmatch (int fd1, int fd2);




extern char * getpwd (void);



extern long get_run_time (void);



extern char *choose_temp_base (void) __attribute__ ((__malloc__));



extern char *make_temp_file (const char *) __attribute__ ((__malloc__));



extern const char *spaces (int count);




extern int errno_max (void);




extern const char *strerrno (int);



extern int strtoerrno (const char *);



extern char *xstrerror (int);




extern int signo_max (void);
# 198 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/libiberty.h"
extern const char *strsigno (int);



extern int strtosigno (const char *);



extern int xatexit (void (*fn) (void));



extern void xexit (int status) __attribute__ ((__noreturn__));



extern void xmalloc_set_program_name (const char *);


extern void xmalloc_failed (size_t) __attribute__ ((__noreturn__));





extern void * xmalloc (size_t) __attribute__ ((__malloc__));





extern void * xrealloc (void *, size_t);




extern void * xcalloc (size_t, size_t) __attribute__ ((__malloc__));



extern char *xstrdup (const char *) __attribute__ ((__malloc__));



extern void * xmemdup (const void *, size_t, size_t) __attribute__ ((__malloc__));


extern void specqsort (void *, int, int, int (*)() );





extern const char _hex_value[256];
extern void hex_init (void);
# 268 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/libiberty.h"
extern int pexecute (const char *, char * const *, const char *, const char *, char **, char **, int);




extern int pwait (int, int *, int);




extern int asprintf (char **, const char *, ...) __attribute__ ((__format__ (__printf__, 2, 3)));




extern int vasprintf (char **, const char *, va_list)
  __attribute__ ((__format__ (__printf__, 2, 0)));
# 494 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/symcat.h" 1
# 495 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/system.h" 2
# 79 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h" 1
# 25 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
struct function;


# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/machmode.h" 1
# 29 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/machmode.h"
enum machine_mode {

# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/machmode.def" 1
# 74 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/machmode.def"
VOIDmode,

BImode,
QImode,
HImode,
SImode,
DImode,
TImode,
OImode,




PQImode,
PHImode,
PSImode,
PDImode,

QFmode,
HFmode,
TQFmode,
SFmode,
DFmode,
XFmode,
TFmode,


QCmode,
HCmode,
SCmode,
DCmode,
XCmode,
TCmode,

CQImode,
CHImode,
CSImode,
CDImode,
CTImode,
COImode,







V2QImode,
V2HImode,
V2SImode,
V2DImode,

V4QImode,
V4HImode,
V4SImode,
V4DImode,

V8QImode,
V8HImode,
V8SImode,
V8DImode,

V16QImode,

V2SFmode,
V2DFmode,

V4SFmode,
V4DFmode,

V8SFmode,
V8DFmode,
V16SFmode,



BLKmode,
# 159 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/machmode.def"
CCmode,


CCGCmode, CCGOCmode, CCNOmode, CCZmode, CCFPmode, CCFPUmode,
# 31 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/machmode.h" 2
MAX_MACHINE_MODE };
# 41 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/machmode.h"
extern const char * const mode_name[(int) MAX_MACHINE_MODE];


enum mode_class { MODE_RANDOM, MODE_INT, MODE_FLOAT, MODE_PARTIAL_INT, MODE_CC,
    MODE_COMPLEX_INT, MODE_COMPLEX_FLOAT,
    MODE_VECTOR_INT, MODE_VECTOR_FLOAT,
    MAX_MODE_CLASS};




extern const enum mode_class mode_class[(int) MAX_MACHINE_MODE];
# 80 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/machmode.h"
extern const unsigned char mode_size[(int) MAX_MACHINE_MODE];




extern const unsigned char mode_unit_size[(int) MAX_MACHINE_MODE];
# 96 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/machmode.h"
extern const unsigned short mode_bitsize[(int) MAX_MACHINE_MODE];
# 106 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/machmode.h"
extern const unsigned long long mode_mask_array[(int) MAX_MACHINE_MODE];



extern const enum machine_mode inner_mode_array[(int) MAX_MACHINE_MODE];
# 123 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/machmode.h"
extern const unsigned char mode_wider_mode[(int) MAX_MACHINE_MODE];






extern enum machine_mode mode_for_size (unsigned int, enum mode_class, int);




extern enum machine_mode smallest_mode_for_size
    (unsigned int, enum mode_class);





extern enum machine_mode int_mode_for_mode (enum machine_mode);



extern enum machine_mode get_best_mode (int, int, unsigned int, enum machine_mode, int);




extern unsigned get_mode_alignment (enum machine_mode);





extern const enum machine_mode class_narrowest_mode[(int) MAX_MODE_CLASS];





extern enum machine_mode byte_mode;
extern enum machine_mode word_mode;
extern enum machine_mode ptr_mode;
# 28 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h" 2
# 41 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
enum rtx_code {



# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def" 1
# 70 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
UNKNOWN ,



NIL ,




INCLUDE ,






EXPR_LIST ,



INSN_LIST ,
# 129 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
MATCH_OPERAND ,






MATCH_SCRATCH ,




MATCH_DUP ,







MATCH_OPERATOR ,
# 158 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
MATCH_PARALLEL ,




MATCH_OP_DUP ,




MATCH_PAR_DUP ,




MATCH_INSN ,
# 192 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
DEFINE_INSN ,







DEFINE_PEEPHOLE ,
# 211 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
DEFINE_SPLIT ,
# 239 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
DEFINE_INSN_AND_SPLIT ,



DEFINE_PEEPHOLE2 ,



DEFINE_COMBINE ,
# 260 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
DEFINE_EXPAND ,
# 276 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
DEFINE_DELAY ,
# 317 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
DEFINE_FUNCTION_UNIT ,


DEFINE_ASM_ATTRIBUTES ,
# 333 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
DEFINE_COND_EXEC ,





SEQUENCE ,


ADDRESS ,
# 353 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
DEFINE_ATTR ,


ATTR ,







SET_ATTR ,
# 379 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
SET_ATTR_ALTERNATIVE ,




EQ_ATTR ,
# 394 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
ATTR_FLAG ,
# 407 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
INSN ,



JUMP_INSN ,






CALL_INSN ,


BARRIER ,
# 430 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
CODE_LABEL ,






NOTE ,
# 450 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
COND_EXEC ,


PARALLEL ,







ASM_INPUT ,
# 475 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
ASM_OPERANDS ,
# 486 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
UNSPEC ,


UNSPEC_VOLATILE ,



ADDR_VEC ,
# 518 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
ADDR_DIFF_VEC ,
# 529 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
PREFETCH ,
# 541 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
SET ,




USE ,




CLOBBER ,





CALL ,



RETURN ,





TRAP_IF ,




RESX ,






CONST_INT ,






CONST_DOUBLE ,


CONST_VECTOR ,


CONST_STRING ,





CONST ,



PC ,


VALUE ,
# 614 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
REG ,






SCRATCH ,
# 631 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
SUBREG ,
# 644 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
STRICT_LOW_PART ,





CONCAT ,




MEM ,





LABEL_REF ,





SYMBOL_REF ,






CC0 ,
# 683 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
ADDRESSOF ,
# 701 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
QUEUED ,
# 713 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
IF_THEN_ELSE ,
# 722 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
COND ,


COMPARE ,


PLUS ,


MINUS ,


NEG ,

MULT ,


DIV ,

MOD ,


UDIV ,
UMOD ,


AND ,

IOR ,

XOR ,

NOT ,




ASHIFT ,
ROTATE ,
ASHIFTRT ,
LSHIFTRT ,
ROTATERT ,





SMIN ,
SMAX ,
UMIN ,
UMAX ,
# 781 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
PRE_DEC ,
PRE_INC ,
POST_DEC ,
POST_INC ,
# 798 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
PRE_MODIFY ,
POST_MODIFY ,



NE ,
EQ ,
GE ,
GT ,
LE ,
LT ,
GEU ,
GTU ,
LEU ,
LTU ,


UNORDERED ,
ORDERED ,


UNEQ ,
UNGE ,
UNGT ,
UNLE ,
UNLT ,


LTGT ,




SIGN_EXTEND ,


ZERO_EXTEND ,


TRUNCATE ,


FLOAT_EXTEND ,
FLOAT_TRUNCATE ,


FLOAT ,







FIX ,


UNSIGNED_FLOAT ,




UNSIGNED_FIX ,


ABS ,


SQRT ,




FFS ,
# 882 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
SIGN_EXTRACT ,


ZERO_EXTRACT ,




HIGH ,



LO_SUM ,
# 907 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
RANGE_INFO ,
# 922 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
RANGE_REG ,





RANGE_VAR ,



RANGE_LIVE ,




CONSTANT_P_RTX ,
# 958 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
CALL_PLACEHOLDER ,






VEC_MERGE ,





VEC_SELECT ,




VEC_CONCAT ,





VEC_DUPLICATE ,


SS_PLUS ,


US_PLUS ,


SS_MINUS ,


US_MINUS ,


SS_TRUNCATE ,


US_TRUNCATE ,
# 1014 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.def"
PHI ,
# 45 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h" 2


  LAST_AND_UNUSED_RTX_CODE};






extern const unsigned char rtx_length[((int) LAST_AND_UNUSED_RTX_CODE)];


extern const char * const rtx_name[((int) LAST_AND_UNUSED_RTX_CODE)];


extern const char * const rtx_format[((int) LAST_AND_UNUSED_RTX_CODE)];


extern const char rtx_class[((int) LAST_AND_UNUSED_RTX_CODE)];




typedef struct
{

  unsigned min_align: 8;

  unsigned base_after_vec: 1;
  unsigned min_after_vec: 1;

  unsigned max_after_vec: 1;

  unsigned min_after_base: 1;

  unsigned max_after_base: 1;


  unsigned offset_unsigned: 1;
  unsigned : 2;
  unsigned scale : 8;
} addr_diff_vec_flags;





typedef struct
{
  long long alias;
  tree expr;
  rtx offset;
  rtx size;
  unsigned int align;
} mem_attrs;



typedef union rtunion_def
{
  long long rtwint;
  int rtint;
  unsigned int rtuint;
  const char *rtstr;
  rtx rtx;
  rtvec rtvec;
  enum machine_mode rttype;
  addr_diff_vec_flags rt_addr_diff_vec_flags;
  struct cselib_val_struct *rt_cselib;
  struct bitmap_head_def *rtbit;
  tree rttree;
  struct basic_block_def *bb;
  mem_attrs *rtmem;
} rtunion;



struct rtx_def
{

  enum rtx_code code: 16;


  enum machine_mode mode : 8;






  unsigned int jump : 1;


  unsigned int call : 1;
# 149 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
  unsigned int unchanging : 1;







  unsigned int volatil : 1;
# 175 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
  unsigned int in_struct : 1;






  unsigned int used : 1;




  unsigned integrated : 1;
# 196 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
  unsigned frame_related : 1;




  rtunion fld[1];
};
# 222 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
struct rtvec_def {
  int num_elem;
  rtx elem[1];
};
# 451 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
enum reg_note
{



  REG_DEAD = 1,


  REG_INC,
# 470 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
  REG_EQUIV,




  REG_EQUAL,





  REG_WAS_0,





  REG_RETVAL,




  REG_LIBCALL,






  REG_NONNEG,



  REG_NO_CONFLICT,


  REG_UNUSED,
# 515 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
  REG_CC_SETTER, REG_CC_USER,




  REG_LABEL,





  REG_DEP_ANTI, REG_DEP_OUTPUT,





  REG_BR_PROB,




  REG_EXEC_COUNT,



  REG_NOALIAS,



  REG_SAVE_AREA,





  REG_BR_PRED,




  REG_FRAME_RELATED_EXPR,




  REG_EH_CONTEXT,





  REG_EH_REGION,


  REG_SAVE_NOTE,





  REG_MAYBE_DEAD,


  REG_NORETURN,



  REG_NON_LOCAL_GOTO,



  REG_SETJMP,


  REG_ALWAYS_RETURN,



  REG_VTABLE_REF
};
# 607 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
extern const char * const reg_note_name[];
# 663 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
enum insn_note
{

  NOTE_INSN_BIAS = -100,



  NOTE_INSN_DELETED,



  NOTE_INSN_BLOCK_BEG,
  NOTE_INSN_BLOCK_END,


  NOTE_INSN_LOOP_BEG,
  NOTE_INSN_LOOP_END,


  NOTE_INSN_LOOP_CONT,

  NOTE_INSN_LOOP_VTOP,





  NOTE_INSN_LOOP_END_TOP_COND,






  NOTE_INSN_FUNCTION_END,


  NOTE_INSN_PROLOGUE_END,


  NOTE_INSN_EPILOGUE_BEG,


  NOTE_INSN_DELETED_LABEL,




  NOTE_INSN_FUNCTION_BEG,



  NOTE_INSN_EH_REGION_BEG,
  NOTE_INSN_EH_REGION_END,




  NOTE_INSN_REPEATED_LINE_NUMBER,



  NOTE_INSN_RANGE_BEG,
  NOTE_INSN_RANGE_END,


  NOTE_INSN_LIVE,


  NOTE_INSN_BASIC_BLOCK,



  NOTE_INSN_EXPECTED_VALUE,

  NOTE_INSN_MAX
};



extern const char * const note_insn_name[NOTE_INSN_MAX - NOTE_INSN_BIAS];
# 840 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
extern unsigned int subreg_lsb (rtx);
extern unsigned int subreg_regno_offset (unsigned int, enum machine_mode, unsigned int, enum machine_mode);



extern unsigned int subreg_regno (rtx);
# 1211 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
extern int rtx_equal_function_value_matters;


extern int generating_concat_p;




extern int ceil_log2 (unsigned long long);




extern rtx expand_builtin_expect_jump (tree, rtx, rtx);


extern void set_stack_check_libfunc (rtx);
extern long long trunc_int_for_mode (long long, enum machine_mode);

extern rtx plus_constant_wide (rtx, long long);
extern rtx plus_constant_for_output_wide (rtx, long long);
extern void optimize_save_area_alloca (rtx);


extern rtx gen_rtx (enum rtx_code, enum machine_mode, ...);

extern rtvec gen_rtvec (int, ...);
extern rtx copy_insn_1 (rtx);
extern rtx copy_insn (rtx);
extern rtx gen_int_mode (long long, enum machine_mode);



extern rtx rtx_alloc (enum rtx_code);
extern rtvec rtvec_alloc (int);
extern rtx copy_rtx (rtx);


extern rtx copy_rtx_if_shared (rtx);


extern rtx copy_most_rtx (rtx, rtx);
extern rtx shallow_copy_rtx (rtx);
extern int rtx_equal_p (rtx, rtx);


extern rtvec gen_rtvec_v (int, rtx *);
extern rtx gen_reg_rtx (enum machine_mode);
extern rtx gen_label_rtx (void);
extern int subreg_hard_regno (rtx, int);
extern rtx gen_lowpart_common (enum machine_mode, rtx);
extern rtx gen_lowpart (enum machine_mode, rtx);


extern rtx gen_lowpart_if_possible (enum machine_mode, rtx);


extern rtx gen_highpart (enum machine_mode, rtx);
extern rtx gen_highpart_mode (enum machine_mode, enum machine_mode, rtx);

extern rtx gen_realpart (enum machine_mode, rtx);
extern rtx gen_imagpart (enum machine_mode, rtx);
extern rtx operand_subword (rtx, unsigned int, int, enum machine_mode);

extern rtx constant_subword (rtx, int, enum machine_mode);



extern rtx operand_subword_force (rtx, unsigned int, enum machine_mode);

extern int subreg_lowpart_p (rtx);
extern unsigned int subreg_lowpart_offset (enum machine_mode, enum machine_mode);

extern unsigned int subreg_highpart_offset (enum machine_mode, enum machine_mode);

extern rtx make_safe_from (rtx, rtx);
extern rtx convert_memory_address (enum machine_mode, rtx);
extern rtx get_insns (void);
extern const char *get_insn_name (int);
extern rtx get_last_insn (void);
extern rtx get_last_insn_anywhere (void);
extern void start_sequence (void);
extern void push_to_sequence (rtx);
extern void end_sequence (void);
extern void push_to_full_sequence (rtx, rtx);
extern void end_full_sequence (rtx*, rtx*);
extern rtx gen_sequence (void);


extern rtx immed_double_const (long long, long long, enum machine_mode);
extern rtx mem_for_const_double (rtx);
extern rtx force_const_mem (enum machine_mode, rtx);


extern rtx get_pool_constant (rtx);
extern rtx get_pool_constant_mark (rtx, _Bool *);
extern enum machine_mode get_pool_mode (rtx);
extern rtx get_pool_constant_for_function (struct function *, rtx);
extern enum machine_mode get_pool_mode_for_function (struct function *, rtx);
extern int get_pool_offset (rtx);
extern rtx simplify_subtraction (rtx);


extern rtx assign_stack_local (enum machine_mode, long long, int);

extern rtx assign_stack_temp (enum machine_mode, long long, int);

extern rtx assign_stack_temp_for_type (enum machine_mode, long long, int, tree);

extern rtx assign_temp (tree, int, int, int);

extern rtx emit_insn_before (rtx, rtx);
extern rtx emit_jump_insn_before (rtx, rtx);
extern rtx emit_call_insn_before (rtx, rtx);
extern rtx emit_barrier_before (rtx);
extern rtx emit_label_before (rtx, rtx);
extern rtx emit_note_before (int, rtx);
extern rtx emit_insn_after (rtx, rtx);
extern rtx emit_jump_insn_after (rtx, rtx);
extern rtx emit_barrier_after (rtx);
extern rtx emit_label_after (rtx, rtx);
extern rtx emit_note_after (int, rtx);
extern rtx emit_line_note_after (const char *, int, rtx);
extern rtx emit_insn (rtx);
extern rtx emit_insns (rtx);
extern rtx emit_insns_before (rtx, rtx);
extern rtx emit_insns_after (rtx, rtx);
extern rtx emit_jump_insn (rtx);
extern rtx emit_call_insn (rtx);
extern rtx emit_label (rtx);
extern rtx emit_barrier (void);
extern rtx emit_line_note (const char *, int);
extern rtx emit_note (const char *, int);
extern rtx emit_line_note_force (const char *, int);
extern rtx make_insn_raw (rtx);
extern rtx previous_insn (rtx);
extern rtx next_insn (rtx);
extern rtx prev_nonnote_insn (rtx);
extern rtx next_nonnote_insn (rtx);
extern rtx prev_real_insn (rtx);
extern rtx next_real_insn (rtx);
extern rtx prev_active_insn (rtx);
extern rtx next_active_insn (rtx);
extern int active_insn_p (rtx);
extern rtx prev_label (rtx);
extern rtx next_label (rtx);
extern rtx next_cc0_user (rtx);
extern rtx prev_cc0_setter (rtx);


extern rtx next_nondeleted_insn (rtx);
extern enum rtx_code reverse_condition (enum rtx_code);
extern enum rtx_code reverse_condition_maybe_unordered (enum rtx_code);
extern enum rtx_code swap_condition (enum rtx_code);
extern enum rtx_code unsigned_condition (enum rtx_code);
extern enum rtx_code signed_condition (enum rtx_code);
extern void mark_jump_label (rtx, rtx, int);
extern void cleanup_barriers (void);


extern _Bool squeeze_notes (rtx *, rtx *);
extern rtx delete_related_insns (rtx);
extern void delete_jump (rtx);
extern void delete_barrier (rtx);
extern rtx get_label_before (rtx);
extern rtx get_label_after (rtx);
extern rtx follow_jumps (rtx);


extern rtx *find_constant_term_loc (rtx *);


extern rtx try_split (rtx, rtx, int);
extern int split_branch_probability;


extern rtx split_insns (rtx, rtx);


extern rtx simplify_unary_operation (enum rtx_code, enum machine_mode, rtx, enum machine_mode);


extern rtx simplify_binary_operation (enum rtx_code, enum machine_mode, rtx, rtx);


extern rtx simplify_ternary_operation (enum rtx_code, enum machine_mode, enum machine_mode, rtx, rtx, rtx);



extern rtx simplify_relational_operation (enum rtx_code, enum machine_mode, rtx, rtx);


extern rtx simplify_gen_binary (enum rtx_code, enum machine_mode, rtx, rtx);


extern rtx simplify_gen_unary (enum rtx_code, enum machine_mode, rtx, enum machine_mode);


extern rtx simplify_gen_ternary (enum rtx_code, enum machine_mode, enum machine_mode, rtx, rtx, rtx);



extern rtx simplify_gen_relational (enum rtx_code, enum machine_mode, enum machine_mode, rtx, rtx);



extern rtx simplify_subreg (enum machine_mode, rtx, enum machine_mode, unsigned int);



extern rtx simplify_gen_subreg (enum machine_mode, rtx, enum machine_mode, unsigned int);



extern rtx simplify_replace_rtx (rtx, rtx, rtx);
extern rtx simplify_rtx (rtx);
extern rtx avoid_constant_pool_reference (rtx);


extern rtx gen_mem_addressof (rtx, tree);


extern enum machine_mode choose_hard_reg_mode (unsigned int, unsigned int);



extern rtx set_unique_reg_note (rtx, enum reg_note, rtx);
# 1448 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
extern int rtx_addr_can_trap_p (rtx);
extern int rtx_unstable_p (rtx);
extern int rtx_varies_p (rtx, int);
extern int rtx_addr_varies_p (rtx, int);
extern long long get_integer_term (rtx);
extern rtx get_related_value (rtx);
extern rtx get_jump_table_offset (rtx, rtx *);
extern int reg_mentioned_p (rtx, rtx);
extern int count_occurrences (rtx, rtx, int);
extern int reg_referenced_p (rtx, rtx);
extern int reg_used_between_p (rtx, rtx, rtx);
extern int reg_referenced_between_p (rtx, rtx, rtx);
extern int reg_set_between_p (rtx, rtx, rtx);
extern int regs_set_between_p (rtx, rtx, rtx);
extern int commutative_operand_precedence (rtx);
extern int swap_commutative_operands_p (rtx, rtx);
extern int modified_between_p (rtx, rtx, rtx);
extern int no_labels_between_p (rtx, rtx);
extern int no_jumps_between_p (rtx, rtx);
extern int modified_in_p (rtx, rtx);
extern int insn_dependent_p (rtx, rtx);
extern int reg_set_p (rtx, rtx);
extern rtx single_set_2 (rtx, rtx);
extern int multiple_sets (rtx);
extern int set_noop_p (rtx);
extern int noop_move_p (rtx);
extern rtx find_last_value (rtx, rtx *, rtx, int);
extern int refers_to_regno_p (unsigned int, unsigned int, rtx, rtx *);

extern int reg_overlap_mentioned_p (rtx, rtx);
extern rtx set_of (rtx, rtx);
extern void note_stores (rtx, void (*) (rtx, rtx, void *), void *);


extern void note_uses (rtx *, void (*) (rtx *, void *), void *);


extern rtx reg_set_last (rtx, rtx);
extern int dead_or_set_p (rtx, rtx);
extern int dead_or_set_regno_p (rtx, unsigned int);
extern rtx find_reg_note (rtx, enum reg_note, rtx);
extern rtx find_regno_note (rtx, enum reg_note, unsigned int);

extern rtx find_reg_equal_equiv_note (rtx);
extern int find_reg_fusage (rtx, enum rtx_code, rtx);
extern int find_regno_fusage (rtx, enum rtx_code, unsigned int);

extern int pure_call_p (rtx);
extern void remove_note (rtx, rtx);
extern int side_effects_p (rtx);
extern int volatile_refs_p (rtx);
extern int volatile_insn_p (rtx);
extern int may_trap_p (rtx);
extern int inequality_comparisons_p (rtx);
extern rtx replace_rtx (rtx, rtx, rtx);
extern rtx replace_regs (rtx, rtx *, unsigned int, int);

extern int computed_jump_p (rtx);
typedef int (*rtx_function) (rtx *, void *);
extern int for_each_rtx (rtx *, rtx_function, void *);
extern rtx regno_use_in (unsigned int, rtx);
extern int auto_inc_p (rtx);
extern int in_expr_list_p (rtx, rtx);
extern void remove_node_from_expr_list (rtx, rtx *);
extern int insns_safe_to_move_p (rtx, rtx, rtx *);
extern int loc_mentioned_in_p (rtx *, rtx);
extern rtx find_first_parameter_load (rtx, rtx);



extern rtx find_use_as_address (rtx, rtx, long long);
void init_EXPR_INSN_LIST_cache (void);
void free_EXPR_LIST_list (rtx *);
void free_INSN_LIST_list (rtx *);
void free_EXPR_LIST_node (rtx);
void free_INSN_LIST_node (rtx);
rtx alloc_INSN_LIST (rtx, rtx);
rtx alloc_EXPR_LIST (int, rtx, rtx);







extern int max_parallel;


extern void free_reg_info (void);


extern int asm_noperands (rtx);
extern const char *decode_asm_operands (rtx, rtx *, rtx **, const char **, enum machine_mode *);



extern enum reg_class reg_preferred_class (int);
extern enum reg_class reg_alternate_class (int);

extern rtx get_first_nonparm_insn (void);

extern void split_all_insns (int);
extern void split_all_insns_noflow (void);


extern rtx const_int_rtx[64 * 2 + 1];





extern rtx const_true_rtx;

extern rtx const_tiny_rtx[3][(int) MAX_MACHINE_MODE];
# 1584 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
enum global_rtl_index
{
  GR_PC,
  GR_CC0,
  GR_STACK_POINTER,
  GR_FRAME_POINTER,
# 1599 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
  GR_HARD_FRAME_POINTER,





  GR_ARG_POINTER,


  GR_VIRTUAL_INCOMING_ARGS,
  GR_VIRTUAL_STACK_ARGS,
  GR_VIRTUAL_STACK_DYNAMIC,
  GR_VIRTUAL_OUTGOING_ARGS,
  GR_VIRTUAL_CFA,

  GR_MAX
};


extern rtx global_rtl[GR_MAX];
# 1632 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
extern rtx pic_offset_table_rtx;
extern rtx struct_value_rtx;
extern rtx struct_value_incoming_rtx;
extern rtx static_chain_rtx;
extern rtx static_chain_incoming_rtx;
extern rtx return_address_pointer_rtx;





# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/genrtl.h" 1





extern rtx gen_rtx_fmt_s (enum rtx_code, enum machine_mode mode, const char *arg0);

extern rtx gen_rtx_fmt_ee (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1);

extern rtx gen_rtx_fmt_ue (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1);

extern rtx gen_rtx_fmt_iss (enum rtx_code, enum machine_mode mode, int arg0, const char *arg1, const char *arg2);


extern rtx gen_rtx_fmt_is (enum rtx_code, enum machine_mode mode, int arg0, const char *arg1);

extern rtx gen_rtx_fmt_i (enum rtx_code, enum machine_mode mode, int arg0);

extern rtx gen_rtx_fmt_isE (enum rtx_code, enum machine_mode mode, int arg0, const char *arg1, rtvec arg2);


extern rtx gen_rtx_fmt_iE (enum rtx_code, enum machine_mode mode, int arg0, rtvec arg1);

extern rtx gen_rtx_fmt_Ess (enum rtx_code, enum machine_mode mode, rtvec arg0, const char *arg1, const char *arg2);


extern rtx gen_rtx_fmt_sEss (enum rtx_code, enum machine_mode mode, const char *arg0, rtvec arg1, const char *arg2, const char *arg3);


extern rtx gen_rtx_fmt_eE (enum rtx_code, enum machine_mode mode, rtx arg0, rtvec arg1);

extern rtx gen_rtx_fmt_E (enum rtx_code, enum machine_mode mode, rtvec arg0);

extern rtx gen_rtx_fmt_e (enum rtx_code, enum machine_mode mode, rtx arg0);

extern rtx gen_rtx_fmt_sse (enum rtx_code, enum machine_mode mode, const char *arg0, const char *arg1, rtx arg2);


extern rtx gen_rtx_fmt_ss (enum rtx_code, enum machine_mode mode, const char *arg0, const char *arg1);

extern rtx gen_rtx_fmt_sE (enum rtx_code, enum machine_mode mode, const char *arg0, rtvec arg1);

extern rtx gen_rtx_fmt_iuueiee (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, rtx arg3, int arg4, rtx arg5, rtx arg6);



extern rtx gen_rtx_fmt_iuueiee0 (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, rtx arg3, int arg4, rtx arg5, rtx arg6);



extern rtx gen_rtx_fmt_iuueieee (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, rtx arg3, int arg4, rtx arg5, rtx arg6, rtx arg7);



extern rtx gen_rtx_fmt_iuu (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2);

extern rtx gen_rtx_fmt_iuu00iss (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, int arg3, const char *arg4, const char *arg5);



extern rtx gen_rtx_fmt_ssiEEsi (enum rtx_code, enum machine_mode mode, const char *arg0, const char *arg1, int arg2, rtvec arg3, rtvec arg4, const char *arg5, int arg6);



extern rtx gen_rtx_fmt_Ei (enum rtx_code, enum machine_mode mode, rtvec arg0, int arg1);

extern rtx gen_rtx_fmt_eEee0 (enum rtx_code, enum machine_mode mode, rtx arg0, rtvec arg1, rtx arg2, rtx arg3);


extern rtx gen_rtx_fmt_eee (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1, rtx arg2);

extern rtx gen_rtx_fmt_ (enum rtx_code, enum machine_mode mode);
extern rtx gen_rtx_fmt_w (enum rtx_code, enum machine_mode mode, long long arg0);

extern rtx gen_rtx_fmt_0www (enum rtx_code, enum machine_mode mode, long long arg0, long long arg1, long long arg2);



extern rtx gen_rtx_fmt_0 (enum rtx_code, enum machine_mode mode);
extern rtx gen_rtx_fmt_i0 (enum rtx_code, enum machine_mode mode, int arg0);

extern rtx gen_rtx_fmt_ei (enum rtx_code, enum machine_mode mode, rtx arg0, int arg1);

extern rtx gen_rtx_fmt_e0 (enum rtx_code, enum machine_mode mode, rtx arg0);

extern rtx gen_rtx_fmt_u00 (enum rtx_code, enum machine_mode mode, rtx arg0);

extern rtx gen_rtx_fmt_eit (enum rtx_code, enum machine_mode mode, rtx arg0, int arg1, union tree_node *arg2);


extern rtx gen_rtx_fmt_eeeee (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1, rtx arg2, rtx arg3, rtx arg4);


extern rtx gen_rtx_fmt_Ee (enum rtx_code, enum machine_mode mode, rtvec arg0, rtx arg1);

extern rtx gen_rtx_fmt_uuEiiiiiibbii (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1, rtvec arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, struct bitmap_head_def *arg9, struct bitmap_head_def *arg10, int arg11, int arg12);






extern rtx gen_rtx_fmt_iiiiiiiitt (enum rtx_code, enum machine_mode mode, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, union tree_node *arg8, union tree_node *arg9);





extern rtx gen_rtx_fmt_eti (enum rtx_code, enum machine_mode mode, rtx arg0, union tree_node *arg1, int arg2);


extern rtx gen_rtx_fmt_bi (enum rtx_code, enum machine_mode mode, struct bitmap_head_def *arg0, int arg1);


extern rtx gen_rtx_fmt_uuuu (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1, rtx arg2, rtx arg3);
# 1643 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h" 2







extern rtx gen_rtx_CONST_DOUBLE (enum machine_mode, long long, long long);

extern rtx gen_rtx_CONST_INT (enum machine_mode, long long);
extern rtx gen_raw_REG (enum machine_mode, int);
extern rtx gen_rtx_REG (enum machine_mode, int);
extern rtx gen_rtx_SUBREG (enum machine_mode, rtx, int);
extern rtx gen_rtx_MEM (enum machine_mode, rtx);

extern rtx gen_lowpart_SUBREG (enum machine_mode, rtx);
# 1728 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
extern rtx find_next_ref (rtx, rtx);

extern rtx output_constant_def (tree, int);
extern rtx immed_real_const (tree);
# 1741 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
extern int flow2_completed;




extern int reload_completed;




extern int reload_in_progress;







extern int cse_not_expected;



extern int no_new_pseudos;





extern int rtx_to_tree_code (enum rtx_code);


struct obstack;
extern void gcc_obstack_init (struct obstack *);


struct cse_basic_block_data;
# 1787 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/rtl.h"
extern int rtx_cost (rtx, enum rtx_code);
extern int address_cost (rtx, enum machine_mode);
extern void delete_trivially_dead_insns (rtx, int, int);

extern int cse_main (rtx, int, int, FILE *);

extern void cse_end_of_basic_block (rtx, struct cse_basic_block_data *, int, int, int);




extern int comparison_dominates_p (enum rtx_code, enum rtx_code);
extern int condjump_p (rtx);
extern int any_condjump_p (rtx);
extern int any_uncondjump_p (rtx);
extern int safe_to_remove_jump_p (rtx);
extern rtx pc_set (rtx);
extern rtx condjump_label (rtx);
extern int simplejump_p (rtx);
extern int returnjump_p (rtx);
extern int onlyjump_p (rtx);
extern int only_sets_cc0_p (rtx);
extern int sets_cc0_p (rtx);
extern int invert_jump_1 (rtx, rtx);
extern int invert_jump (rtx, rtx, int);
extern int rtx_renumbered_equal_p (rtx, rtx);
extern int true_regnum (rtx);
extern int redirect_jump_1 (rtx, rtx);
extern int redirect_jump (rtx, rtx, int);
extern void rebuild_jump_labels (rtx);
extern enum rtx_code reversed_comparison_code (rtx, rtx);
extern enum rtx_code reversed_comparison_code_parts (enum rtx_code, rtx, rtx, rtx);

extern void delete_for_peephole (rtx, rtx);
extern int condjump_in_parallel_p (rtx);
extern void never_reached_warning (rtx, rtx);
extern void purge_line_number_notes (rtx);
extern void copy_loop_headers (rtx);


extern int max_reg_num (void);
extern int max_label_num (void);
extern int get_first_label_num (void);
extern void delete_insns_since (rtx);
extern void mark_reg_pointer (rtx, int);
extern void mark_user_reg (rtx);
extern void reset_used_flags (rtx);
extern void reorder_insns (rtx, rtx, rtx);
extern void reorder_insns_nobb (rtx, rtx, rtx);
extern int get_max_uid (void);
extern int in_sequence_p (void);
extern void force_next_line_note (void);
extern void clear_emit_caches (void);
extern void init_emit (void);
extern void init_emit_once (int);
extern void push_topmost_sequence (void);
extern void pop_topmost_sequence (void);
extern int subreg_realpart_p (rtx);
extern void reverse_comparison (rtx);
extern void set_new_first_and_last_insn (rtx, rtx);
extern void set_new_first_and_last_label_num (int, int);
extern void set_new_last_label_num (int);
extern void unshare_all_rtl_again (rtx);
extern void set_last_insn (rtx);
extern void link_cc0_insns (rtx);
extern void add_insn (rtx);
extern void add_insn_before (rtx, rtx);
extern void add_insn_after (rtx, rtx);
extern void remove_insn (rtx);
extern void reorder_insns_with_line_notes (rtx, rtx, rtx);
extern void emit_insn_after_with_line_notes (rtx, rtx, rtx);
extern enum rtx_code classify_insn (rtx);
extern rtx emit (rtx);



int force_line_numbers (void);
void restore_line_number_status (int old_value);
extern void renumber_insns (FILE *);
extern void remove_unnecessary_notes (void);
extern rtx delete_insn (rtx);
extern void delete_insn_chain (rtx, rtx);


extern int combine_instructions (rtx, unsigned int);
extern unsigned int extended_count (rtx, enum machine_mode, int);
extern rtx remove_death (unsigned int, rtx);

extern void dump_combine_stats (FILE *);
extern void dump_combine_total_stats (FILE *);




extern void schedule_insns (FILE *);
extern void schedule_ebbs (FILE *);

extern void fix_sched_param (const char *, const char *);


extern const char *print_rtx_head;
extern void debug_rtx (rtx);
extern void debug_rtx_list (rtx, int);
extern void debug_rtx_range (rtx, rtx);
extern rtx debug_rtx_find (rtx, int);

extern void print_mem_expr (FILE *, tree);
extern void print_rtl (FILE *, rtx);
extern void print_simple_rtl (FILE *, rtx);
extern int print_rtl_single (FILE *, rtx);
extern void print_inline_rtx (FILE *, rtx, int);



extern void init_loop (void);
extern rtx libcall_other_reg (rtx, rtx);

extern void loop_optimize (rtx, FILE *, int);

extern void record_excess_regs (rtx, rtx, rtx *);


extern void reposition_prologue_and_epilogue_notes (rtx);
extern void thread_prologue_and_epilogue_insns (rtx);
extern int prologue_epilogue_contains (rtx);
extern int sibcall_epilogue_contains (rtx);
extern void preserve_rtl_expr_result (rtx);
extern void mark_temp_addr_taken (rtx);
extern void update_temp_slot_address (rtx, rtx);
extern void purge_addressof (rtx);
extern void purge_hard_subreg_sets (rtx);


extern void set_file_and_line_for_stmt (const char *, int);
extern void expand_null_return (void);
extern void emit_jump (rtx);
extern int preserve_subexpressions_p (void);


extern void move_by_pieces (rtx, rtx, unsigned long long, unsigned int);




extern void recompute_reg_usage (rtx, int);
extern int initialize_uninitialized_subregs (void);

extern void print_rtl_with_bb (FILE *, rtx);
extern void dump_flow_info (FILE *);



extern void init_expmed (void);
extern void expand_inc (rtx, rtx);
extern void expand_dec (rtx, rtx);
extern rtx expand_mult_highpart (enum machine_mode, rtx, unsigned long long, rtx, int, int);





extern int gcse_main (rtx, FILE *);



extern void mark_elimination (int, int);

extern int global_alloc (FILE *);
extern void dump_global_regs (FILE *);




extern void build_insn_chain (rtx);


extern int reg_classes_intersect_p (enum reg_class, enum reg_class);
extern int reg_class_subset_p (enum reg_class, enum reg_class);
extern void globalize_reg (int);
extern void init_regs (void);
extern void init_reg_sets (void);
extern void regset_release_memory (void);
extern void regclass_init (void);
extern void regclass (rtx, int, FILE *);
extern void reg_scan (rtx, unsigned int, int);
extern void reg_scan_update (rtx, rtx, unsigned int);
extern void fix_register (const char *, int, int);

extern void delete_null_pointer_checks (rtx);



extern void regmove_optimize (rtx, int, FILE *);

extern void combine_stack_adjustments (void);



extern void dbr_schedule (rtx, FILE *);




extern void dump_local_alloc (FILE *);

extern int local_alloc (void);
extern int function_invariant_p (rtx);


extern void init_branch_prob (const char *);
extern void branch_prob (void);
extern void end_branch_prob (void);
extern void output_func_start_profiler (void);



extern void reg_to_stack (rtx, FILE *);



extern int add_double (unsigned long long, long long, unsigned long long, long long, unsigned long long *, long long *);



extern int neg_double (unsigned long long, long long, unsigned long long *, long long *);


extern int mul_double (unsigned long long, long long, unsigned long long, long long, unsigned long long *, long long *);




extern void lshift_double (unsigned long long, long long, long long, unsigned int, unsigned long long *, long long *, int);



extern void rshift_double (unsigned long long, long long, long long, unsigned int, unsigned long long *, long long *, int);



extern void lrotate_double (unsigned long long, long long, long long, unsigned int, unsigned long long *, long long *);



extern void rrotate_double (unsigned long long, long long, long long, unsigned int, unsigned long long *, long long *);





enum libcall_type
{
  LCT_NORMAL = 0,
  LCT_CONST = 1,
  LCT_PURE = 2,
  LCT_CONST_MAKE_BLOCK = 3,
  LCT_PURE_MAKE_BLOCK = 4,
  LCT_NORETURN = 5,
  LCT_THROW = 6,
  LCT_ALWAYS_RETURN = 7,
  LCT_RETURNS_TWICE = 8
};

extern void emit_library_call (rtx, enum libcall_type, enum machine_mode, int, ...);


extern rtx emit_library_call_value (rtx, rtx, enum libcall_type, enum machine_mode, int, ...);




extern int set_dominates_use (int, int, int, rtx, rtx);


extern int in_data_section (void);
extern void init_varasm_once (void);


extern void init_rtl (void);
extern void traverse_md_constants (int (*) (void **, void *), void *);

struct md_constant { char *name, *value; };


extern int read_skip_spaces (FILE *);
extern rtx read_rtx (FILE *);


extern const char *read_rtx_filename;
extern int read_rtx_lineno;







extern void fancy_abort (const char *, int, const char *)
    __attribute__ ((__noreturn__));



extern void clear_reg_alias_info (rtx);
extern rtx canon_rtx (rtx);
extern int true_dependence (rtx, enum machine_mode, rtx, int (*)(rtx, int));

extern rtx get_addr (rtx);
extern int canon_true_dependence (rtx, enum machine_mode, rtx, rtx, int (*)(rtx, int));

extern int read_dependence (rtx, rtx);
extern int anti_dependence (rtx, rtx);
extern int output_dependence (rtx, rtx);
extern void mark_constant_function (void);
extern void init_alias_once (void);
extern void init_alias_analysis (void);
extern void end_alias_analysis (void);
extern rtx addr_side_effect_eval (rtx, int, int);


typedef enum {
  sibcall_use_normal = 1,
  sibcall_use_tail_recursion,
  sibcall_use_sibcall
} sibcall_use_t;

extern void optimize_sibling_and_tail_recursive_calls (void);
extern void replace_call_placeholder (rtx, sibcall_use_t);


extern int stack_regs_mentioned (rtx insn);



extern rtx stack_limit_rtx;


extern void regrename_optimize (void);
extern void copyprop_hardreg_forward (void);


extern void if_convert (int);


extern void invert_br_probabilities (rtx);
extern _Bool expensive_function_p (int);
# 80 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/tm_p.h" 1
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/i386-protos.h" 1
# 23 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/i386-protos.h"
extern void override_options (void);
extern void optimization_options (int, int);

extern int ix86_can_use_return_insn_p (void);
extern int ix86_frame_pointer_required (void);
extern void ix86_setup_frame_addresses (void);

extern void ix86_asm_file_end (FILE *);
extern void load_pic_register (void);
extern long long ix86_initial_elimination_offset (int, int);
extern void ix86_expand_prologue (void);
extern void ix86_expand_epilogue (int);

extern void ix86_output_addr_vec_elt (FILE *, int);
extern void ix86_output_addr_diff_elt (FILE *, int, int);


extern int ix86_aligned_p (rtx);

extern int standard_80387_constant_p (rtx);
extern int standard_sse_constant_p (rtx);
extern int symbolic_reference_mentioned_p (rtx);

extern int x86_64_general_operand (rtx, enum machine_mode);
extern int x86_64_szext_general_operand (rtx, enum machine_mode);
extern int x86_64_nonmemory_operand (rtx, enum machine_mode);
extern int x86_64_szext_nonmemory_operand (rtx, enum machine_mode);
extern int x86_64_immediate_operand (rtx, enum machine_mode);
extern int x86_64_zext_immediate_operand (rtx, enum machine_mode);
extern int const_int_1_operand (rtx, enum machine_mode);
extern int symbolic_operand (rtx, enum machine_mode);
extern int pic_symbolic_operand (rtx, enum machine_mode);
extern int call_insn_operand (rtx, enum machine_mode);
extern int constant_call_address_operand (rtx, enum machine_mode);
extern int const0_operand (rtx, enum machine_mode);
extern int const1_operand (rtx, enum machine_mode);
extern int const248_operand (rtx, enum machine_mode);
extern int incdec_operand (rtx, enum machine_mode);
extern int reg_no_sp_operand (rtx, enum machine_mode);
extern int mmx_reg_operand (rtx, enum machine_mode);
extern int general_no_elim_operand (rtx, enum machine_mode);
extern int nonmemory_no_elim_operand (rtx, enum machine_mode);
extern int q_regs_operand (rtx, enum machine_mode);
extern int non_q_regs_operand (rtx, enum machine_mode);
extern int sse_comparison_operator (rtx, enum machine_mode);
extern int fcmov_comparison_operator (rtx, enum machine_mode);
extern int cmp_fp_expander_operand (rtx, enum machine_mode);
extern int ix86_comparison_operator (rtx, enum machine_mode);
extern int ext_register_operand (rtx, enum machine_mode);
extern int binary_fp_operator (rtx, enum machine_mode);
extern int mult_operator (rtx, enum machine_mode);
extern int div_operator (rtx, enum machine_mode);
extern int arith_or_logical_operator (rtx, enum machine_mode);
extern int promotable_binary_operator (rtx, enum machine_mode);
extern int memory_displacement_operand (rtx, enum machine_mode);
extern int cmpsi_operand (rtx, enum machine_mode);
extern int long_memory_operand (rtx, enum machine_mode);
extern int aligned_operand (rtx, enum machine_mode);
extern enum machine_mode ix86_cc_mode (enum rtx_code, rtx, rtx);

extern int ix86_expand_movstr (rtx, rtx, rtx, rtx);
extern int ix86_expand_clrstr (rtx, rtx, rtx);
extern int ix86_expand_strlen (rtx, rtx, rtx, rtx);

extern int legitimate_pic_address_disp_p (rtx);
extern int legitimate_address_p (enum machine_mode, rtx, int);
extern rtx legitimize_pic_address (rtx, rtx);
extern rtx legitimize_address (rtx, rtx, enum machine_mode);

extern void print_reg (rtx, int, FILE*);
extern void print_operand (FILE*, rtx, int);
extern void print_operand_address (FILE*, rtx);

extern void split_di (rtx[], int, rtx[], rtx[]);
extern void split_ti (rtx[], int, rtx[], rtx[]);

extern const char *output_387_binary_op (rtx, rtx*);
extern const char *output_fix_trunc (rtx, rtx*);
extern const char *output_fp_compare (rtx, rtx*, int, int);

extern void i386_dwarf_output_addr_const (FILE*, rtx);
extern rtx i386_simplify_dwarf_addr (rtx);

extern void ix86_expand_clear (rtx);
extern void ix86_expand_move (enum machine_mode, rtx[]);
extern void ix86_expand_vector_move (enum machine_mode, rtx[]);
extern void ix86_expand_binary_operator (enum rtx_code, enum machine_mode, rtx[]);

extern int ix86_binary_operator_ok (enum rtx_code, enum machine_mode, rtx[]);

extern void ix86_expand_unary_operator (enum rtx_code, enum machine_mode, rtx[]);

extern int ix86_unary_operator_ok (enum rtx_code, enum machine_mode, rtx[]);

extern int ix86_match_ccmode (rtx, enum machine_mode);
extern rtx ix86_expand_compare (enum rtx_code, rtx *, rtx *);
extern int ix86_use_fcomi_compare (enum rtx_code);
extern void ix86_expand_branch (enum rtx_code, rtx);
extern int ix86_expand_setcc (enum rtx_code, rtx);
extern int ix86_expand_int_movcc (rtx[]);
extern int ix86_expand_fp_movcc (rtx[]);
extern void x86_initialize_trampoline (rtx, rtx, rtx);
extern rtx ix86_zero_extend_to_Pmode (rtx);
extern void ix86_split_long_move (rtx[]);
extern void ix86_split_ashldi (rtx *, rtx);
extern void ix86_split_ashrdi (rtx *, rtx);
extern void ix86_split_lshrdi (rtx *, rtx);
extern int ix86_address_cost (rtx);
extern rtx ix86_find_base_term (rtx);

extern rtx assign_386_stack_local (enum machine_mode, int);
extern int ix86_attr_length_immediate_default (rtx, int);
extern int ix86_attr_length_address_default (rtx);

extern enum machine_mode ix86_fp_compare_mode (enum rtx_code);

extern int x86_64_sign_extended_value (rtx);
extern int x86_64_zero_extended_value (rtx);
extern rtx ix86_libcall_value (enum machine_mode);
extern _Bool ix86_function_value_regno_p (int);
extern _Bool ix86_function_arg_regno_p (int);
extern int ix86_function_arg_boundary (enum machine_mode, tree);
extern int ix86_return_in_memory (tree);
extern void ix86_va_start (int, tree, rtx);
extern rtx ix86_va_arg (tree, tree);
extern void ix86_setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode, tree, int *, int);



extern rtx ix86_force_to_memory (enum machine_mode, rtx);
extern void ix86_free_from_memory (enum machine_mode);
extern void ix86_split_fp_branch (enum rtx_code code, rtx, rtx, rtx, rtx, rtx);

extern int ix86_hard_regno_mode_ok (int, enum machine_mode);
extern int ix86_register_move_cost (enum machine_mode, enum reg_class, enum reg_class);

extern int ix86_secondary_memory_needed (enum reg_class, enum reg_class, enum machine_mode, int);


extern enum reg_class ix86_preferred_reload_class (rtx, enum reg_class);

extern int ix86_memory_move_cost (enum machine_mode, enum reg_class, int);

extern void ix86_set_move_mem_attrs (rtx, rtx, rtx, rtx, rtx);
extern void emit_i387_cw_initialization (rtx, rtx);
extern _Bool ix86_fp_jump_nontrivial_p (enum rtx_code);
extern void x86_order_regs_for_local_alloc (void);
# 2 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/tm_p.h" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/tm-preds.h" 1







extern int x86_64_immediate_operand (rtx, enum machine_mode);
extern int x86_64_nonmemory_operand (rtx, enum machine_mode);
extern int x86_64_movabs_operand (rtx, enum machine_mode);
extern int x86_64_szext_nonmemory_operand (rtx, enum machine_mode);
extern int x86_64_general_operand (rtx, enum machine_mode);
extern int x86_64_szext_general_operand (rtx, enum machine_mode);
extern int x86_64_zext_immediate_operand (rtx, enum machine_mode);
extern int shiftdi_operand (rtx, enum machine_mode);
extern int const_int_1_operand (rtx, enum machine_mode);
extern int const_int_1_31_operand (rtx, enum machine_mode);
extern int symbolic_operand (rtx, enum machine_mode);
extern int aligned_operand (rtx, enum machine_mode);
extern int pic_symbolic_operand (rtx, enum machine_mode);
extern int call_insn_operand (rtx, enum machine_mode);
extern int constant_call_address_operand (rtx, enum machine_mode);
extern int const0_operand (rtx, enum machine_mode);
extern int const1_operand (rtx, enum machine_mode);
extern int const248_operand (rtx, enum machine_mode);
extern int incdec_operand (rtx, enum machine_mode);
extern int mmx_reg_operand (rtx, enum machine_mode);
extern int reg_no_sp_operand (rtx, enum machine_mode);
extern int general_no_elim_operand (rtx, enum machine_mode);
extern int nonmemory_no_elim_operand (rtx, enum machine_mode);
extern int q_regs_operand (rtx, enum machine_mode);
extern int non_q_regs_operand (rtx, enum machine_mode);
extern int fcmov_comparison_operator (rtx, enum machine_mode);
extern int sse_comparison_operator (rtx, enum machine_mode);
extern int ix86_comparison_operator (rtx, enum machine_mode);
extern int cmp_fp_expander_operand (rtx, enum machine_mode);
extern int ext_register_operand (rtx, enum machine_mode);
extern int binary_fp_operator (rtx, enum machine_mode);
extern int mult_operator (rtx, enum machine_mode);
extern int div_operator (rtx, enum machine_mode);
extern int arith_or_logical_operator (rtx, enum machine_mode);
extern int promotable_binary_operator (rtx, enum machine_mode);
extern int memory_displacement_operand (rtx, enum machine_mode);
extern int cmpsi_operand (rtx, enum machine_mode);
extern int long_memory_operand (rtx, enum machine_mode);
# 3 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/tm_p.h" 2
# 81 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/flags.h" 1
# 26 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/flags.h"
extern const char *main_input_filename;

enum debug_info_type
{
  NO_DEBUG,
  DBX_DEBUG,
  SDB_DEBUG,
  DWARF_DEBUG,
  DWARF2_DEBUG,
  XCOFF_DEBUG,
  VMS_DEBUG,
  VMS_AND_DWARF2_DEBUG

};


extern enum debug_info_type write_symbols;

enum debug_info_level
{
  DINFO_LEVEL_NONE,
  DINFO_LEVEL_TERSE,
  DINFO_LEVEL_NORMAL,
  DINFO_LEVEL_VERBOSE
};


extern enum debug_info_level debug_info_level;



extern int use_gnu_debug_info_extensions;



extern int optimize;



extern int optimize_size;




extern int quiet_flag;



extern int time_report;




extern int mem_report;



extern int inhibit_warnings;



extern int warn_system_headers;



extern int extra_warnings;





extern void set_Wunused (int setting);

extern int warn_unused_function;
extern int warn_unused_label;
extern int warn_unused_parameter;
extern int warn_unused_variable;
extern int warn_unused_value;



extern int warn_notreached;



extern int warn_inline;



extern int warn_uninitialized;







extern int warn_unknown_pragmas;



extern int warn_shadow;



extern int warn_switch;




extern int warn_return_type;



extern int warn_missing_noreturn;





extern int warn_cast_align;





extern int warn_larger_than;
extern long long larger_than_size;




extern int warn_aggregate_return;



extern int warn_packed;



extern int warn_padded;



extern int warn_disabled_optimization;




extern int warn_deprecated_decl;



extern int profile_flag;



extern int profile_arc_flag;



extern int flag_test_coverage;



extern int flag_branch_probabilities;



extern int flag_reorder_blocks;



extern int flag_rename_registers;




extern int pedantic;




extern int in_system_header;




extern int flag_print_asm_name;





extern int flag_signed_char;



extern int flag_short_enums;





extern int flag_caller_saves;



extern int flag_pcc_struct_return;




extern int flag_force_mem;




extern int flag_force_addr;




extern int flag_defer_pop;




extern int flag_float_store;



extern int flag_strength_reduce;






extern int flag_unroll_loops;




extern int flag_unroll_all_loops;




extern int flag_move_all_movables;



extern int flag_prefetch_loop_arrays;




extern int flag_reduce_all_givs;




extern int flag_cse_follow_jumps;




extern int flag_cse_skip_blocks;



extern int flag_expensive_optimizations;




extern int flag_writable_strings;





extern int flag_no_function_cse;




extern int flag_omit_frame_pointer;



extern int flag_no_peephole;



extern int flag_volatile;



extern int flag_volatile_global;



extern int flag_volatile_static;



extern int flag_optimize_sibling_calls;




extern int flag_errno_math;






extern int flag_unsafe_math_optimizations;





extern int flag_trapping_math;





extern int flag_complex_divide_method;



extern int flag_rerun_loop_opt;




extern int flag_inline_functions;





extern int flag_keep_inline_functions;







extern int flag_no_inline;




extern int flag_really_no_inline;



extern int flag_syntax_only;



extern int flag_gen_aux_info;



extern int flag_shared_data;






extern int flag_schedule_insns;
extern int flag_schedule_insns_after_reload;
# 418 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/flags.h"
extern int flag_schedule_interblock;
extern int flag_schedule_speculative;
extern int flag_schedule_speculative_load;
extern int flag_schedule_speculative_load_dangerous;



extern int flag_branch_on_count_reg;





extern int flag_single_precision_constant;



extern int flag_delayed_branch;




extern int flag_dump_unnumbered;





extern int flag_pretend_float;




extern int flag_pedantic_errors;




extern int flag_pic;




extern int flag_exceptions;



extern int flag_unwind_tables;



extern int flag_asynchronous_unwind_tables;




extern int flag_no_common;





extern int flag_inhibit_size_directive;




extern int flag_function_sections;



extern int flag_data_sections;
# 498 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/flags.h"
extern int flag_verbose_asm;
# 507 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/flags.h"
extern int flag_debug_asm;

extern int flag_dump_rtl_in_asm;



extern int flag_gnu_linker;


extern int flag_pack_struct;
# 525 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/flags.h"
extern int flag_argument_noalias;





extern int flag_strict_aliasing;



extern int flag_stack_check;


extern int flag_regmove;


extern int flag_instrument_function_entry_exit;


extern int flag_peephole2;


extern int flag_guess_branch_prob;






extern int flag_bounded_pointers;







extern int flag_bounds_check;




extern int flag_merge_constants;




extern int flag_renumber_insns;







extern int frame_pointer_needed;



extern int flag_trapv;


extern int g_switch_value;
extern int g_switch_set;






extern int align_loops;
extern int align_loops_log;
extern int align_loops_max_skip;
extern int align_jumps;
extern int align_jumps_log;
extern int align_jumps_max_skip;
extern int align_labels;
extern int align_labels_log;
extern int align_labels_max_skip;
extern int align_functions;
extern int align_functions_log;


extern int dump_for_graph;


enum graph_dump_types
{
  no_graph = 0,
  vcg
};
extern enum graph_dump_types graph_dump_format;





extern int flag_no_ident;



extern int flag_gcse_lm;



extern int flag_gcse_sm;




extern int flag_eliminate_dwarf2_dups;



extern int flag_detailed_statistics;


extern int flag_non_call_exceptions;
# 82 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/regs.h" 1
# 23 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/regs.h"
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/varray.h" 1
# 36 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/varray.h"
struct const_equiv_data {
# 50 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/varray.h"
  struct rtx_def *rtx;



  unsigned age;
};


typedef union varray_data_tag {
  char c[1];
  unsigned char uc[1];
  short s[1];
  unsigned short us[1];
  int i[1];
  unsigned int u[1];
  long l[1];
  unsigned long ul[1];
  long long hint[1];
  unsigned long long uhint[1];
  void * generic[1];
  char *cptr[1];
  struct rtx_def *rtx[1];
  struct rtvec_def *rtvec[1];
  union tree_node *tree[1];
  struct bitmap_head_def *bitmap[1];
  struct sched_info_tag *sched[1];
  struct reg_info_def *reg[1];
  struct const_equiv_data const_equiv[1];
  struct basic_block_def *bb[1];
  struct elt_list *te[1];
} varray_data;


typedef struct varray_head_tag {
  size_t num_elements;
  size_t elements_used;

  size_t element_size;
  const char *name;
  varray_data data;
} *varray_type;



extern varray_type varray_init (size_t, size_t, const char *);
# 165 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/varray.h"
extern varray_type varray_grow (varray_type, size_t);
# 24 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/regs.h" 2
# 42 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/regs.h"
extern int max_regno;


typedef struct reg_info_def
{
  int first_uid;
  int last_uid;
  int last_note_uid;


  int sets;


  int refs;
  int freq;
  int deaths;
  int live_length;
  int calls_crossed;
  int basic_block;
  char changes_mode;

} reg_info;

extern varray_type reg_n_info;
# 157 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/regs.h"
extern short *reg_renumber;




extern char regs_ever_live[53];



extern const char * reg_names[53];






extern enum machine_mode reg_raw_mode[53];
# 196 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/regs.h"
extern rtx regs_may_share;




extern int caller_save_needed;
# 230 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/regs.h"
extern void allocate_reg_info (size_t, int, int);
# 83 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/hard-reg-set.h" 1
# 41 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/hard-reg-set.h"
typedef unsigned long long HARD_REG_ELT_TYPE;
# 395 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/hard-reg-set.h"
extern char fixed_regs[53];



extern HARD_REG_ELT_TYPE fixed_reg_set;






extern char call_used_regs[53];



extern HARD_REG_ELT_TYPE call_used_reg_set;


extern HARD_REG_ELT_TYPE losing_caller_save_reg_set;







extern char call_fixed_regs[53];



extern HARD_REG_ELT_TYPE call_fixed_reg_set;






extern char global_regs[53];
# 441 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/hard-reg-set.h"
extern HARD_REG_ELT_TYPE regs_invalidated_by_call;




extern int reg_alloc_order[53];



extern int inv_reg_alloc_order[53];




extern HARD_REG_ELT_TYPE reg_class_contents[((int) LIM_REG_CLASSES)];



extern unsigned int reg_class_size[((int) LIM_REG_CLASSES)];



extern enum reg_class reg_class_superclasses[((int) LIM_REG_CLASSES)][((int) LIM_REG_CLASSES)];



extern enum reg_class reg_class_subclasses[((int) LIM_REG_CLASSES)][((int) LIM_REG_CLASSES)];




extern enum reg_class reg_class_subunion[((int) LIM_REG_CLASSES)][((int) LIM_REG_CLASSES)];




extern enum reg_class reg_class_superunion[((int) LIM_REG_CLASSES)][((int) LIM_REG_CLASSES)];



extern int n_non_fixed_regs;



extern const char * reg_names[53];
# 84 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/basic-block.h" 1
# 25 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/basic-block.h"
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/bitmap.h" 1
# 43 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/bitmap.h"
typedef struct bitmap_element_def
{
  struct bitmap_element_def *next;
  struct bitmap_element_def *prev;
  unsigned int indx;
  unsigned long long bits[2];
} bitmap_element;


typedef struct bitmap_head_def {
  bitmap_element *first;
  bitmap_element *current;
  unsigned int indx;

} bitmap_head, *bitmap;


enum bitmap_bits {
  BITMAP_AND,
  BITMAP_AND_COMPL,
  BITMAP_IOR,
  BITMAP_XOR,
  BITMAP_IOR_COMPL
};


extern bitmap_element bitmap_zero_bits;


extern void bitmap_clear (bitmap);


extern void bitmap_copy (bitmap, bitmap);


extern int bitmap_equal_p (bitmap, bitmap);


extern int bitmap_operation (bitmap, bitmap, bitmap, enum bitmap_bits);



extern void bitmap_ior_and_compl (bitmap, bitmap, bitmap);


extern void bitmap_clear_bit (bitmap, int);


extern void bitmap_set_bit (bitmap, int);


extern int bitmap_bit_p (bitmap, int);


extern void debug_bitmap (bitmap);
extern void debug_bitmap_file (FILE *, bitmap);


extern void bitmap_print (FILE *, bitmap, const char *, const char *);


extern bitmap bitmap_initialize (bitmap);


extern void bitmap_release_memory (void);






extern int bitmap_union_of_diff (bitmap, bitmap, bitmap, bitmap);
extern int bitmap_first_set_bit (bitmap);
extern int bitmap_last_set_bit (bitmap);
# 26 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/basic-block.h" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/sbitmap.h" 1
# 31 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/sbitmap.h"
typedef struct simple_bitmap_def
{
  unsigned int n_bits;
  unsigned int size;
  unsigned int bytes;
  unsigned long long elms[1];
} *sbitmap;

typedef unsigned long long *sbitmap_ptr;
# 91 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/sbitmap.h"
struct int_list;

extern void dump_sbitmap (FILE *, sbitmap);
extern void dump_sbitmap_vector (FILE *, const char *, const char *, sbitmap *, int);


extern sbitmap sbitmap_alloc (unsigned int);
extern sbitmap *sbitmap_vector_alloc (unsigned int, unsigned int);
extern void sbitmap_copy (sbitmap, sbitmap);
extern int sbitmap_equal (sbitmap, sbitmap);
extern void sbitmap_zero (sbitmap);
extern void sbitmap_ones (sbitmap);
extern void sbitmap_vector_zero (sbitmap *, unsigned int);
extern void sbitmap_vector_ones (sbitmap *, unsigned int);

extern int sbitmap_union_of_diff (sbitmap, sbitmap, sbitmap, sbitmap);

extern void sbitmap_difference (sbitmap, sbitmap, sbitmap);
extern void sbitmap_not (sbitmap, sbitmap);
extern int sbitmap_a_or_b_and_c (sbitmap, sbitmap, sbitmap, sbitmap);

extern int sbitmap_a_and_b_or_c (sbitmap, sbitmap, sbitmap, sbitmap);

extern int sbitmap_a_and_b (sbitmap, sbitmap, sbitmap);
extern int sbitmap_a_or_b (sbitmap, sbitmap, sbitmap);
extern int sbitmap_a_xor_b (sbitmap, sbitmap, sbitmap);
extern int sbitmap_a_subset_b_p (sbitmap, sbitmap);

extern int sbitmap_first_set_bit (sbitmap);
extern int sbitmap_last_set_bit (sbitmap);

extern void sbitmap_intersect_of_predsucc (sbitmap, sbitmap *, int, struct int_list **);




extern void sbitmap_union_of_predsucc (sbitmap, sbitmap *, int, struct int_list **);







extern void sbitmap_intersection_of_succs (sbitmap, sbitmap *, int);
extern void sbitmap_intersection_of_preds (sbitmap, sbitmap *, int);
extern void sbitmap_union_of_succs (sbitmap, sbitmap *, int);
extern void sbitmap_union_of_preds (sbitmap, sbitmap *, int);

extern void debug_sbitmap (sbitmap);
# 27 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/basic-block.h" 2

# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/partition.h" 1
# 46 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/partition.h"
struct partition_elem
{


  int class_element;


  struct partition_elem* next;


  unsigned class_count;
};

typedef struct partition_def
{

  int num_elements;

  struct partition_elem elements[1];
} *partition;

extern partition partition_new (int);
extern void partition_delete (partition);
extern int partition_union (partition, int, int);


extern void partition_print (partition, FILE*);
# 29 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/basic-block.h" 2


typedef bitmap_head regset_head;

typedef bitmap regset;
# 74 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/basic-block.h"
extern void reg_set_to_hard_reg_set (HARD_REG_ELT_TYPE *, bitmap);
# 116 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/basic-block.h"
typedef long long gcov_type;


typedef struct edge_def {

  struct edge_def *pred_next, *succ_next;


  struct basic_block_def *src, *dest;


  rtx insns;


  void *aux;

  int flags;
  int probability;
  gcov_type count;

} *edge;
# 174 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/basic-block.h"
typedef struct basic_block_def {

  rtx head, end;


  tree head_tree;
  tree end_tree;


  edge pred, succ;




  regset local_set;



  regset cond_local_set;





  regset global_live_at_start;

  regset global_live_at_end;


  void *aux;


  int index;


  int loop_depth;


  gcov_type count;


  int frequency;


  int flags;
} *basic_block;
# 228 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/basic-block.h"
extern int n_basic_blocks;



extern int n_edges;



extern varray_type basic_block_info;





extern regset regs_live_at_setjmp;



extern rtx label_value_list, tail_recursion_label_list;

extern struct obstack flow_obstack;
# 278 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/basic-block.h"
extern struct basic_block_def entry_exit_blocks[2];



extern varray_type basic_block_for_insn;



extern void compute_bb_for_insn (int);
extern void free_bb_for_insn (void);
extern void update_bb_for_insn (basic_block);
extern void set_block_for_insn (rtx, basic_block);

extern void free_basic_block_vars (int);

extern edge split_block (basic_block, rtx);
extern basic_block split_edge (edge);
extern void insert_insn_on_edge (rtx, edge);
extern void commit_edge_insertions (void);
extern void remove_fake_edges (void);
extern void add_noreturn_fake_exit_edges (void);
extern void connect_infinite_loops_to_exit (void);
extern int flow_call_edges_add (sbitmap);
extern edge cached_make_edge (sbitmap *, basic_block, basic_block, int);

extern edge make_edge (basic_block, basic_block, int);

extern edge make_single_succ_edge (basic_block, basic_block, int);

extern void remove_edge (edge);
extern void redirect_edge_succ (edge, basic_block);
extern edge redirect_edge_succ_nodup (edge, basic_block);
extern void redirect_edge_pred (edge, basic_block);
extern basic_block create_basic_block_structure (int, rtx, rtx, rtx);
extern basic_block create_basic_block (int, rtx, rtx);
extern int flow_delete_block (basic_block);
extern int flow_delete_block_noexpunge (basic_block);
extern void merge_blocks_nomove (basic_block, basic_block);
extern void tidy_fallthru_edge (edge, basic_block, basic_block);

extern void tidy_fallthru_edges (void);
extern void flow_reverse_top_sort_order_compute (int *);
extern int flow_depth_first_order_compute (int *, int *);
extern void flow_preorder_transversal_compute (int *);
extern void dump_edge_info (FILE *, edge, int);
extern void clear_edges (void);
extern void mark_critical_edges (void);
extern rtx first_insn_after_basic_block_note (basic_block);


struct loop
{

  int num;


  basic_block header;


  basic_block latch;


  basic_block pre_header;




  edge *pre_header_edges;


  int num_pre_header_edges;



  basic_block first;



  basic_block last;


  sbitmap nodes;


  int num_nodes;


  edge *entry_edges;


  int num_entries;


  edge *exit_edges;


  int num_exits;


  sbitmap exits_doms;


  int depth;



  int level;


  struct loop *outer;


  struct loop *inner;


  struct loop *next;


  int shared;


  int invalid;


  void *aux;





  rtx vtop;



  rtx cont;


  rtx cont_dominator;


  rtx start;


  rtx end;



  rtx top;


  rtx scan_start;


  rtx sink;
# 442 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/basic-block.h"
  rtx exit_labels;



  int exit_count;
};



struct loops
{

  int num;


  int levels;



  struct loop *array;


  struct loop *tree_root;


  struct cfg
  {

    sbitmap *dom;


    int *dfs_order;



    int *rc_order;
  } cfg;


  sbitmap shared_headers;
};

extern int flow_loops_find (struct loops *, int flags);
extern int flow_loops_update (struct loops *, int flags);
extern void flow_loops_free (struct loops *);
extern void flow_loops_dump (const struct loops *, FILE *, void (*)(const struct loop *, FILE *, int), int);


extern void flow_loop_dump (const struct loop *, FILE *, void (*)(const struct loop *, FILE *, int), int);


extern int flow_loop_scan (struct loops *, struct loop *, int);


struct edge_list
{
  int num_blocks;
  int num_edges;
  edge *index_to_edge;
};
# 539 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/basic-block.h"
struct edge_list * create_edge_list (void);
void free_edge_list (struct edge_list *);
void print_edge_list (FILE *, struct edge_list *);
void verify_edge_list (FILE *, struct edge_list *);
int find_edge_index (struct edge_list *, basic_block, basic_block);



enum update_life_extent
{
  UPDATE_LIFE_LOCAL = 0,
  UPDATE_LIFE_GLOBAL = 1,
  UPDATE_LIFE_GLOBAL_RM_NOTES = 2
};
# 588 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/basic-block.h"
extern void life_analysis (rtx, FILE *, int);
extern void update_life_info (sbitmap, enum update_life_extent, int);

extern int count_or_remove_death_notes (sbitmap, int);
extern int propagate_block (basic_block, regset, regset, regset, int);


struct propagate_block_info;
extern rtx propagate_one_insn (struct propagate_block_info *, rtx);
extern struct propagate_block_info *init_propagate_block_info
  (basic_block, regset, regset, regset, int);
extern void free_propagate_block_info (struct propagate_block_info *);


extern struct edge_list *pre_edge_lcm (FILE *, int, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap **, sbitmap **);



extern struct edge_list *pre_edge_rev_lcm (FILE *, int, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap **, sbitmap **);



extern void compute_available (sbitmap *, sbitmap *, sbitmap *, sbitmap *);

extern int optimize_mode_switching (FILE *);


extern rtx emit_block_insn_after (rtx, rtx, basic_block);
extern rtx emit_block_insn_before (rtx, rtx, basic_block);


extern void estimate_probability (struct loops *);
extern void expected_value_to_br_prob (void);


extern void init_flow (void);
extern void reorder_basic_blocks (void);
extern void dump_bb (basic_block, FILE *);
extern void debug_bb (basic_block);
extern void debug_bb_n (int);
extern void dump_regset (regset, FILE *);
extern void debug_regset (regset);
extern void allocate_reg_life_data (void);
extern void allocate_bb_life_data (void);
extern void expunge_block (basic_block);
extern void expunge_block_nocompact (basic_block);
extern basic_block alloc_block (void);
extern void find_unreachable_blocks (void);
extern void delete_noop_moves (rtx);
extern basic_block redirect_edge_and_branch_force (edge, basic_block);
extern basic_block force_nonfallthru (edge);
extern _Bool redirect_edge_and_branch (edge, basic_block);
extern rtx block_label (basic_block);
extern _Bool forwarder_block_p (basic_block);
extern _Bool purge_all_dead_edges (int);
extern _Bool purge_dead_edges (basic_block);
extern void find_sub_basic_blocks (basic_block);
extern void find_many_sub_basic_blocks (sbitmap);
extern _Bool can_fallthru (basic_block, basic_block);
extern void flow_nodes_print (const char *, const sbitmap, FILE *);

extern void flow_edge_list_print (const char *, const edge *, int, FILE *);

extern void alloc_aux_for_block (basic_block, int);
extern void alloc_aux_for_blocks (int);
extern void clear_aux_for_blocks (void);
extern void free_aux_for_blocks (void);
extern void alloc_aux_for_edge (edge, int);
extern void alloc_aux_for_edges (int);
extern void clear_aux_for_edges (void);
extern void free_aux_for_edges (void);




extern void verify_flow_info (void);
extern int flow_loop_outside_edge_p (const struct loop *, edge);

typedef struct conflict_graph_def *conflict_graph;




typedef int (*conflict_graph_enum_fn) (int, int, void *);




extern conflict_graph conflict_graph_new
                                        (int);
extern void conflict_graph_delete (conflict_graph);
extern int conflict_graph_add (conflict_graph, int, int);

extern int conflict_graph_conflict_p (conflict_graph, int, int);

extern void conflict_graph_enum (conflict_graph, int, conflict_graph_enum_fn, void *);


extern void conflict_graph_merge_regs (conflict_graph, int, int);

extern void conflict_graph_print (conflict_graph, FILE*);
extern conflict_graph conflict_graph_compute
                                        (regset, partition);

extern _Bool mark_dfs_back_edges (void);
extern void update_br_prob_note (basic_block);
extern void fixup_abnormal_edges (void);



enum cdi_direction
{
  CDI_DOMINATORS,
  CDI_POST_DOMINATORS
};

extern void calculate_dominance_info (int *, sbitmap *, enum cdi_direction);
# 85 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/insn-config.h" 1
# 86 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/function.h" 1
# 22 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/function.h"
struct var_refs_queue
{
  rtx modified;
  enum machine_mode promoted_mode;
  int unsignedp;
  struct var_refs_queue *next;
};






struct sequence_stack
{

  rtx first, last;
  tree sequence_rtl_expr;
  struct sequence_stack *next;
};

extern struct sequence_stack *sequence_stack;



struct simple_obstack_stack
{
  struct obstack *obstack;
  struct simple_obstack_stack *next;
};

struct emit_status
{


  int x_reg_rtx_no;


  int x_first_label_num;






  rtx x_first_insn;
  rtx x_last_insn;




  tree sequence_rtl_expr;





  struct sequence_stack *sequence_stack;



  int x_cur_insn_uid;



  int x_last_linenum;
  const char *x_last_filename;





  int regno_pointer_align_length;




  unsigned char *regno_pointer_align;



  tree *regno_decl;



  rtx *x_regno_reg_rtx;
};
# 119 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/function.h"
struct expr_status
{


  int x_pending_stack_adjust;
# 140 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/function.h"
  int x_inhibit_defer_pop;





  int x_stack_pointer_delta;




  rtx x_saveregs_value;


  rtx x_apply_args_value;


  rtx x_forced_labels;


  rtx x_pending_chain;
};
# 174 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/function.h"
struct function
{
  struct eh_status *eh;
  struct stmt_status *stmt;
  struct expr_status *expr;
  struct emit_status *emit;
  struct varasm_status *varasm;




  const char *name;


  tree decl;


  struct function *outer;




  int pops_args;




  int args_size;




  int pretend_args_size;



  int outgoing_args_size;



  rtx arg_offset_rtx;



  CUMULATIVE_ARGS args_info;





  rtx return_rtx;


  rtx internal_arg_pointer;



  const char *cannot_inline;



  struct initial_value_struct *hard_reg_initial_vals;


  int x_function_call_count;




  tree x_nonlocal_labels;





  rtx x_nonlocal_goto_handler_slots;



  rtx x_nonlocal_goto_handler_labels;




  rtx x_nonlocal_goto_stack_level;





  rtx x_cleanup_label;




  rtx x_return_label;



  rtx x_save_expr_regs;



  rtx x_stack_slot_list;


  tree x_rtl_expr_chain;



  rtx x_tail_recursion_label;


  rtx x_tail_recursion_reentry;





  rtx x_arg_pointer_save_area;




  rtx x_clobber_return_insn;




  long long x_frame_offset;




  tree x_context_display;
# 317 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/function.h"
  tree x_trampoline_list;


  rtx x_parm_birth_insn;



  rtx x_last_parm_insn;



  unsigned int x_max_parm_reg;





  rtx *x_parm_reg_stack_loc;


  struct temp_slot *x_temp_slots;


  int x_temp_slot_level;


  int x_var_temp_slot_level;





  int x_target_temp_slot_level;



  struct var_refs_queue *fixup_var_refs_queue;


  int inlinable;
  int no_debugging_symbols;

  void *original_arg_vector;
  tree original_decl_initial;


  rtx inl_last_parm_insn;

  int inl_max_label_num;


  int profile_label_no;




  struct machine_function *machine;

  int stack_alignment_needed;

  int preferred_stack_boundary;


  struct language_function *language;





  rtx epilogue_delay_list;





  unsigned int returns_struct : 1;



  unsigned int returns_pcc_struct : 1;


  unsigned int returns_pointer : 1;


  unsigned int needs_context : 1;


  unsigned int calls_setjmp : 1;


  unsigned int calls_longjmp : 1;



  unsigned int calls_alloca : 1;


  unsigned int calls_eh_return : 1;



  unsigned int has_nonlocal_label : 1;



  unsigned int has_nonlocal_goto : 1;


  unsigned int contains_functions : 1;


  unsigned int has_computed_jump : 1;




  unsigned int is_thunk : 1;



  unsigned int instrument_entry_exit : 1;


  unsigned int profile : 1;



  unsigned int limit_stack : 1;



  unsigned int varargs : 1;



  unsigned int stdarg : 1;





  unsigned int x_whole_function_mode_p : 1;
# 468 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/function.h"
  unsigned int x_dont_save_pending_sizes_p : 1;


  unsigned int uses_const_pool : 1;


  unsigned int uses_pic_offset_table : 1;


  unsigned int uses_eh_lsda : 1;


  unsigned int arg_pointer_save_area_init : 1;
};


extern struct function *cfun;


extern int virtuals_instantiated;
# 549 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/function.h"
extern tree inline_function_decl;



struct function *find_function_data (tree);


extern void identify_blocks (void);



extern void reorder_blocks (void);


extern void number_blocks (tree);




extern long long get_frame_size (void);

extern long long get_func_frame_size (struct function *);



extern void (*init_machine_status) (struct function *);
extern void (*free_machine_status) (struct function *);



extern void (*mark_machine_status) (struct function *);


extern void (*init_lang_status) (struct function *);
extern void (*mark_lang_status) (struct function *);
extern void (*save_lang_status) (struct function *);
extern void (*restore_lang_status) (struct function *);
extern void (*free_lang_status) (struct function *);


extern void restore_emit_status (struct function *);
extern void free_after_parsing (struct function *);
extern void free_after_compilation (struct function *);

extern void init_varasm_status (struct function *);
extern void free_varasm_status (struct function *);
extern void free_emit_status (struct function *);
extern void free_stmt_status (struct function *);
extern void free_eh_status (struct function *);
extern void free_expr_status (struct function *);

extern rtx get_first_block_beg (void);


extern void diddle_return_value (void (*)(rtx, void*), void*);
extern void clobber_return_register (void);
extern void use_return_register (void);


extern rtx get_arg_pointer_save_area (struct function *);

extern void init_virtual_regs (struct emit_status *);


extern void init_function_once (void);
# 87 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2

# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/expr.h" 1
# 52 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/expr.h"
enum expand_modifier {EXPAND_NORMAL, EXPAND_SUM, EXPAND_CONST_ADDRESS,
   EXPAND_INITIALIZER, EXPAND_WRITE};
# 119 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/expr.h"
enum direction {none, upward, downward};
# 256 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/expr.h"
enum optab_methods
{
  OPTAB_DIRECT,
  OPTAB_LIB,
  OPTAB_WIDEN,
  OPTAB_LIB_WIDEN,
  OPTAB_MUST_WIDEN
};




extern rtx expand_simple_binop (enum machine_mode, enum rtx_code, rtx, rtx, rtx, int, enum optab_methods);

extern rtx expand_simple_unop (enum machine_mode, enum rtx_code, rtx, rtx, int);




extern int have_insn_for (enum rtx_code, enum machine_mode);


extern void emit_libcall_block (rtx, rtx, rtx, rtx);





extern rtx gen_add2_insn (rtx, rtx);
extern rtx gen_add3_insn (rtx, rtx, rtx);
extern rtx gen_sub2_insn (rtx, rtx);
extern rtx gen_sub3_insn (rtx, rtx, rtx);
extern rtx gen_move_insn (rtx, rtx);
extern int have_add2_insn (rtx, rtx);
extern int have_sub2_insn (rtx, rtx);



extern void emit_cmp_and_jump_insns (rtx, rtx, enum rtx_code, rtx, enum machine_mode, int, rtx);



extern void emit_indirect_jump (rtx);



rtx emit_conditional_move (rtx, enum rtx_code, rtx, rtx, enum machine_mode, rtx, rtx, enum machine_mode, int);




int can_conditionally_move_p (enum machine_mode mode);
# 316 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/expr.h"
extern rtx negate_rtx (enum machine_mode, rtx);


extern rtx expand_and (enum machine_mode, rtx, rtx, rtx);


extern rtx emit_store_flag (rtx, enum rtx_code, rtx, rtx, enum machine_mode, int, int);



extern rtx emit_store_flag_force (rtx, enum rtx_code, rtx, rtx, enum machine_mode, int, int);






extern rtx canonicalize_condition (rtx, rtx, int, rtx *, rtx);



extern rtx get_condition (rtx, rtx *);


extern rtx gen_cond_trap (enum rtx_code, rtx, rtx, rtx);


extern rtx expand_builtin (tree, rtx, rtx, enum machine_mode, int);
extern void std_expand_builtin_va_start (int, tree, rtx);
extern rtx std_expand_builtin_va_arg (tree, tree);
extern rtx expand_builtin_va_arg (tree, tree);
extern void default_init_builtins (void);
extern rtx default_expand_builtin (tree, rtx, rtx, enum machine_mode, int);

extern void expand_builtin_setjmp_setup (rtx, rtx);
extern void expand_builtin_setjmp_receiver (rtx);
extern void expand_builtin_longjmp (rtx, rtx);
extern rtx expand_builtin_saveregs (void);
extern void expand_builtin_trap (void);
extern long long get_varargs_alias_set (void);
extern long long get_frame_alias_set (void);
extern void record_base_value (unsigned int, rtx, int);
extern void record_alias_subset (long long, long long);

extern long long new_alias_set (void);
extern int can_address_p (tree);





extern void init_expr_once (void);


extern void init_expr (void);



extern void init_stor_layout_once (void);


extern void finish_expr_for_function (void);



extern rtx protect_from_queue (rtx, int);


extern void emit_queue (void);


extern int queued_subexp_p (rtx);



extern void convert_move (rtx, rtx, int);


extern rtx convert_to_mode (enum machine_mode, rtx, int);


extern rtx convert_modes (enum machine_mode, enum machine_mode, rtx, int);



extern rtx emit_block_move (rtx, rtx, rtx);



extern void move_block_to_reg (int, rtx, int, enum machine_mode);



extern void move_block_from_reg (int, rtx, int, int);



extern void emit_group_load (rtx, rtx, int);



extern void emit_group_store (rtx, rtx, int);







extern void use_reg (rtx *, rtx);



extern void use_regs (rtx *, int, int);


extern void use_group_regs (rtx *, rtx);



extern rtx clear_storage (rtx, rtx);






extern int can_store_by_pieces (unsigned long long, rtx (*) (void *, long long, enum machine_mode), void *, unsigned int);
# 452 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/expr.h"
extern void store_by_pieces (rtx, unsigned long long, rtx (*) (void *, long long, enum machine_mode), void *, unsigned int);





extern rtx emit_move_insn (rtx, rtx);


extern rtx emit_move_insn_1 (rtx, rtx);



extern rtx push_block (rtx, int, int);
# 486 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/expr.h"
extern rtx force_operand (rtx, rtx);
# 495 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/expr.h"
extern tree find_placeholder (tree, tree *);




extern rtx expand_expr (tree, rtx, enum machine_mode, enum expand_modifier);




extern void init_pending_stack_adjust (void);



extern void clear_pending_stack_adjust (void);


extern void do_pending_stack_adjust (void);
# 531 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/expr.h"
extern rtx compare_from_rtx (rtx, rtx, enum rtx_code, int, enum machine_mode, rtx);

extern void do_compare_rtx_and_jump (rtx, rtx, enum rtx_code, int, enum machine_mode, rtx, rtx, rtx);




extern int try_casesi (tree, tree, tree, tree, rtx, rtx);
extern int try_tablejump (tree, tree, tree, tree, rtx, rtx);



extern unsigned int case_values_threshold (void);
# 584 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/expr.h"
extern rtx promoted_input_arg (unsigned int, enum machine_mode *, int *);





extern rtx eliminate_constant_term (rtx, rtx *);



extern rtx memory_address (enum machine_mode, rtx);


extern rtx memory_address_noforce (enum machine_mode, rtx);


extern void set_mem_alias_set (rtx, long long);


extern void set_mem_align (rtx, unsigned int);


extern void set_mem_expr (rtx, tree);


extern void set_mem_offset (rtx, rtx);





extern rtx change_address (rtx, enum machine_mode, rtx);
# 636 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/expr.h"
extern rtx adjust_address_1 (rtx, enum machine_mode, long long, int, int);

extern rtx adjust_automodify_address_1 (rtx, enum machine_mode, rtx, long long, int);





extern rtx offset_address (rtx, rtx, long long);





extern rtx replace_equiv_address (rtx, rtx);


extern rtx replace_equiv_address_nv (rtx, rtx);



extern rtx widen_memory_access (rtx, enum machine_mode, long long);



extern rtx validize_mem (rtx);
# 676 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/expr.h"
extern rtx assemble_trampoline_template (void);



extern rtx stabilize (rtx);



extern rtx copy_all_regs (rtx);


extern rtx copy_to_reg (rtx);


extern rtx copy_addr_to_reg (rtx);


extern rtx copy_to_mode_reg (enum machine_mode, rtx);


extern rtx copy_to_suggested_reg (rtx, rtx, enum machine_mode);



extern rtx force_reg (enum machine_mode, rtx);


extern rtx force_not_mem (rtx);
# 712 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/expr.h"
extern void adjust_stack (rtx);


extern void anti_adjust_stack (rtx);


enum save_level {SAVE_BLOCK, SAVE_FUNCTION, SAVE_NONLOCAL};


extern void emit_stack_save (enum save_level, rtx *, rtx);


extern void emit_stack_restore (enum save_level, rtx, rtx);



extern rtx allocate_dynamic_stack_space (rtx, rtx, int);






extern void probe_stack_range (long long, rtx);



extern rtx hard_libcall_value (enum machine_mode);



extern rtx round_push (rtx);





enum extraction_pattern { EP_insv, EP_extv, EP_extzv };
extern enum machine_mode
mode_for_extraction (enum extraction_pattern, int);

extern rtx store_bit_field (rtx, unsigned long long, unsigned long long, enum machine_mode, rtx, long long);


extern rtx extract_bit_field (rtx, unsigned long long, unsigned long long, int, rtx, enum machine_mode, enum machine_mode, long long);



extern rtx expand_mult (enum machine_mode, rtx, rtx, rtx, int);
extern rtx expand_mult_add (rtx, rtx, rtx, rtx,enum machine_mode, int);
extern rtx expand_mult_highpart_adjust (enum machine_mode, rtx, rtx, rtx, rtx, int);

extern rtx assemble_static_space (int);




extern rtx (*lang_expand_expr) (union tree_node *, rtx, enum machine_mode, enum expand_modifier modifier);



extern int safe_from_p (rtx, tree, int);



extern void init_optabs (void);
extern void init_all_optabs (void);


extern rtx init_one_libfunc (const char *);

extern void do_jump_by_parts_equality_rtx (rtx, rtx, rtx);
extern void do_jump_by_parts_greater_rtx (enum machine_mode, int, rtx, rtx, rtx, rtx);
# 89 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/insn-attr.h" 1
# 10 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/insn-attr.h"
enum attr_cpu {CPU_I386, CPU_I486, CPU_PENTIUM, CPU_PENTIUMPRO, CPU_K6, CPU_ATHLON, CPU_PENTIUM4};
extern enum attr_cpu get_attr_cpu (void);


enum attr_type {TYPE_OTHER, TYPE_MULTI, TYPE_ALU1, TYPE_NEGNOT, TYPE_ALU, TYPE_ICMP, TYPE_TEST, TYPE_IMOV, TYPE_IMOVX, TYPE_LEA, TYPE_INCDEC, TYPE_ISHIFT, TYPE_IMUL, TYPE_IDIV, TYPE_IBR, TYPE_SETCC, TYPE_PUSH, TYPE_POP, TYPE_CALL, TYPE_CALLV, TYPE_ICMOV, TYPE_FMOV, TYPE_FOP, TYPE_FOP1, TYPE_FSGN, TYPE_FMUL, TYPE_FDIV, TYPE_FPSPC, TYPE_FCMOV, TYPE_FCMP, TYPE_FXCH, TYPE_STR, TYPE_CLD, TYPE_SSE, TYPE_MMX, TYPE_FISTP};
extern enum attr_type get_attr_type (rtx);


enum attr_mode {MODE_UNKNOWN, MODE_NONE, MODE_QI, MODE_HI, MODE_SI, MODE_DI, MODE_UNKNOWNFP, MODE_SF, MODE_DF, MODE_XF, MODE_TI};
extern enum attr_mode get_attr_mode (rtx);


extern int get_attr_i387 (rtx);

extern int get_attr_length_immediate (rtx);

extern int get_attr_length_address (rtx);

extern int get_attr_prefix_data16 (rtx);

extern int get_attr_prefix_rep (rtx);

extern int get_attr_prefix_0f (rtx);

extern int get_attr_modrm (rtx);

extern int get_attr_length (rtx);
extern void shorten_branches (rtx);
extern int insn_default_length (rtx);
extern int insn_variable_length_p (rtx);
extern int insn_current_length (rtx);


# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/insn-addr.h" 1
# 26 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/insn-addr.h"
extern varray_type insn_addresses_;
extern int insn_current_address;
# 43 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/insn-attr.h" 2


enum attr_memory {MEMORY_NONE, MEMORY_LOAD, MEMORY_STORE, MEMORY_BOTH, MEMORY_UNKNOWN};
extern enum attr_memory get_attr_memory (rtx);


enum attr_imm_disp {IMM_DISP_FALSE, IMM_DISP_TRUE, IMM_DISP_UNKNOWN};
extern enum attr_imm_disp get_attr_imm_disp (rtx);


enum attr_fp_int_src {FP_INT_SRC_FALSE, FP_INT_SRC_TRUE};
extern enum attr_fp_int_src get_attr_fp_int_src (rtx);


enum attr_pent_prefix {PENT_PREFIX_FALSE, PENT_PREFIX_TRUE};
extern enum attr_pent_prefix get_attr_pent_prefix (rtx);


enum attr_pent_pair {PENT_PAIR_UV, PENT_PAIR_PU, PENT_PAIR_PV, PENT_PAIR_NP};
extern enum attr_pent_pair get_attr_pent_pair (rtx);


enum attr_ppro_uops {PPRO_UOPS_ONE, PPRO_UOPS_FEW, PPRO_UOPS_MANY};
extern enum attr_ppro_uops get_attr_ppro_uops (rtx);


enum attr_athlon_decode {ATHLON_DECODE_DIRECT, ATHLON_DECODE_VECTOR};
extern enum attr_athlon_decode get_attr_athlon_decode (rtx);


enum attr_athlon_fpunits {ATHLON_FPUNITS_NONE, ATHLON_FPUNITS_STORE, ATHLON_FPUNITS_MUL, ATHLON_FPUNITS_ADD, ATHLON_FPUNITS_MULADD, ATHLON_FPUNITS_ANY};
extern enum attr_athlon_fpunits get_attr_athlon_fpunits (rtx);



extern int result_ready_cost (rtx);
extern int function_units_used (rtx);

extern const struct function_unit_desc
{
  const char *const name;
  const int bitmask;
  const int multiplicity;
  const int simultaneity;
  const int default_cost;
  const int max_issue_delay;
  int (*const ready_cost_function) (rtx);
  int (*const conflict_cost_function) (rtx, rtx);
  const int max_blockage;
  unsigned int (*const blockage_range_function) (rtx);
  int (*const blockage_function) (rtx, rtx);
} function_units[];
# 90 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/recog.h" 1
# 28 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/recog.h"
enum op_type {
  OP_IN,
  OP_OUT,
  OP_INOUT
};

struct operand_alternative
{


  const char *constraint;


  enum reg_class class;



  unsigned int reject;


  int matches;



  int matched;


  unsigned int earlyclobber:1;

  unsigned int memory_ok:1;

  unsigned int offmem_ok:1;

  unsigned int nonoffmem_ok:1;

  unsigned int decmem_ok:1;

  unsigned int incmem_ok:1;

  unsigned int is_address:1;


  unsigned int anything_ok:1;
};


extern void init_recog (void);
extern void init_recog_no_volatile (void);
extern int recog_memoized_1 (rtx);
extern int check_asm_operands (rtx);
extern int asm_operand_ok (rtx, const char *);
extern int validate_change (rtx, rtx *, rtx, int);
extern int insn_invalid_p (rtx);
extern int apply_change_group (void);
extern int num_validated_changes (void);
extern void cancel_changes (int);
extern int constrain_operands (int);
extern int constrain_operands_cached (int);
extern int memory_address_p (enum machine_mode, rtx);
extern int strict_memory_address_p (enum machine_mode, rtx);
extern int validate_replace_rtx_subexp (rtx, rtx, rtx, rtx *);
extern int validate_replace_rtx (rtx, rtx, rtx);
extern void validate_replace_rtx_group (rtx, rtx, rtx);
extern int validate_replace_src (rtx, rtx, rtx);



extern int reg_fits_class_p (rtx, enum reg_class, int, enum machine_mode);

extern rtx *find_single_use (rtx, rtx, rtx *);

extern int general_operand (rtx, enum machine_mode);
extern int address_operand (rtx, enum machine_mode);
extern int register_operand (rtx, enum machine_mode);
extern int pmode_register_operand (rtx, enum machine_mode);
extern int scratch_operand (rtx, enum machine_mode);
extern int immediate_operand (rtx, enum machine_mode);
extern int const_int_operand (rtx, enum machine_mode);
extern int const_double_operand (rtx, enum machine_mode);
extern int nonimmediate_operand (rtx, enum machine_mode);
extern int nonmemory_operand (rtx, enum machine_mode);
extern int push_operand (rtx, enum machine_mode);
extern int pop_operand (rtx, enum machine_mode);
extern int memory_operand (rtx, enum machine_mode);
extern int indirect_operand (rtx, enum machine_mode);
extern int mode_independent_operand (rtx, enum machine_mode);
extern int comparison_operator (rtx, enum machine_mode);

extern int offsettable_memref_p (rtx);
extern int offsettable_nonstrict_memref_p (rtx);
extern int offsettable_address_p (int, enum machine_mode, rtx);
extern int mode_dependent_address_p (rtx);

extern int recog (rtx, rtx, int *);
extern void add_clobbers (rtx, int);
extern int added_clobbers_hard_reg_p (int);
extern void insn_extract (rtx);
extern void extract_insn (rtx);
extern void extract_constrain_insn_cached (rtx);
extern void extract_insn_cached (rtx);
extern void preprocess_constraints (void);
extern rtx peep2_next_insn (int);
extern int peep2_regno_dead_p (int, int);
extern int peep2_reg_dead_p (int, rtx);

extern rtx peep2_find_free_register (int, int, const char *, enum machine_mode, HARD_REG_ELT_TYPE *);



extern void peephole2_optimize (FILE *);
extern rtx peephole2_insns (rtx, rtx, int *);


extern int volatile_ok;



extern int which_alternative;



struct recog_data
{







  rtx operand[30];


  rtx *operand_loc[30];


  const char *constraints[30];


  enum machine_mode operand_mode[30];


  enum op_type operand_type[30];



  rtx *dup_loc[4];



  char dup_num[4];
# 191 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/recog.h"
  char n_operands;


  char n_dups;


  char n_alternatives;


  rtx insn;
};

extern struct recog_data recog_data;



extern struct operand_alternative recog_op_alt[30][30];




typedef int (*insn_operand_predicate_fn) (rtx, enum machine_mode);
typedef const char * (*insn_output_fn) (rtx *, rtx);
typedef rtx (*insn_gen_fn) (rtx, ...);

struct insn_operand_data
{
  const insn_operand_predicate_fn predicate;

  const char *const constraint;

  const enum machine_mode mode : 16;

  const char strict_low;

  const char eliminable;
};
# 236 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/recog.h"
struct insn_data
{
  const char *const name;
  const void * output;
  const insn_gen_fn genfun;
  const struct insn_operand_data *const operand;

  const char n_operands;
  const char n_dups;
  const char n_alternatives;
  const char output_format;
};

extern const struct insn_data insn_data[];
# 91 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/real.h" 1
# 107 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/real.h"
typedef struct {
  long long r[(19 + sizeof (long long))/(sizeof (long long))];
} realvaluetype;
# 131 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/real.h"
extern unsigned int significand_size (enum machine_mode);
# 144 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/real.h"
extern void earith (realvaluetype *, int, realvaluetype *, realvaluetype *);

extern realvaluetype etrunci (realvaluetype);
extern realvaluetype etruncui (realvaluetype);
extern realvaluetype ereal_negate (realvaluetype);
extern long long efixi (realvaluetype);
extern unsigned long long efixui (realvaluetype);
extern void ereal_from_int (realvaluetype *, long long, long long, enum machine_mode);


extern void ereal_from_uint (realvaluetype *, unsigned long long, unsigned long long, enum machine_mode);



extern void ereal_to_int (long long *, long long *, realvaluetype);

extern realvaluetype ereal_ldexp (realvaluetype, int);

extern void etartdouble (realvaluetype, long *);
extern void etarldouble (realvaluetype, long *);
extern void etardouble (realvaluetype, long *);
extern long etarsingle (realvaluetype);
extern void ereal_to_decimal (realvaluetype, char *);
extern int ereal_cmp (realvaluetype, realvaluetype);
extern int ereal_isneg (realvaluetype);
extern realvaluetype ereal_unto_float (long);
extern realvaluetype ereal_unto_double (long *);
extern realvaluetype ereal_from_float (long long);
extern realvaluetype ereal_from_double (long long *);
# 406 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/real.h"
extern realvaluetype real_value_truncate (enum machine_mode, realvaluetype);
# 437 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/real.h"
extern realvaluetype dconst0;
extern realvaluetype dconst1;
extern realvaluetype dconst2;
extern realvaluetype dconstm1;




union real_extract
{
  realvaluetype d;
  long long i[sizeof (realvaluetype) / sizeof (long long)];
};




union tree_node;
realvaluetype real_value_from_int_cst (union tree_node *, union tree_node *);
# 466 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/real.h"
extern struct rtx_def *immed_real_const_1 (realvaluetype, enum machine_mode);
# 478 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/real.h"
extern int exact_real_inverse (enum machine_mode, realvaluetype *);
extern int target_isnan (realvaluetype);
extern int target_isinf (realvaluetype);
extern int target_negative (realvaluetype);
extern void debug_real (realvaluetype);
extern realvaluetype ereal_atof (const char *, enum machine_mode);
# 92 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2
# 1 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/toplev.h" 1
# 29 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/toplev.h"
extern int toplev_main (int, char **);
extern int read_integral_parameter (const char *, const char *, const int);

extern int count_error (int);
extern void strip_off_ending (char *, int);
extern void print_time (const char *, long);
extern const char *trim_filename (const char *);
extern void internal_error (const char *, ...)
            __attribute__ ((__noreturn__));
extern void fatal_io_error (const char *, ...)
            __attribute__ ((__noreturn__));
extern void _fatal_insn_not_found (struct rtx_def *, const char *, int, const char *)


            __attribute__ ((__noreturn__));
extern void _fatal_insn (const char *, struct rtx_def *, const char *, int, const char *)



           __attribute__ ((__noreturn__));
# 58 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/toplev.h"
extern void warning (const char *, ...);
extern void error (const char *, ...);
extern void fatal_error (const char *, ...)
            __attribute__ ((__noreturn__));
extern void pedwarn (const char *, ...);
extern void pedwarn_with_file_and_line (const char *, int, const char *, ...);

extern void warning_with_file_and_line (const char *, int, const char *, ...);

extern void error_with_file_and_line (const char *, int, const char *, ...);

extern void sorry (const char *, ...);
extern void report_error_function (const char *);

extern void rest_of_decl_compilation (union tree_node *, const char *, int, int);

extern void rest_of_type_compilation (union tree_node *, int);
extern void rest_of_compilation (union tree_node *);

extern void pedwarn_with_decl (union tree_node *, const char *, ...);

extern void warning_with_decl (union tree_node *, const char *, ...);

extern void error_with_decl (union tree_node *, const char *, ...);


extern void announce_function (union tree_node *);

extern void error_for_asm (struct rtx_def *, const char *, ...);

extern void warning_for_asm (struct rtx_def *, const char *, ...);

extern void warn_deprecated_use (union tree_node *);
extern int do_float_handler (void (*) (void *), void *);


extern void output_quoted_string (FILE *, const char *);
extern void output_file_directive (FILE *, const char *);

extern void do_abort (void) __attribute__ ((__noreturn__));
extern void botch (const char *)
  __attribute__ ((__noreturn__));




extern void fnotice (FILE *, const char *, ...)
            __attribute__ ((__format__ (__printf__, 2, 3)));


extern int wrapup_global_declarations (union tree_node **, int);
extern void check_global_declarations (union tree_node **, int);

extern const char *progname;
extern const char *dump_base_name;


extern struct ht *ident_hash;




extern void set_fast_math_flags (void);
extern void set_no_fast_math_flags (void);
# 130 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/toplev.h"
extern int exact_log2_wide (unsigned long long);
extern int floor_log2_wide (unsigned long long);
# 93 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c" 2







static int combine_attempts;



static int combine_merges;



static int combine_extras;



static int combine_successes;



static int total_attempts, total_merges, total_extras, total_successes;
# 126 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static int *uid_cuid;
static int max_uid_cuid;
# 142 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static unsigned int combine_max_regno;



static rtx *reg_last_death;



static rtx *reg_last_set;




static int mem_last_set;




static int last_call_cuid;







static rtx subst_insn;




static rtx subst_prev_insn;
# 182 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static int subst_low_cuid;




static HARD_REG_ELT_TYPE newpat_used_regs;





static rtx added_links_insn;


static int this_basic_block;




static sbitmap refresh_blocks;
static int need_refresh;
# 250 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static rtx *reg_last_set_value;




static int *reg_last_set_label;




static int *reg_last_set_table_tick;




static char *reg_last_set_invalid;



static int label_tick;
# 281 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static unsigned long long *reg_nonzero_bits;




static enum machine_mode nonzero_bits_mode;




static unsigned char *reg_sign_bit_copies;






static int nonzero_sign_valid;






static enum machine_mode *reg_last_set_mode;
static unsigned long long *reg_last_set_nonzero_bits;
static char *reg_last_set_sign_bit_copies;





struct undo
{
  struct undo *next;
  int is_int;
  union {rtx r; unsigned int i;} old_contents;
  union {rtx *r; unsigned int *i;} where;
};







struct undobuf
{
  struct undo *undos;
  struct undo *frees;
  rtx other_insn;
};

static struct undobuf undobuf;




static int n_occurrences;

static void do_SUBST (rtx *, rtx);
static void do_SUBST_INT (unsigned int *, unsigned int);

static void init_reg_last_arrays (void);
static void setup_incoming_promotions (void);
static void set_nonzero_bits_and_sign_copies (rtx, rtx, void *);
static int cant_combine_insn_p (rtx);
static int can_combine_p (rtx, rtx, rtx, rtx, rtx *, rtx *);
static int sets_function_arg_p (rtx);
static int combinable_i3pat (rtx, rtx *, rtx, rtx, int, rtx *);
static int contains_muldiv (rtx);
static rtx try_combine (rtx, rtx, rtx, int *);
static void undo_all (void);
static void undo_commit (void);
static rtx *find_split_point (rtx *, rtx);
static rtx subst (rtx, rtx, rtx, int, int);
static rtx combine_simplify_rtx (rtx, enum machine_mode, int, int);
static rtx simplify_if_then_else (rtx);
static rtx simplify_set (rtx);
static rtx simplify_logical (rtx, int);
static rtx expand_compound_operation (rtx);
static rtx expand_field_assignment (rtx);
static rtx make_extraction (enum machine_mode, rtx, long long, rtx, unsigned long long, int, int, int);


static rtx extract_left_shift (rtx, int);
static rtx make_compound_operation (rtx, enum rtx_code);
static int get_pos_from_mask (unsigned long long, unsigned long long *);

static rtx force_to_mode (rtx, enum machine_mode, unsigned long long, rtx, int);

static rtx if_then_else_cond (rtx, rtx *, rtx *);
static rtx known_cond (rtx, enum rtx_code, rtx, rtx);
static int rtx_equal_for_field_assignment_p (rtx, rtx);
static rtx make_field_assignment (rtx);
static rtx apply_distributive_law (rtx);
static rtx simplify_and_const_int (rtx, enum machine_mode, rtx, unsigned long long);

static unsigned long long nonzero_bits (rtx, enum machine_mode);
static unsigned int num_sign_bit_copies (rtx, enum machine_mode);
static int merge_outer_ops (enum rtx_code *, long long *, enum rtx_code, long long, enum machine_mode, int *);


static rtx simplify_shift_const (rtx, enum rtx_code, enum machine_mode, rtx, int);

static int recog_for_combine (rtx *, rtx, rtx *);
static rtx gen_lowpart_for_combine (enum machine_mode, rtx);
static rtx gen_binary (enum rtx_code, enum machine_mode, rtx, rtx);

static enum rtx_code simplify_comparison (enum rtx_code, rtx *, rtx *);
static void update_table_tick (rtx);
static void record_value_for_reg (rtx, rtx, rtx);
static void check_promoted_subreg (rtx, rtx);
static void record_dead_and_set_regs_1 (rtx, rtx, void *);
static void record_dead_and_set_regs (rtx);
static int get_last_value_validate (rtx *, rtx, int, int);
static rtx get_last_value (rtx);
static int use_crosses_set_p (rtx, int);
static void reg_dead_at_p_1 (rtx, rtx, void *);
static int reg_dead_at_p (rtx, rtx);
static void move_deaths (rtx, rtx, int, rtx, rtx *);
static int reg_bitfield_target_p (rtx, rtx);
static void distribute_notes (rtx, rtx, rtx, rtx, rtx, rtx);
static void distribute_links (rtx);
static void mark_used_regs_combine (rtx);
static int insn_cuid (rtx);
static void record_promoted_value (rtx, rtx);
static rtx reversed_comparison (rtx, enum machine_mode, rtx, rtx);
static enum rtx_code combine_reversed_comparison_code (rtx);







static void
do_SUBST (into, newval)
     rtx *into, newval;
{
  struct undo *buf;
  rtx oldval = *into;

  if (oldval == newval)
    return;






  if ((mode_class[(int) (((enum machine_mode) (oldval)->mode))]) == MODE_INT
      && ((enum rtx_code) (newval)->code) == CONST_INT)
    {


      if ((((newval)->fld[0]).rtwint) != trunc_int_for_mode ((((newval)->fld[0]).rtwint),
       ((enum machine_mode) (oldval)->mode)))
 fancy_abort ("/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c", 439, __FUNCTION__);







      if ((((enum rtx_code) (oldval)->code) == SUBREG
    && ((enum rtx_code) ((((oldval)->fld[0]).rtx))->code) == CONST_INT)
   || (((enum rtx_code) (oldval)->code) == ZERO_EXTEND
       && ((enum rtx_code) ((((oldval)->fld[0]).rtx))->code) == CONST_INT))
 fancy_abort ("/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c", 451, __FUNCTION__);
     }

  if (undobuf.frees)
    buf = undobuf.frees, undobuf.frees = buf->next;
  else
    buf = (struct undo *) xmalloc (sizeof (struct undo));

  buf->is_int = 0;
  buf->where.r = into;
  buf->old_contents.r = oldval;
  *into = newval;

  buf->next = undobuf.undos, undobuf.undos = buf;
}







static void
do_SUBST_INT (into, newval)
     unsigned int *into, newval;
{
  struct undo *buf;
  unsigned int oldval = *into;

  if (oldval == newval)
    return;

  if (undobuf.frees)
    buf = undobuf.frees, undobuf.frees = buf->next;
  else
    buf = (struct undo *) xmalloc (sizeof (struct undo));

  buf->is_int = 1;
  buf->where.i = into;
  buf->old_contents.i = oldval;
  *into = newval;

  buf->next = undobuf.undos, undobuf.undos = buf;
}
# 504 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
int
combine_instructions (f, nregs)
     rtx f;
     unsigned int nregs;
{
  rtx insn, next;



  int i;
  rtx links, nextlinks;

  int new_direct_jump_p = 0;

  combine_attempts = 0;
  combine_merges = 0;
  combine_extras = 0;
  combine_successes = 0;

  combine_max_regno = nregs;

  reg_nonzero_bits = ((unsigned long long *)
        xcalloc (nregs, sizeof (unsigned long long)));
  reg_sign_bit_copies
    = (unsigned char *) xcalloc (nregs, sizeof (unsigned char));

  reg_last_death = (rtx *) xmalloc (nregs * sizeof (rtx));
  reg_last_set = (rtx *) xmalloc (nregs * sizeof (rtx));
  reg_last_set_value = (rtx *) xmalloc (nregs * sizeof (rtx));
  reg_last_set_table_tick = (int *) xmalloc (nregs * sizeof (int));
  reg_last_set_label = (int *) xmalloc (nregs * sizeof (int));
  reg_last_set_invalid = (char *) xmalloc (nregs * sizeof (char));
  reg_last_set_mode
    = (enum machine_mode *) xmalloc (nregs * sizeof (enum machine_mode));
  reg_last_set_nonzero_bits
    = (unsigned long long *) xmalloc (nregs * sizeof (long long));
  reg_last_set_sign_bit_copies
    = (char *) xmalloc (nregs * sizeof (char));

  init_reg_last_arrays ();

  init_recog_no_volatile ();



  for (insn = f, i = 0; insn; insn = (((insn)->fld[2]).rtx))
    if ((((insn)->fld[0]).rtint) > i)
      i = (((insn)->fld[0]).rtint);

  uid_cuid = (int *) xmalloc ((i + 1) * sizeof (int));
  max_uid_cuid = i;

  nonzero_bits_mode = mode_for_size ((8 * 8), MODE_INT, 0);




  nonzero_sign_valid = 0;
# 574 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  label_tick = 1;



  subst_prev_insn = (rtx) 0;

  setup_incoming_promotions ();

  refresh_blocks = sbitmap_alloc (n_basic_blocks);
  sbitmap_zero (refresh_blocks);
  need_refresh = 0;

  for (insn = f, i = 0; insn; insn = (((insn)->fld[2]).rtx))
    {
      uid_cuid[(((insn)->fld[0]).rtint)] = ++i;
      subst_low_cuid = i;
      subst_insn = insn;

      if (((rtx_class[(int) (((enum rtx_code) (insn)->code))]) == 'i'))
 {
   note_stores ((((insn)->fld[3]).rtx), set_nonzero_bits_and_sign_copies,
         ((void*)0));
   record_dead_and_set_regs (insn);







 }

      if (((enum rtx_code) (insn)->code) == CODE_LABEL)
 label_tick++;
    }

  nonzero_sign_valid = 1;



  this_basic_block = -1;
  label_tick = 1;
  last_call_cuid = 0;
  mem_last_set = 0;
  init_reg_last_arrays ();
  setup_incoming_promotions ();

  for (insn = f; insn; insn = next ? next : (((insn)->fld[2]).rtx))
    {
      next = 0;


      if (this_basic_block + 1 < n_basic_blocks
   && ((((basic_block_info)->data.bb[(this_basic_block + 1)]))->head) == insn)
 this_basic_block++;

      if (((enum rtx_code) (insn)->code) == CODE_LABEL)
 label_tick++;

      else if (((rtx_class[(int) (((enum rtx_code) (insn)->code))]) == 'i'))
 {


   check_promoted_subreg (insn, (((insn)->fld[3]).rtx));



   for (links = (((insn)->fld[5]).rtx); links; links = (((links)->fld[1]).rtx))
     if ((next = try_combine (insn, (((links)->fld[0]).rtx),
         (rtx) 0, &new_direct_jump_p)) != 0)
       goto retry;



   for (links = (((insn)->fld[5]).rtx); links; links = (((links)->fld[1]).rtx))
     {
       rtx link = (((links)->fld[0]).rtx);



       if (((enum rtx_code) (link)->code) == NOTE)
  continue;

       for (nextlinks = (((link)->fld[5]).rtx);
     nextlinks;
     nextlinks = (((nextlinks)->fld[1]).rtx))
  if ((next = try_combine (insn, link,
      (((nextlinks)->fld[0]).rtx),
      &new_direct_jump_p)) != 0)
    goto retry;
     }
# 728 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   for (links = (((insn)->fld[5]).rtx); links; links = (((links)->fld[1]).rtx))
     for (nextlinks = (((links)->fld[1]).rtx); nextlinks;
   nextlinks = (((nextlinks)->fld[1]).rtx))
       if ((next = try_combine (insn, (((links)->fld[0]).rtx),
           (((nextlinks)->fld[0]).rtx),
           &new_direct_jump_p)) != 0)
  goto retry;

   if (((enum rtx_code) (insn)->code) != NOTE)
     record_dead_and_set_regs (insn);

 retry:
   ;
 }
    }

  delete_noop_moves (f);

  if (need_refresh)
    {
      update_life_info (refresh_blocks, UPDATE_LIFE_GLOBAL_RM_NOTES,
   1);
    }


  free(refresh_blocks);
  free (reg_nonzero_bits);
  free (reg_sign_bit_copies);
  free (reg_last_death);
  free (reg_last_set);
  free (reg_last_set_value);
  free (reg_last_set_table_tick);
  free (reg_last_set_label);
  free (reg_last_set_invalid);
  free (reg_last_set_mode);
  free (reg_last_set_nonzero_bits);
  free (reg_last_set_sign_bit_copies);
  free (uid_cuid);

  {
    struct undo *undo, *next;
    for (undo = undobuf.frees; undo; undo = next)
      {
 next = undo->next;
 free (undo);
      }
    undobuf.frees = 0;
  }

  total_attempts += combine_attempts;
  total_merges += combine_merges;
  total_extras += combine_extras;
  total_successes += combine_successes;

  nonzero_sign_valid = 0;


  init_recog ();

  return new_direct_jump_p;
}



static void
init_reg_last_arrays ()
{
  unsigned int nregs = combine_max_regno;

  ((__builtin_object_size ((char *) reg_last_death, 0) != (size_t) -1) ? __builtin___memset_chk ((char *) reg_last_death, 0, nregs * sizeof (rtx), __builtin_object_size ((char *) reg_last_death, 0)) : __inline_memset_chk ((char *) reg_last_death, 0, nregs * sizeof (rtx)));
  ((__builtin_object_size ((char *) reg_last_set, 0) != (size_t) -1) ? __builtin___memset_chk ((char *) reg_last_set, 0, nregs * sizeof (rtx), __builtin_object_size ((char *) reg_last_set, 0)) : __inline_memset_chk ((char *) reg_last_set, 0, nregs * sizeof (rtx)));
  ((__builtin_object_size ((char *) reg_last_set_value, 0) != (size_t) -1) ? __builtin___memset_chk ((char *) reg_last_set_value, 0, nregs * sizeof (rtx), __builtin_object_size ((char *) reg_last_set_value, 0)) : __inline_memset_chk ((char *) reg_last_set_value, 0, nregs * sizeof (rtx)));
  ((__builtin_object_size ((char *) reg_last_set_table_tick, 0) != (size_t) -1) ? __builtin___memset_chk ((char *) reg_last_set_table_tick, 0, nregs * sizeof (int), __builtin_object_size ((char *) reg_last_set_table_tick, 0)) : __inline_memset_chk ((char *) reg_last_set_table_tick, 0, nregs * sizeof (int)));
  ((__builtin_object_size ((char *) reg_last_set_label, 0) != (size_t) -1) ? __builtin___memset_chk ((char *) reg_last_set_label, 0, nregs * sizeof (int), __builtin_object_size ((char *) reg_last_set_label, 0)) : __inline_memset_chk ((char *) reg_last_set_label, 0, nregs * sizeof (int)));
  ((__builtin_object_size (reg_last_set_invalid, 0) != (size_t) -1) ? __builtin___memset_chk (reg_last_set_invalid, 0, nregs * sizeof (char), __builtin_object_size (reg_last_set_invalid, 0)) : __inline_memset_chk (reg_last_set_invalid, 0, nregs * sizeof (char)));
  ((__builtin_object_size ((char *) reg_last_set_mode, 0) != (size_t) -1) ? __builtin___memset_chk ((char *) reg_last_set_mode, 0, nregs * sizeof (enum machine_mode), __builtin_object_size ((char *) reg_last_set_mode, 0)) : __inline_memset_chk ((char *) reg_last_set_mode, 0, nregs * sizeof (enum machine_mode)));
  ((__builtin_object_size ((char *) reg_last_set_nonzero_bits, 0) != (size_t) -1) ? __builtin___memset_chk ((char *) reg_last_set_nonzero_bits, 0, nregs * sizeof (long long), __builtin_object_size ((char *) reg_last_set_nonzero_bits, 0)) : __inline_memset_chk ((char *) reg_last_set_nonzero_bits, 0, nregs * sizeof (long long)));
  ((__builtin_object_size (reg_last_set_sign_bit_copies, 0) != (size_t) -1) ? __builtin___memset_chk (reg_last_set_sign_bit_copies, 0, nregs * sizeof (char), __builtin_object_size (reg_last_set_sign_bit_copies, 0)) : __inline_memset_chk (reg_last_set_sign_bit_copies, 0, nregs * sizeof (char)));
}



static void
setup_incoming_promotions ()
{
# 837 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
}
# 850 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static void
set_nonzero_bits_and_sign_copies (x, set, data)
     rtx x;
     rtx set;
     void *data __attribute__ ((__unused__));
{
  unsigned int num;

  if (((enum rtx_code) (x)->code) == REG
      && (((x)->fld[0]).rtuint) >= 53


      && ! bitmap_bit_p ((((basic_block_info)->data.bb[(0)]))->global_live_at_start, (((x)->fld[0]).rtuint))
      && (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) <= (8 * 8))
    {
      if (set == 0 || ((enum rtx_code) (set)->code) == CLOBBER)
 {
   reg_nonzero_bits[(((x)->fld[0]).rtuint)] = mode_mask_array[(int) (((enum machine_mode) (x)->mode))];
   reg_sign_bit_copies[(((x)->fld[0]).rtuint)] = 1;
   return;
 }



      set = expand_field_assignment (set);




      if ((((set)->fld[0]).rtx) == x
   || (((enum rtx_code) ((((set)->fld[0]).rtx))->code) == SUBREG
       && ((mode_size[(int) (((enum machine_mode) ((((set)->fld[0]).rtx))->mode))])
    > (mode_size[(int) (((enum machine_mode) (((((((set)->fld[0]).rtx))->fld[0]).rtx))->mode))]))
       && ((((((set)->fld[0]).rtx))->fld[0]).rtx) == x))
 {
   rtx src = (((set)->fld[1]).rtx);
# 909 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   if (reg_nonzero_bits[(((x)->fld[0]).rtuint)] != ~(unsigned long long) 0)
     reg_nonzero_bits[(((x)->fld[0]).rtuint)]
       |= nonzero_bits (src, nonzero_bits_mode);
   num = num_sign_bit_copies ((((set)->fld[1]).rtx), ((enum machine_mode) (x)->mode));
   if (reg_sign_bit_copies[(((x)->fld[0]).rtuint)] == 0
       || reg_sign_bit_copies[(((x)->fld[0]).rtuint)] > num)
     reg_sign_bit_copies[(((x)->fld[0]).rtuint)] = num;
 }
      else
 {
   reg_nonzero_bits[(((x)->fld[0]).rtuint)] = mode_mask_array[(int) (((enum machine_mode) (x)->mode))];
   reg_sign_bit_copies[(((x)->fld[0]).rtuint)] = 1;
 }
    }
}
# 935 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static int
can_combine_p (insn, i3, pred, succ, pdest, psrc)
     rtx insn;
     rtx i3;
     rtx pred __attribute__ ((__unused__));
     rtx succ;
     rtx *pdest, *psrc;
{
  int i;
  rtx set = 0, src, dest;
  rtx p;



  int all_adjacent = (succ ? (next_active_insn (insn) == succ
         && next_active_insn (succ) == i3)
        : next_active_insn (insn) == i3);
# 968 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (((enum rtx_code) ((((insn)->fld[3]).rtx))->code) == SET)
    set = (((insn)->fld[3]).rtx);
  else if (((enum rtx_code) ((((insn)->fld[3]).rtx))->code) == PARALLEL
    && ((enum rtx_code) (((((((((insn)->fld[3]).rtx))->fld[0]).rtvec))->elem[0]))->code) == SET)
    {
      for (i = 0; i < ((((((((insn)->fld[3]).rtx))->fld[0]).rtvec))->num_elem); i++)
 {
   rtx elt = ((((((((insn)->fld[3]).rtx))->fld[0]).rtvec))->elem[i]);

   switch (((enum rtx_code) (elt)->code))
     {


     case USE:
# 995 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
       if (((enum rtx_code) ((((elt)->fld[0]).rtx))->code) == REG
    && ((enum rtx_code) ((((i3)->fld[3]).rtx))->code) == PARALLEL)
  {
    rtx i3pat = (((i3)->fld[3]).rtx);
    int i = (((((i3pat)->fld[0]).rtvec))->num_elem) - 1;
    unsigned int regno = ((((((elt)->fld[0]).rtx))->fld[0]).rtuint);

    do
      {
        rtx i3elt = (((((i3pat)->fld[0]).rtvec))->elem[i]);

        if (((enum rtx_code) (i3elt)->code) == USE
     && ((enum rtx_code) ((((i3elt)->fld[0]).rtx))->code) == REG
     && (((((((i3elt)->fld[0]).rtx))->fld[0]).rtuint) == regno
         ? reg_set_between_p ((((elt)->fld[0]).rtx),
         (((insn)->fld[1]).rtx), i3)
         : regno >= 53))
   return 0;
      }
    while (--i >= 0);
  }
       break;


     case CLOBBER:
       break;

     case SET:


       if (find_reg_note (insn, REG_UNUSED, (((elt)->fld[0]).rtx))
    && ! side_effects_p (elt))
  break;



       if (set)
  return 0;

       set = elt;
       break;

     default:

       return 0;
     }
 }

      if (set == 0


   || ((enum rtx_code) ((((set)->fld[1]).rtx))->code) == ASM_OPERANDS)
 return 0;
    }
  else
    return 0;

  if (set == 0)
    return 0;

  set = expand_field_assignment (set);
  src = (((set)->fld[1]).rtx), dest = (((set)->fld[0]).rtx);


  if (dest == (global_rtl[GR_STACK_POINTER])

      || ((enum rtx_code) (dest)->code) == ZERO_EXTRACT || ((enum rtx_code) (dest)->code) == STRICT_LOW_PART


      || (rtx_equal_p (src, dest) && find_reg_note (insn, REG_EQUAL, (rtx) 0))

      || ((enum rtx_code) (src)->code) == ASM_OPERANDS

      || ((enum rtx_code) (src)->code) == CALL

      || (((enum rtx_code) (i3)->code) == CALL_INSN
   && (find_reg_fusage (i3, USE, dest)
       || (((enum rtx_code) (dest)->code) == REG
    && (((dest)->fld[0]).rtuint) < 53
    && global_regs[(((dest)->fld[0]).rtuint)])))

      || 0
      || (succ && 0)
# 1087 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      || (succ && ! all_adjacent
   && reg_used_between_p (dest, succ, i3))
# 1098 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      || (! all_adjacent
   && (((((enum rtx_code) (src)->code) != MEM
  || ! find_reg_note (insn, REG_EQUIV, src))
        && use_crosses_set_p (src, ((((insn)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (insn) : uid_cuid[(((insn)->fld[0]).rtint)])))
       || (((enum rtx_code) (src)->code) == ASM_OPERANDS && ((src)->volatil))
       || ((enum rtx_code) (src)->code) == UNSPEC_VOLATILE))


      || find_reg_note (i3, REG_NO_CONFLICT, dest)
      || (succ && find_reg_note (succ, REG_NO_CONFLICT, dest))





      || (((((insn)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (insn) : uid_cuid[(((insn)->fld[0]).rtint)]) < last_call_cuid && ! (((enum rtx_code) (src)->code) == LABEL_REF || ((enum rtx_code) (src)->code) == SYMBOL_REF || ((enum rtx_code) (src)->code) == CONST_INT || ((enum rtx_code) (src)->code) == CONST_DOUBLE || ((enum rtx_code) (src)->code) == CONST || ((enum rtx_code) (src)->code) == HIGH || ((enum rtx_code) (src)->code) == CONST_VECTOR || ((enum rtx_code) (src)->code) == CONSTANT_P_RTX)))
    return 0;


  if (((enum rtx_code) (dest)->code) == REG)
    {
# 1128 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if (((enum rtx_code) (src)->code) == REG
   && (((((dest)->fld[0]).rtuint) < 53
        && ! ix86_hard_regno_mode_ok (((((dest)->fld[0]).rtuint)), (((enum machine_mode) (dest)->mode))))







       || ((((src)->fld[0]).rtuint) < 53
    && ! ix86_hard_regno_mode_ok (((((src)->fld[0]).rtuint)), (((enum machine_mode) (src)->mode))))))
 return 0;
    }
  else if (((enum rtx_code) (dest)->code) != CC0)
    return 0;




  if (((enum rtx_code) ((((i3)->fld[3]).rtx))->code) == PARALLEL)
    for (i = ((((((((i3)->fld[3]).rtx))->fld[0]).rtvec))->num_elem) - 1; i >= 0; i--)
      if (((enum rtx_code) (((((((((i3)->fld[3]).rtx))->fld[0]).rtvec))->elem[i]))->code) == CLOBBER
   && (reg_overlap_mentioned_p ((((((((((((i3)->fld[3]).rtx))->fld[0]).rtvec))->elem[i]))->fld[0]).rtx),
           src)
       || rtx_equal_p ((((((((((((i3)->fld[3]).rtx))->fld[0]).rtvec))->elem[i]))->fld[0]).rtx), dest)))
 return 0;




  if (((enum rtx_code) (src)->code) == ASM_OPERANDS || volatile_refs_p (src))
    {

      if (succ != 0 && volatile_refs_p ((((succ)->fld[3]).rtx)))
        return 0;

      for (p = (((insn)->fld[2]).rtx); p != i3; p = (((p)->fld[2]).rtx))
        if (((rtx_class[(int) (((enum rtx_code) (p)->code))]) == 'i') && p != succ && volatile_refs_p ((((p)->fld[3]).rtx)))
   return 0;
    }




  if (((enum rtx_code) (src)->code) == ASM_OPERANDS
      && ((enum rtx_code) (dest)->code) == REG && (((dest)->fld[0]).rtuint) < 53)
    return 0;




  for (p = (((insn)->fld[2]).rtx); p != i3; p = (((p)->fld[2]).rtx))
    if (((rtx_class[(int) (((enum rtx_code) (p)->code))]) == 'i') && p != succ && volatile_insn_p ((((p)->fld[3]).rtx)))
      return 0;
# 1218 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  *pdest = dest;
  *psrc = src;

  return 1;
}




static int
sets_function_arg_p (pat)
     rtx pat;
{
  int i;
  rtx inner_dest;

  switch (((enum rtx_code) (pat)->code))
    {
    case INSN:
      return sets_function_arg_p ((((pat)->fld[3]).rtx));

    case PARALLEL:
      for (i = (((((pat)->fld[0]).rtvec))->num_elem); --i >= 0;)
 if (sets_function_arg_p ((((((pat)->fld[0]).rtvec))->elem[i])))
   return 1;

      break;

    case SET:
      inner_dest = (((pat)->fld[0]).rtx);
      while (((enum rtx_code) (inner_dest)->code) == STRICT_LOW_PART
      || ((enum rtx_code) (inner_dest)->code) == SUBREG
      || ((enum rtx_code) (inner_dest)->code) == ZERO_EXTRACT)
 inner_dest = (((inner_dest)->fld[0]).rtx);

      return (((enum rtx_code) (inner_dest)->code) == REG
       && (((inner_dest)->fld[0]).rtuint) < 53
       && ix86_function_arg_regno_p ((((inner_dest)->fld[0]).rtuint)));

    default:
      break;
    }

  return 0;
}
# 1301 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static int
combinable_i3pat (i3, loc, i2dest, i1dest, i1_not_in_src, pi3dest_killed)
     rtx i3;
     rtx *loc;
     rtx i2dest;
     rtx i1dest;
     int i1_not_in_src;
     rtx *pi3dest_killed;
{
  rtx x = *loc;

  if (((enum rtx_code) (x)->code) == SET)
    {
      rtx set = expand_field_assignment (x);
      rtx dest = (((set)->fld[0]).rtx);
      rtx src = (((set)->fld[1]).rtx);
      rtx inner_dest = dest;





      do_SUBST(&(*loc), (set));

      while (((enum rtx_code) (inner_dest)->code) == STRICT_LOW_PART
      || ((enum rtx_code) (inner_dest)->code) == SUBREG
      || ((enum rtx_code) (inner_dest)->code) == ZERO_EXTRACT)
 inner_dest = (((inner_dest)->fld[0]).rtx);
# 1356 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if ((inner_dest != dest
    && (reg_overlap_mentioned_p (i2dest, inner_dest)
        || (i1dest && reg_overlap_mentioned_p (i1dest, inner_dest))))
# 1370 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   || (((enum rtx_code) (inner_dest)->code) == REG
       && (((inner_dest)->fld[0]).rtuint) < 53
       && (! ix86_hard_regno_mode_ok (((((inner_dest)->fld[0]).rtuint)), (((enum machine_mode) (inner_dest)->mode)))))

   || (i1_not_in_src && reg_overlap_mentioned_p (i1dest, src)))
 return 0;






      if (pi3dest_killed && ((enum rtx_code) (dest)->code) == REG
   && reg_referenced_p (dest, (((i3)->fld[3]).rtx))
   && (((dest)->fld[0]).rtuint) != 20

   && (((dest)->fld[0]).rtuint) != 6


   && ((((dest)->fld[0]).rtuint) != 16
       || ! fixed_regs [(((dest)->fld[0]).rtuint)])

   && (((dest)->fld[0]).rtuint) != 7)
 {
   if (*pi3dest_killed)
     return 0;

   *pi3dest_killed = dest;
 }
    }

  else if (((enum rtx_code) (x)->code) == PARALLEL)
    {
      int i;

      for (i = 0; i < (((((x)->fld[0]).rtvec))->num_elem); i++)
 if (! combinable_i3pat (i3, &(((((x)->fld[0]).rtvec))->elem[i]), i2dest, i1dest,
    i1_not_in_src, pi3dest_killed))
   return 0;
    }

  return 1;
}




static int
contains_muldiv (x)
     rtx x;
{
  switch (((enum rtx_code) (x)->code))
    {
    case MOD: case DIV: case UMOD: case UDIV:
      return 1;

    case MULT:
      return ! (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
  && exact_log2_wide ((unsigned long long) (((((((x)->fld[1]).rtx))->fld[0]).rtwint))) >= 0);
    default:
      switch ((rtx_class[(int) (((enum rtx_code) (x)->code))]))
 {
 case 'c': case '<': case '2':
   return contains_muldiv ((((x)->fld[0]).rtx))
     || contains_muldiv ((((x)->fld[1]).rtx));

 case '1':
   return contains_muldiv ((((x)->fld[0]).rtx));

 default:
   return 0;
 }
    }
}





static int
cant_combine_insn_p (insn)
     rtx insn;
{
  rtx set;
  rtx src, dest;




  if (! ((rtx_class[(int) (((enum rtx_code) (insn)->code))]) == 'i'))
    return 1;
# 1469 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  set = (((rtx_class[(int) (((enum rtx_code) (insn)->code))]) == 'i') ? (((enum rtx_code) ((((insn)->fld[3]).rtx))->code) == SET ? (((insn)->fld[3]).rtx) : single_set_2 (insn, (((insn)->fld[3]).rtx))) : (rtx) 0);
  if (! set)
    return 0;
  src = (((set)->fld[1]).rtx);
  dest = (((set)->fld[0]).rtx);
  if (((enum rtx_code) (src)->code) == SUBREG)
    src = (((src)->fld[0]).rtx);
  if (((enum rtx_code) (dest)->code) == SUBREG)
    dest = (((dest)->fld[0]).rtx);
  if ((((enum rtx_code) (src)->code) == REG) && (((enum rtx_code) (dest)->code) == REG)
      && (((((src)->fld[0]).rtuint) < 53
    && ! fixed_regs[(((src)->fld[0]).rtuint)])
   || ((((dest)->fld[0]).rtuint) < 53
       && ! fixed_regs[(((dest)->fld[0]).rtuint)])))
    return 1;

  return 0;
}
# 1504 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static rtx
try_combine (i3, i2, i1, new_direct_jump_p)
     rtx i3, i2, i1;
     int *new_direct_jump_p;
{

  rtx newpat, newi2pat = 0;
  int substed_i2 = 0, substed_i1 = 0;

  int added_sets_1, added_sets_2;

  int total_sets;

  int i2_is_used;

  int insn_code_number, i2_code_number = 0, other_code_number = 0;



  rtx i3dest_killed = 0;

  rtx i2dest, i2src, i1dest = 0, i1src = 0;

  rtx i2pat;

  int i2dest_in_i2src = 0, i1dest_in_i1src = 0, i2dest_in_i1src = 0;
  int i1_feeds_i3 = 0;

  rtx new_i3_notes, new_i2_notes;

  int i3_subst_into_i2 = 0;

  int have_mult = 0;

  int maxreg;
  rtx temp;
  rtx link;
  int i;



  if (cant_combine_insn_p (i3)
      || cant_combine_insn_p (i2)
      || (i1 && cant_combine_insn_p (i1))
# 1556 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      )
    return 0;

  combine_attempts++;
  undobuf.other_insn = 0;


  ((newpat_used_regs) = ((HARD_REG_ELT_TYPE) (0)));



  if (i1 && ((((i1)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i1) : uid_cuid[(((i1)->fld[0]).rtint)]) > ((((i2)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i2) : uid_cuid[(((i2)->fld[0]).rtint)]))
    temp = i1, i1 = i2, i2 = temp;

  added_links_insn = 0;
# 1588 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (i1 == 0 && ((enum rtx_code) (i3)->code) == INSN && ((enum rtx_code) ((((i3)->fld[3]).rtx))->code) == SET
      && ((enum rtx_code) (((((((i3)->fld[3]).rtx))->fld[1]).rtx))->code) == REG
      && (((((((((i3)->fld[3]).rtx))->fld[1]).rtx))->fld[0]).rtuint) >= 53
      && find_reg_note (i3, REG_DEAD, ((((((i3)->fld[3]).rtx))->fld[1]).rtx))
      && ((enum rtx_code) ((((i2)->fld[3]).rtx))->code) == PARALLEL
      && ! side_effects_p (((((((i3)->fld[3]).rtx))->fld[0]).rtx))




      && ((enum rtx_code) (((((((i3)->fld[3]).rtx))->fld[0]).rtx))->code) != ZERO_EXTRACT
      && ((enum rtx_code) (((((((i3)->fld[3]).rtx))->fld[0]).rtx))->code) != STRICT_LOW_PART
      && ! reg_overlap_mentioned_p (((((((i3)->fld[3]).rtx))->fld[1]).rtx),
        ((((((i3)->fld[3]).rtx))->fld[0]).rtx))
      && next_real_insn (i2) == i3)
    {
      rtx p2 = (((i2)->fld[3]).rtx);
# 1616 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      for (i = 0; i < (((((p2)->fld[0]).rtvec))->num_elem); i++)
 if ((((enum rtx_code) ((((((p2)->fld[0]).rtvec))->elem[i]))->code) == SET
      || ((enum rtx_code) ((((((p2)->fld[0]).rtvec))->elem[i]))->code) == CLOBBER)
     && reg_overlap_mentioned_p (((((((i3)->fld[3]).rtx))->fld[0]).rtx),
     ((((((((p2)->fld[0]).rtvec))->elem[i]))->fld[0]).rtx)))
   break;

      if (i == (((((p2)->fld[0]).rtvec))->num_elem))
 for (i = 0; i < (((((p2)->fld[0]).rtvec))->num_elem); i++)
   if ((((enum rtx_code) ((((((p2)->fld[0]).rtvec))->elem[i]))->code) == SET
        || ((enum rtx_code) ((((((p2)->fld[0]).rtvec))->elem[i]))->code) == CLOBBER)
       && ((((((((p2)->fld[0]).rtvec))->elem[i]))->fld[0]).rtx) == ((((((i3)->fld[3]).rtx))->fld[1]).rtx))
     {
       combine_merges++;

       subst_insn = i3;
       subst_low_cuid = ((((i2)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i2) : uid_cuid[(((i2)->fld[0]).rtint)]);

       added_sets_2 = added_sets_1 = 0;
       i2dest = ((((((i3)->fld[3]).rtx))->fld[1]).rtx);




       do_SUBST(&(((((((((p2)->fld[0]).rtvec))->elem[i]))->fld[0]).rtx)), (((((((i3)->fld[3]).rtx))->fld[0]).rtx)));


       newpat = p2;
       i3_subst_into_i2 = 1;
       goto validate_replacement;
     }
    }




  if (i1 == 0
      && (temp = (((rtx_class[(int) (((enum rtx_code) (i2)->code))]) == 'i') ? (((enum rtx_code) ((((i2)->fld[3]).rtx))->code) == SET ? (((i2)->fld[3]).rtx) : single_set_2 (i2, (((i2)->fld[3]).rtx))) : (rtx) 0)) != 0
      && (((enum rtx_code) ((((temp)->fld[1]).rtx))->code) == CONST_INT
   || ((enum rtx_code) ((((temp)->fld[1]).rtx))->code) == CONST_DOUBLE)
      && ((enum rtx_code) ((((temp)->fld[0]).rtx))->code) == REG
      && (mode_class[(int) (((enum machine_mode) ((((temp)->fld[0]).rtx))->mode))]) == MODE_INT
      && (mode_size[(int) (((enum machine_mode) ((((temp)->fld[0]).rtx))->mode))]) == 2 * ((target_flags & 0x02000000) ? 8 : 4)
      && ((enum rtx_code) ((((i3)->fld[3]).rtx))->code) == SET
      && ((enum rtx_code) (((((((i3)->fld[3]).rtx))->fld[0]).rtx))->code) == SUBREG
      && (((((((((i3)->fld[3]).rtx))->fld[0]).rtx))->fld[0]).rtx) == (((temp)->fld[0]).rtx)
      && (mode_class[(int) (((enum machine_mode) (((((((i3)->fld[3]).rtx))->fld[0]).rtx))->mode))]) == MODE_INT
      && (mode_size[(int) (((enum machine_mode) (((((((i3)->fld[3]).rtx))->fld[0]).rtx))->mode))]) == ((target_flags & 0x02000000) ? 8 : 4)
      && ((enum rtx_code) (((((((i3)->fld[3]).rtx))->fld[1]).rtx))->code) == CONST_INT)
    {
      long long lo, hi;

      if (((enum rtx_code) ((((temp)->fld[1]).rtx))->code) == CONST_INT)
 lo = ((((((temp)->fld[1]).rtx))->fld[0]).rtwint), hi = lo < 0 ? -1 : 0;
      else
 {
   lo = ((((((temp)->fld[1]).rtx))->fld[1]).rtwint);
   hi = ((((((temp)->fld[1]).rtx))->fld[2]).rtwint);
 }

      if (subreg_lowpart_p (((((((i3)->fld[3]).rtx))->fld[0]).rtx)))
 {


   if ((8 * 8) < ((target_flags & 0x02000000) ? 64 : 32))
     fancy_abort ("/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c", 1681, __FUNCTION__);

   lo &= ~((((unsigned long long) (1) << (((target_flags & 0x02000000) ? 64 : 32) - 1)) << 1) - 1);
   lo |= ((((((((((i3)->fld[3]).rtx))->fld[1]).rtx))->fld[0]).rtwint)
   & ((((unsigned long long) (1) << (((target_flags & 0x02000000) ? 64 : 32) - 1)) << 1) - 1));
 }
      else if ((8 * 8) == ((target_flags & 0x02000000) ? 64 : 32))
 hi = (((((((((i3)->fld[3]).rtx))->fld[1]).rtx))->fld[0]).rtwint);
      else if ((8 * 8) >= 2 * ((target_flags & 0x02000000) ? 64 : 32))
 {
   int sign = -(int) ((unsigned long long) lo
        >> ((8 * 8) - 1));

   lo &= ~ ((((unsigned long long) ((((unsigned long long) (1) << (((target_flags & 0x02000000) ? 64 : 32) - 1)) << 1) - 1) << (((target_flags & 0x02000000) ? 64 : 32) - 1)) << 1));

   lo |= ((((unsigned long long) ((((((((((i3)->fld[3]).rtx))->fld[1]).rtx))->fld[0]).rtwint)) << (((target_flags & 0x02000000) ? 64 : 32) - 1)) << 1));

   if (hi == sign)
     hi = lo < 0 ? -1 : 0;
 }
      else


 fancy_abort ("/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c", 1704, __FUNCTION__);

      combine_merges++;
      subst_insn = i3;
      subst_low_cuid = ((((i2)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i2) : uid_cuid[(((i2)->fld[0]).rtint)]);
      added_sets_2 = added_sets_1 = 0;
      i2dest = (((temp)->fld[0]).rtx);

      do_SUBST(&((((temp)->fld[1]).rtx)), (immed_double_const (lo, hi, ((enum machine_mode) ((((temp)->fld[0]).rtx))->mode))));


      newpat = (((i2)->fld[3]).rtx);
      goto validate_replacement;
    }
# 1733 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (i1 == 0 && ((enum rtx_code) ((((i2)->fld[3]).rtx))->code) == PARALLEL
      && ((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->num_elem) >= 2
      && ((enum rtx_code) (((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->elem[0]))->code) == SET
      && ((mode_class[(int) (((enum machine_mode) ((((((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->elem[0]))->fld[0]).rtx))->mode))])
   == MODE_CC)
      && ((enum rtx_code) ((((((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->elem[0]))->fld[1]).rtx))->code) == COMPARE
      && ((((((((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->elem[0]))->fld[1]).rtx))->fld[1]).rtx) == (const_int_rtx[64])
      && ((enum rtx_code) (((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->elem[1]))->code) == SET
      && ((enum rtx_code) ((((((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->elem[1]))->fld[0]).rtx))->code) == REG
      && rtx_equal_p (((((((((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->elem[0]))->fld[1]).rtx))->fld[0]).rtx),
        (((((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->elem[1]))->fld[1]).rtx)))
    {
      for (i = ((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->num_elem) - 1; i >= 2; i--)
 if (((enum rtx_code) (((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->elem[i]))->code) != CLOBBER)
   break;

      if (i == 1)
 {





   subst_prev_insn = i1
     = gen_rtx_fmt_iuueiee (INSN, (VOIDmode), ((((i2)->fld[0]).rtint)), ((rtx) 0), (i2), (((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->elem[1])), (-1), ((rtx) 0), ((rtx) 0));



   do_SUBST(&((((i2)->fld[3]).rtx)), (((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->elem[0])));
   do_SUBST(&((((((((((i2)->fld[3]).rtx))->fld[1]).rtx))->fld[0]).rtx)), (((((((i1)->fld[3]).rtx))->fld[0]).rtx)));

 }
    }



  if (! can_combine_p (i2, i3, i1, (rtx) 0, &i2dest, &i2src)
      || (i1 && ! can_combine_p (i1, i3, (rtx) 0, i2, &i1dest, &i1src)))
    {
      undo_all ();
      return 0;
    }



  i2dest_in_i2src = reg_overlap_mentioned_p (i2dest, i2src);
  i1dest_in_i1src = i1 && reg_overlap_mentioned_p (i1dest, i1src);
  i2dest_in_i1src = i1 && reg_overlap_mentioned_p (i2dest, i1src);



  i1_feeds_i3 = i1 && ! reg_overlap_mentioned_p (i1dest, i2src);


  if (! combinable_i3pat (i3, &(((i3)->fld[3]).rtx), i2dest, i1dest,
     i1 && i2dest_in_i1src && i1_feeds_i3,
     &i3dest_killed))
    {
      undo_all ();
      return 0;
    }




  if (((enum rtx_code) (i2src)->code) == MULT
      || (i1 != 0 && ((enum rtx_code) (i1src)->code) == MULT)
      || (((enum rtx_code) ((((i3)->fld[3]).rtx))->code) == SET
   && ((enum rtx_code) (((((((i3)->fld[3]).rtx))->fld[1]).rtx))->code) == MULT))
    have_mult = 1;
# 1842 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  added_sets_2 = ! dead_or_set_p (i3, i2dest);

  added_sets_1
    = i1 && ! (i1_feeds_i3 ? dead_or_set_p (i3, i1dest)
        : (dead_or_set_p (i3, i1dest) || dead_or_set_p (i2, i1dest)));
# 1855 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  i2pat = (((enum rtx_code) ((((i2)->fld[3]).rtx))->code) == PARALLEL
    ? gen_rtx_fmt_ee (SET, (VOIDmode), (i2dest), (i2src))
    : (((i2)->fld[3]).rtx));

  if (added_sets_2)
    i2pat = copy_rtx (i2pat);

  combine_merges++;



  maxreg = max_reg_num ();

  subst_insn = i3;
# 1884 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (flag_expensive_optimizations)
    {



      if (i1)
 {
   subst_low_cuid = ((((i1)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i1) : uid_cuid[(((i1)->fld[0]).rtint)]);
   i1src = subst (i1src, (global_rtl[GR_PC]), (global_rtl[GR_PC]), 0, 0);
 }
      else
 {
   subst_low_cuid = ((((i2)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i2) : uid_cuid[(((i2)->fld[0]).rtint)]);
   i2src = subst (i2src, (global_rtl[GR_PC]), (global_rtl[GR_PC]), 0, 0);
 }
    }
# 1913 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (i1 == 0 && added_sets_2 && ((enum rtx_code) ((((i3)->fld[3]).rtx))->code) == SET
      && ((enum rtx_code) (((((((i3)->fld[3]).rtx))->fld[1]).rtx))->code) == COMPARE
      && (((((((((i3)->fld[3]).rtx))->fld[1]).rtx))->fld[1]).rtx) == (const_int_rtx[64])
      && rtx_equal_p ((((((((((i3)->fld[3]).rtx))->fld[1]).rtx))->fld[0]).rtx), i2dest))
    {

      rtx *cc_use;
      enum machine_mode compare_mode;


      newpat = (((i3)->fld[3]).rtx);
      do_SUBST(&(((((((newpat)->fld[1]).rtx))->fld[0]).rtx)), (i2src));

      i2_is_used = 1;







      if (undobuf.other_insn == 0
   && (cc_use = find_single_use ((((newpat)->fld[0]).rtx), i3,
     &undobuf.other_insn))
   && ((compare_mode = ix86_cc_mode ((((enum rtx_code) (*cc_use)->code)), (i2src), ((const_int_rtx[64]))))

       != ((enum machine_mode) ((((newpat)->fld[0]).rtx))->mode)))
 {
   unsigned int regno = ((((((newpat)->fld[0]).rtx))->fld[0]).rtuint);
   rtx new_dest = gen_rtx_REG (compare_mode, regno);

   if (regno < 53
       || ((((reg_n_info)->data.reg[regno])->sets) == 1 && ! added_sets_2
    && ! (((((newpat)->fld[0]).rtx))->volatil)))
     {
       if (regno >= 53)
  do_SUBST(&((cfun->emit->x_regno_reg_rtx)[regno]), (new_dest));

       do_SUBST(&((((newpat)->fld[0]).rtx)), (new_dest));
       do_SUBST(&((((*cc_use)->fld[0]).rtx)), (new_dest));
       do_SUBST(&((((newpat)->fld[1]).rtx)), (gen_rtx_fmt_ee (COMPARE, (compare_mode), (i2src), ((const_int_rtx[64])))));

     }
   else
     undobuf.other_insn = 0;
 }

    }
  else

    {
      n_occurrences = 0;





      subst_low_cuid = ((((i2)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i2) : uid_cuid[(((i2)->fld[0]).rtint)]);
      newpat = subst ((((i3)->fld[3]).rtx), i2dest, i2src, 0,
        ! i1_feeds_i3 && i1dest_in_i1src);
      substed_i2 = 1;


      i2_is_used = n_occurrences;
    }




  if (i1 && ((enum rtx_code) (newpat)->code) != CLOBBER)
    {




      if (! combinable_i3pat ((rtx) 0, &newpat, i1dest, (rtx) 0,
         0, (rtx*) 0))
 {
   undo_all ();
   return 0;
 }

      n_occurrences = 0;
      subst_low_cuid = ((((i1)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i1) : uid_cuid[(((i1)->fld[0]).rtint)]);
      newpat = subst (newpat, i1dest, i1src, 0, 0);
      substed_i1 = 1;
    }



  if ((0 != 0
       && i2_is_used + added_sets_2 > 1)
      || (i1 != 0 && 0 != 0
   && (n_occurrences + added_sets_1 + (added_sets_2 && ! i1_feeds_i3)
       > 1))


      || max_reg_num () != maxreg

      || ((enum rtx_code) (newpat)->code) == CLOBBER


      || (((enum rtx_code) (newpat)->code) == SET && ((enum rtx_code) ((((newpat)->fld[1]).rtx))->code) == MULT
   && ! have_mult))
    {
      undo_all ();
      return 0;
    }






  if (added_sets_1 || added_sets_2)
    {
      combine_extras++;

      if (((enum rtx_code) (newpat)->code) == PARALLEL)
 {
   rtvec old = (((newpat)->fld[0]).rtvec);
   total_sets = (((((newpat)->fld[0]).rtvec))->num_elem) + added_sets_1 + added_sets_2;
   newpat = gen_rtx_fmt_E (PARALLEL, (VOIDmode), (rtvec_alloc (total_sets)));
   ((__builtin_object_size ((((newpat)->fld[0]).rtvec)->elem, 0) != (size_t) -1) ? __builtin___memcpy_chk ((((newpat)->fld[0]).rtvec)->elem, &old->elem[0], sizeof (old->elem[0]) * old->num_elem, __builtin_object_size ((((newpat)->fld[0]).rtvec)->elem, 0)) : __inline_memcpy_chk ((((newpat)->fld[0]).rtvec)->elem, &old->elem[0], sizeof (old->elem[0]) * old->num_elem));

 }
      else
 {
   rtx old = newpat;
   total_sets = 1 + added_sets_1 + added_sets_2;
   newpat = gen_rtx_fmt_E (PARALLEL, (VOIDmode), (rtvec_alloc (total_sets)));
   (((((newpat)->fld[0]).rtvec))->elem[0]) = old;
 }

      if (added_sets_1)
 (((((newpat)->fld[0]).rtvec))->elem[--total_sets])
   = (((enum rtx_code) ((((i1)->fld[3]).rtx))->code) == PARALLEL
      ? gen_rtx_fmt_ee (SET, (VOIDmode), (i1dest), (i1src)) : (((i1)->fld[3]).rtx));

      if (added_sets_2)
 {



   if (i1 == 0)
     (((((newpat)->fld[0]).rtvec))->elem[--total_sets]) = i2pat;
   else

     (((((newpat)->fld[0]).rtvec))->elem[--total_sets])
       = subst (i2pat, i1dest, i1src, 0, 0);
 }
    }



 validate_replacement:


  mark_used_regs_combine (newpat);


  insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);
# 2085 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (insn_code_number < 0 && ((enum rtx_code) (newpat)->code) == PARALLEL
      && (((((newpat)->fld[0]).rtvec))->num_elem) == 2
      && ((enum rtx_code) ((((((newpat)->fld[0]).rtvec))->elem[0]))->code) == SET
      && ((enum rtx_code) ((((((newpat)->fld[0]).rtvec))->elem[1]))->code) == SET
      && ((enum rtx_code) (((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[0]).rtx))->code) == REG
      && find_reg_note (i3, REG_UNUSED, ((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[0]).rtx))
      && ! side_effects_p (((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[1]).rtx))
      && asm_noperands (newpat) < 0)
    {
      newpat = (((((newpat)->fld[0]).rtvec))->elem[0]);
      insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);
    }

  else if (insn_code_number < 0 && ((enum rtx_code) (newpat)->code) == PARALLEL
    && (((((newpat)->fld[0]).rtvec))->num_elem) == 2
    && ((enum rtx_code) ((((((newpat)->fld[0]).rtvec))->elem[0]))->code) == SET
    && ((enum rtx_code) ((((((newpat)->fld[0]).rtvec))->elem[1]))->code) == SET
    && ((enum rtx_code) (((((((((newpat)->fld[0]).rtvec))->elem[0]))->fld[0]).rtx))->code) == REG
    && find_reg_note (i3, REG_UNUSED, ((((((((newpat)->fld[0]).rtvec))->elem[0]))->fld[0]).rtx))
    && ! side_effects_p (((((((((newpat)->fld[0]).rtvec))->elem[0]))->fld[1]).rtx))
    && asm_noperands (newpat) < 0)
    {
      newpat = (((((newpat)->fld[0]).rtvec))->elem[1]);
      insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);
    }







  if (i1 && insn_code_number < 0 && ((enum rtx_code) (newpat)->code) == SET
      && asm_noperands (newpat) < 0)
    {
      rtx m_split, *split;
      rtx ni2dest = i2dest;





      m_split = split_insns (newpat, i3);
# 2136 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if (m_split == 0 && ! reg_overlap_mentioned_p (ni2dest, newpat))
 {


   if (((enum machine_mode) ((((newpat)->fld[0]).rtx))->mode) != ((enum machine_mode) (i2dest)->mode)
       && ((enum machine_mode) ((((newpat)->fld[0]).rtx))->mode) != VOIDmode
       && ((enum rtx_code) (i2dest)->code) == REG
       && ((((i2dest)->fld[0]).rtuint) < 53
    || ((((reg_n_info)->data.reg[(((i2dest)->fld[0]).rtuint)])->sets) == 1 && ! added_sets_2
        && ! ((i2dest)->volatil))))
     ni2dest = gen_rtx_REG (((enum machine_mode) ((((newpat)->fld[0]).rtx))->mode),
       (((i2dest)->fld[0]).rtuint));

   m_split = split_insns (gen_rtx_fmt_E (PARALLEL, (VOIDmode), (gen_rtvec (2, newpat, gen_rtx_fmt_e (CLOBBER, (VOIDmode), (ni2dest))))),




     i3);


   if (! m_split && ni2dest != i2dest)
     {
       ni2dest = i2dest;
       m_split = split_insns (gen_rtx_fmt_E (PARALLEL, (VOIDmode), (gen_rtvec (2, newpat, gen_rtx_fmt_e (CLOBBER, (VOIDmode), (i2dest))))),




         i3);
     }
 }



      if (m_split && ((enum rtx_code) (m_split)->code) == SEQUENCE
   && (((((m_split)->fld[0]).rtvec))->num_elem) == 1)
 m_split = ((((((((m_split)->fld[0]).rtvec))->elem[0]))->fld[3]).rtx);

      if (m_split && ((enum rtx_code) (m_split)->code) != SEQUENCE)
 {
   insn_code_number = recog_for_combine (&m_split, i3, &new_i3_notes);
   if (insn_code_number >= 0)
     newpat = m_split;
 }
      else if (m_split && ((enum rtx_code) (m_split)->code) == SEQUENCE
        && (((((m_split)->fld[0]).rtvec))->num_elem) == 2
        && (next_real_insn (i2) == i3
     || ! use_crosses_set_p (((((((((m_split)->fld[0]).rtvec))->elem[0]))->fld[3]).rtx),
        ((((i2)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i2) : uid_cuid[(((i2)->fld[0]).rtint)]))))
 {
   rtx i2set, i3set;
   rtx newi3pat = ((((((((m_split)->fld[0]).rtvec))->elem[1]))->fld[3]).rtx);
   newi2pat = ((((((((m_split)->fld[0]).rtvec))->elem[0]))->fld[3]).rtx);

   i3set = (((rtx_class[(int) (((enum rtx_code) ((((((m_split)->fld[0]).rtvec))->elem[1]))->code))]) == 'i') ? (((enum rtx_code) (((((((((m_split)->fld[0]).rtvec))->elem[1]))->fld[3]).rtx))->code) == SET ? ((((((((m_split)->fld[0]).rtvec))->elem[1]))->fld[3]).rtx) : single_set_2 ((((((m_split)->fld[0]).rtvec))->elem[1]), ((((((((m_split)->fld[0]).rtvec))->elem[1]))->fld[3]).rtx))) : (rtx) 0);
   i2set = (((rtx_class[(int) (((enum rtx_code) ((((((m_split)->fld[0]).rtvec))->elem[0]))->code))]) == 'i') ? (((enum rtx_code) (((((((((m_split)->fld[0]).rtvec))->elem[0]))->fld[3]).rtx))->code) == SET ? ((((((((m_split)->fld[0]).rtvec))->elem[0]))->fld[3]).rtx) : single_set_2 ((((((m_split)->fld[0]).rtvec))->elem[0]), ((((((((m_split)->fld[0]).rtvec))->elem[0]))->fld[3]).rtx))) : (rtx) 0);





   if ((((i2dest)->fld[0]).rtuint) >= 53)
     do_SUBST(&((cfun->emit->x_regno_reg_rtx)[(((i2dest)->fld[0]).rtuint)]), (ni2dest));

   i2_code_number = recog_for_combine (&newi2pat, i2, &new_i2_notes);





   if (i2_code_number >= 0 && i2set && i3set
       && (next_real_insn (i2) == i3
    || ! reg_used_between_p ((((i2set)->fld[0]).rtx), i2, i3)))
     insn_code_number = recog_for_combine (&newi3pat, i3,
        &new_i3_notes);
   if (insn_code_number >= 0)
     newpat = newi3pat;




   if (insn_code_number >= 0)
     {
       rtx new_i3_dest = (((i3set)->fld[0]).rtx);
       rtx new_i2_dest = (((i2set)->fld[0]).rtx);

       while (((enum rtx_code) (new_i3_dest)->code) == ZERO_EXTRACT
       || ((enum rtx_code) (new_i3_dest)->code) == STRICT_LOW_PART
       || ((enum rtx_code) (new_i3_dest)->code) == SUBREG)
  new_i3_dest = (((new_i3_dest)->fld[0]).rtx);

       while (((enum rtx_code) (new_i2_dest)->code) == ZERO_EXTRACT
       || ((enum rtx_code) (new_i2_dest)->code) == STRICT_LOW_PART
       || ((enum rtx_code) (new_i2_dest)->code) == SUBREG)
  new_i2_dest = (((new_i2_dest)->fld[0]).rtx);

       if (((enum rtx_code) (new_i3_dest)->code) == REG
    && ((enum rtx_code) (new_i2_dest)->code) == REG
    && (((new_i3_dest)->fld[0]).rtuint) == (((new_i2_dest)->fld[0]).rtuint))
  (((reg_n_info)->data.reg[(((new_i2_dest)->fld[0]).rtuint)])->sets)++;
     }
 }




      if (insn_code_number < 0 && (split = find_split_point (&newpat, i3)) != 0





   && (((enum machine_mode) (*split)->mode) == ((enum machine_mode) (i2dest)->mode)
       || ((enum machine_mode) (*split)->mode) == VOIDmode
       || (((i2dest)->fld[0]).rtuint) < 53
       || ((((reg_n_info)->data.reg[(((i2dest)->fld[0]).rtuint)])->sets) == 1 && ! added_sets_2
    && ! ((i2dest)->volatil)))
   && (next_real_insn (i2) == i3
       || ! use_crosses_set_p (*split, ((((i2)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i2) : uid_cuid[(((i2)->fld[0]).rtint)])))


   && ! reg_referenced_p (i2dest, newpat))
 {
   rtx newdest = i2dest;
   enum rtx_code split_code = ((enum rtx_code) (*split)->code);
   enum machine_mode split_mode = ((enum machine_mode) (*split)->mode);



   if (((enum machine_mode) (i2dest)->mode) != split_mode && split_mode != VOIDmode)
     {
       newdest = gen_rtx_REG (split_mode, (((i2dest)->fld[0]).rtuint));

       if ((((i2dest)->fld[0]).rtuint) >= 53)
  do_SUBST(&((cfun->emit->x_regno_reg_rtx)[(((i2dest)->fld[0]).rtuint)]), (newdest));
     }




   if (split_code == MULT
       && ((enum rtx_code) ((((*split)->fld[1]).rtx))->code) == CONST_INT
       && ((((((*split)->fld[1]).rtx))->fld[0]).rtwint) > 0
       && (i = exact_log2_wide ((unsigned long long) (((((((*split)->fld[1]).rtx))->fld[0]).rtwint)))) >= 0)
     {
       do_SUBST(&(*split), (gen_rtx_fmt_ee (ASHIFT, (split_mode), ((((*split)->fld[0]).rtx)), (gen_rtx_CONST_INT (VOIDmode, (long long) (i))))));



       split_code = ((enum rtx_code) (*split)->code);
     }




   if (split_code == SUBREG && ((enum rtx_code) ((((*split)->fld[0]).rtx))->code) == MEM)
     do_SUBST(&(*split), (gen_rtx_fmt_e (ZERO_EXTEND, (split_mode), ((((*split)->fld[0]).rtx)))));



   newi2pat = gen_rtx_fmt_ee (SET, (VOIDmode), (newdest), (*split));
   do_SUBST(&(*split), (newdest));
   i2_code_number = recog_for_combine (&newi2pat, i2, &new_i2_notes);



   if (i2_code_number >= 0 && ! (split_code == MULT && ! have_mult))
     insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);
 }
    }
# 2319 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  else if (i1 && insn_code_number < 0 && asm_noperands (newpat) < 0
    && ((enum rtx_code) (newpat)->code) == PARALLEL
    && (((((newpat)->fld[0]).rtvec))->num_elem) == 2
    && ((enum rtx_code) ((((((newpat)->fld[0]).rtvec))->elem[0]))->code) == SET
    && ((enum rtx_code) (((((((((newpat)->fld[0]).rtvec))->elem[0]))->fld[1]).rtx))->code) == SIGN_EXTEND
    && ((enum rtx_code) ((((((newpat)->fld[0]).rtvec))->elem[1]))->code) == SET
    && rtx_equal_p (((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[1]).rtx),
      (((((((((((newpat)->fld[0]).rtvec))->elem[0]))->fld[1]).rtx))->fld[0]).rtx))
    && ! use_crosses_set_p (((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[1]).rtx),
       ((((i2)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i2) : uid_cuid[(((i2)->fld[0]).rtint)]))
    && ((enum rtx_code) (((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[0]).rtx))->code) != ZERO_EXTRACT
    && ((enum rtx_code) (((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[0]).rtx))->code) != STRICT_LOW_PART
    && ! (temp = ((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[0]).rtx),
   (((enum rtx_code) (temp)->code) == REG
    && reg_nonzero_bits[(((temp)->fld[0]).rtuint)] != 0
    && (mode_bitsize[(int) (((enum machine_mode) (temp)->mode))]) < ((target_flags & 0x02000000) ? 64 : 32)
    && (mode_bitsize[(int) (((enum machine_mode) (temp)->mode))]) < (8 * 4)
    && (reg_nonzero_bits[(((temp)->fld[0]).rtuint)]
        != mode_mask_array[(int) (word_mode)])))
    && ! (((enum rtx_code) (((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[0]).rtx))->code) == SUBREG
   && (temp = (((((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[0]).rtx))->fld[0]).rtx),
       (((enum rtx_code) (temp)->code) == REG
        && reg_nonzero_bits[(((temp)->fld[0]).rtuint)] != 0
        && (mode_bitsize[(int) (((enum machine_mode) (temp)->mode))]) < ((target_flags & 0x02000000) ? 64 : 32)
        && (mode_bitsize[(int) (((enum machine_mode) (temp)->mode))]) < (8 * 4)
        && (reg_nonzero_bits[(((temp)->fld[0]).rtuint)]
     != mode_mask_array[(int) (word_mode)]))))
    && ! reg_overlap_mentioned_p (((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[0]).rtx),
      ((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[1]).rtx))
    && ! find_reg_note (i3, REG_UNUSED,
          ((((((((newpat)->fld[0]).rtvec))->elem[0]))->fld[0]).rtx)))
    {
      rtx ni2dest;

      newi2pat = (((((newpat)->fld[0]).rtvec))->elem[0]);
      ni2dest = ((((((((newpat)->fld[0]).rtvec))->elem[0]))->fld[0]).rtx);
      newpat = (((((newpat)->fld[0]).rtvec))->elem[1]);
      do_SUBST(&((((newpat)->fld[1]).rtx)), (gen_lowpart_for_combine (((enum machine_mode) ((((newpat)->fld[1]).rtx))->mode), ni2dest)));

      i2_code_number = recog_for_combine (&newi2pat, i2, &new_i2_notes);

      if (i2_code_number >= 0)
 insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);

      if (insn_code_number >= 0)
 {
   rtx insn;
   rtx link;
# 2377 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   (((i3)->fld[3]).rtx) = newpat;
   distribute_links (gen_rtx_fmt_ue (INSN_LIST, (VOIDmode), (i3), ((rtx) 0)));
# 2389 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   for (insn = (((i3)->fld[2]).rtx);
        insn && (this_basic_block == n_basic_blocks - 1
   || insn != ((((basic_block_info)->data.bb[(this_basic_block + 1)]))->head));
        insn = (((insn)->fld[2]).rtx))
     {
       if (((rtx_class[(int) (((enum rtx_code) (insn)->code))]) == 'i') && reg_referenced_p (ni2dest, (((insn)->fld[3]).rtx)))
  {
    for (link = (((insn)->fld[5]).rtx); link;
         link = (((link)->fld[1]).rtx))
      if ((((link)->fld[0]).rtx) == i3)
        (((link)->fld[0]).rtx) = i1;

    break;
  }
     }
 }
    }






  else if (i1 && insn_code_number < 0 && asm_noperands (newpat) < 0
    && ((enum rtx_code) (newpat)->code) == PARALLEL
    && (((((newpat)->fld[0]).rtvec))->num_elem) == 2
    && ((enum rtx_code) ((((((newpat)->fld[0]).rtvec))->elem[0]))->code) == SET
    && ((enum rtx_code) (((((((((newpat)->fld[0]).rtvec))->elem[0]))->fld[0]).rtx))->code) != ZERO_EXTRACT
    && ((enum rtx_code) (((((((((newpat)->fld[0]).rtvec))->elem[0]))->fld[0]).rtx))->code) != STRICT_LOW_PART
    && ((enum rtx_code) ((((((newpat)->fld[0]).rtvec))->elem[1]))->code) == SET
    && ((enum rtx_code) (((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[0]).rtx))->code) != ZERO_EXTRACT
    && ((enum rtx_code) (((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[0]).rtx))->code) != STRICT_LOW_PART
    && ! use_crosses_set_p (((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[1]).rtx),
       ((((i2)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i2) : uid_cuid[(((i2)->fld[0]).rtint)]))

    && ((enum rtx_code) (((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[0]).rtx))->code) != USE
    && ((enum rtx_code) (((((((((newpat)->fld[0]).rtvec))->elem[0]))->fld[0]).rtx))->code) != USE
    && ! reg_referenced_p (((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[0]).rtx),
      (((((newpat)->fld[0]).rtvec))->elem[0]))
    && ! reg_referenced_p (((((((((newpat)->fld[0]).rtvec))->elem[0]))->fld[0]).rtx),
      (((((newpat)->fld[0]).rtvec))->elem[1]))
    && ! (contains_muldiv (((((((((newpat)->fld[0]).rtvec))->elem[0]))->fld[1]).rtx))
   && contains_muldiv (((((((((newpat)->fld[0]).rtvec))->elem[1]))->fld[1]).rtx))))
    {
# 2444 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
 {
   newi2pat = (((((newpat)->fld[0]).rtvec))->elem[1]);
   newpat = (((((newpat)->fld[0]).rtvec))->elem[0]);
 }

      i2_code_number = recog_for_combine (&newi2pat, i2, &new_i2_notes);

      if (i2_code_number >= 0)
 insn_code_number = recog_for_combine (&newpat, i3, &new_i3_notes);
    }



  if ((insn_code_number < 0

       && (! check_asm_operands (newpat) || added_sets_1 || added_sets_2)))
    {
      undo_all ();
      return 0;
    }


  if (undobuf.other_insn)
    {
      rtx other_pat = (((undobuf.other_insn)->fld[3]).rtx);
      rtx new_other_notes;
      rtx note, next;

      ((newpat_used_regs) = ((HARD_REG_ELT_TYPE) (0)));

      other_code_number = recog_for_combine (&other_pat, undobuf.other_insn,
          &new_other_notes);

      if (other_code_number < 0 && ! check_asm_operands (other_pat))
 {
   undo_all ();
   return 0;
 }

      (((undobuf.other_insn)->fld[3]).rtx) = other_pat;




      for (note = (((undobuf.other_insn)->fld[6]).rtx); note; note = next)
 {
   next = (((note)->fld[1]).rtx);

   if (((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_UNUSED
       && ! reg_set_p ((((note)->fld[0]).rtx), (((undobuf.other_insn)->fld[3]).rtx)))
     {
       if (((enum rtx_code) ((((note)->fld[0]).rtx))->code) == REG)
  (((reg_n_info)->data.reg[((((((note)->fld[0]).rtx))->fld[0]).rtuint)])->deaths)--;

       remove_note (undobuf.other_insn, note);
     }
 }

      for (note = new_other_notes; note; note = (((note)->fld[1]).rtx))
 if (((enum rtx_code) ((((note)->fld[0]).rtx))->code) == REG)
   (((reg_n_info)->data.reg[((((((note)->fld[0]).rtx))->fld[0]).rtuint)])->deaths)++;

      distribute_notes (new_other_notes, undobuf.other_insn,
   undobuf.other_insn, (rtx) 0, (rtx) 0, (rtx) 0);
    }
# 2526 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  {
    rtx i3notes, i2notes, i1notes = 0;
    rtx i3links, i2links, i1links = 0;
    rtx midnotes = 0;
    unsigned int regno;



    rtx elim_i2 = ((newi2pat && reg_set_p (i2dest, newi2pat))
     || i2dest_in_i2src || i2dest_in_i1src
     ? 0 : i2dest);
    rtx elim_i1 = (i1 == 0 || i1dest_in_i1src
     || (newi2pat && reg_set_p (i1dest, newi2pat))
     ? 0 : i1dest);



    i3notes = (((i3)->fld[6]).rtx), i3links = (((i3)->fld[5]).rtx);
    i2notes = (((i2)->fld[6]).rtx), i2links = (((i2)->fld[5]).rtx);
    if (i1)
      i1notes = (((i1)->fld[6]).rtx), i1links = (((i1)->fld[5]).rtx);





    reset_used_flags (i3notes);
    reset_used_flags (i2notes);
    reset_used_flags (i1notes);
    reset_used_flags (newpat);
    reset_used_flags (newi2pat);
    if (undobuf.other_insn)
      reset_used_flags ((((undobuf.other_insn)->fld[3]).rtx));

    i3notes = copy_rtx_if_shared (i3notes);
    i2notes = copy_rtx_if_shared (i2notes);
    i1notes = copy_rtx_if_shared (i1notes);
    newpat = copy_rtx_if_shared (newpat);
    newi2pat = copy_rtx_if_shared (newi2pat);
    if (undobuf.other_insn)
      reset_used_flags ((((undobuf.other_insn)->fld[3]).rtx));

    (((i3)->fld[4]).rtint) = insn_code_number;
    (((i3)->fld[3]).rtx) = newpat;

    if (((enum rtx_code) (i3)->code) == CALL_INSN && (((i3)->fld[7]).rtx))
      {
 rtx call_usage = (((i3)->fld[7]).rtx);

 reset_used_flags (call_usage);
 call_usage = copy_rtx (call_usage);

 if (substed_i2)
   replace_rtx (call_usage, i2dest, i2src);

 if (substed_i1)
   replace_rtx (call_usage, i1dest, i1src);

 (((i3)->fld[7]).rtx) = call_usage;
      }

    if (undobuf.other_insn)
      (((undobuf.other_insn)->fld[4]).rtint) = other_code_number;
# 2599 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
    if (i3_subst_into_i2)
      {
 for (i = 0; i < ((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->num_elem); i++)
   if (((enum rtx_code) (((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->elem[i]))->code) != USE
       && ((enum rtx_code) ((((((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->elem[i]))->fld[0]).rtx))->code) == REG
       && (((((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->elem[i]))->fld[0]).rtx) != i2dest
       && ! find_reg_note (i2, REG_UNUSED,
      (((((((((((i2)->fld[3]).rtx))->fld[0]).rtvec))->elem[i]))->fld[0]).rtx)))
     for (temp = (((i2)->fld[2]).rtx);
   temp && (this_basic_block == n_basic_blocks - 1
     || ((((basic_block_info)->data.bb[(this_basic_block)]))->head) != temp);
   temp = (((temp)->fld[2]).rtx))
       if (temp != i3 && ((rtx_class[(int) (((enum rtx_code) (temp)->code))]) == 'i'))
  for (link = (((temp)->fld[5]).rtx); link; link = (((link)->fld[1]).rtx))
    if ((((link)->fld[0]).rtx) == i2)
      (((link)->fld[0]).rtx) = i3;

 if (i3notes)
   {
     rtx link = i3notes;
     while ((((link)->fld[1]).rtx))
       link = (((link)->fld[1]).rtx);
     (((link)->fld[1]).rtx) = i2notes;
   }
 else
   i3notes = i2notes;
 i2notes = 0;
      }

    (((i3)->fld[5]).rtx) = 0;
    (((i3)->fld[6]).rtx) = 0;
    (((i2)->fld[5]).rtx) = 0;
    (((i2)->fld[6]).rtx) = 0;

    if (newi2pat)
      {
 (((i2)->fld[4]).rtint) = i2_code_number;
 (((i2)->fld[3]).rtx) = newi2pat;
      }
    else
      {
 ((i2)->code = (enum rtx_code) (NOTE));
 (((i2)->fld[4]).rtint) = NOTE_INSN_DELETED;
 (((i2)->fld[3]).rtstr) = 0;
      }

    if (i1)
      {
 (((i1)->fld[5]).rtx) = 0;
 (((i1)->fld[6]).rtx) = 0;
 ((i1)->code = (enum rtx_code) (NOTE));
 (((i1)->fld[4]).rtint) = NOTE_INSN_DELETED;
 (((i1)->fld[3]).rtstr) = 0;
      }






    if (newi2pat)
      {
 move_deaths (newi2pat, (rtx) 0, ((((i1)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i1) : uid_cuid[(((i1)->fld[0]).rtint)]), i2, &midnotes);
 move_deaths (newpat, newi2pat, ((((i1)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i1) : uid_cuid[(((i1)->fld[0]).rtint)]), i3, &midnotes);
      }
    else
      move_deaths (newpat, (rtx) 0, i1 ? ((((i1)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i1) : uid_cuid[(((i1)->fld[0]).rtint)]) : ((((i2)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i2) : uid_cuid[(((i2)->fld[0]).rtint)]),
     i3, &midnotes);


    if (i3notes)
      distribute_notes (i3notes, i3, i3, newi2pat ? i2 : (rtx) 0,
   elim_i2, elim_i1);
    if (i2notes)
      distribute_notes (i2notes, i2, i3, newi2pat ? i2 : (rtx) 0,
   elim_i2, elim_i1);
    if (i1notes)
      distribute_notes (i1notes, i1, i3, newi2pat ? i2 : (rtx) 0,
   elim_i2, elim_i1);
    if (midnotes)
      distribute_notes (midnotes, (rtx) 0, i3, newi2pat ? i2 : (rtx) 0,
   elim_i2, elim_i1);






    if (newi2pat && new_i2_notes)
      {
 for (temp = new_i2_notes; temp; temp = (((temp)->fld[1]).rtx))
   if (((enum rtx_code) ((((temp)->fld[0]).rtx))->code) == REG)
     (((reg_n_info)->data.reg[((((((temp)->fld[0]).rtx))->fld[0]).rtuint)])->deaths)++;

 distribute_notes (new_i2_notes, i2, i2, (rtx) 0, (rtx) 0, (rtx) 0);
      }

    if (new_i3_notes)
      {
 for (temp = new_i3_notes; temp; temp = (((temp)->fld[1]).rtx))
   if (((enum rtx_code) ((((temp)->fld[0]).rtx))->code) == REG)
     (((reg_n_info)->data.reg[((((((temp)->fld[0]).rtx))->fld[0]).rtuint)])->deaths)++;

 distribute_notes (new_i3_notes, i3, i3, (rtx) 0, (rtx) 0, (rtx) 0);
      }
# 2712 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
    if (i3dest_killed)
      {
 if (((enum rtx_code) (i3dest_killed)->code) == REG)
   (((reg_n_info)->data.reg[(((i3dest_killed)->fld[0]).rtuint)])->deaths)++;

 if (newi2pat && reg_set_p (i3dest_killed, newi2pat))
   distribute_notes (gen_rtx_fmt_ee (EXPR_LIST, (REG_DEAD), (i3dest_killed), ((rtx) 0)),

       (rtx) 0, i2, (rtx) 0, elim_i2, elim_i1);
 else
   distribute_notes (gen_rtx_fmt_ee (EXPR_LIST, (REG_DEAD), (i3dest_killed), ((rtx) 0)),

       (rtx) 0, i3, newi2pat ? i2 : (rtx) 0,
       elim_i2, elim_i1);
      }

    if (i2dest_in_i2src)
      {
 if (((enum rtx_code) (i2dest)->code) == REG)
   (((reg_n_info)->data.reg[(((i2dest)->fld[0]).rtuint)])->deaths)++;

 if (newi2pat && reg_set_p (i2dest, newi2pat))
   distribute_notes (gen_rtx_fmt_ee (EXPR_LIST, (REG_DEAD), (i2dest), ((rtx) 0)),
       (rtx) 0, i2, (rtx) 0, (rtx) 0, (rtx) 0);
 else
   distribute_notes (gen_rtx_fmt_ee (EXPR_LIST, (REG_DEAD), (i2dest), ((rtx) 0)),
       (rtx) 0, i3, newi2pat ? i2 : (rtx) 0,
       (rtx) 0, (rtx) 0);
      }

    if (i1dest_in_i1src)
      {
 if (((enum rtx_code) (i1dest)->code) == REG)
   (((reg_n_info)->data.reg[(((i1dest)->fld[0]).rtuint)])->deaths)++;

 if (newi2pat && reg_set_p (i1dest, newi2pat))
   distribute_notes (gen_rtx_fmt_ee (EXPR_LIST, (REG_DEAD), (i1dest), ((rtx) 0)),
       (rtx) 0, i2, (rtx) 0, (rtx) 0, (rtx) 0);
 else
   distribute_notes (gen_rtx_fmt_ee (EXPR_LIST, (REG_DEAD), (i1dest), ((rtx) 0)),
       (rtx) 0, i3, newi2pat ? i2 : (rtx) 0,
       (rtx) 0, (rtx) 0);
      }

    distribute_links (i3links);
    distribute_links (i2links);
    distribute_links (i1links);

    if (((enum rtx_code) (i2dest)->code) == REG)
      {
 rtx link;
 rtx i2_insn = 0, i2_val = 0, set;
# 2773 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
 for (link = (((i3)->fld[5]).rtx); link; link = (((link)->fld[1]).rtx))
   if ((set = (((rtx_class[(int) (((enum rtx_code) ((((link)->fld[0]).rtx))->code))]) == 'i') ? (((enum rtx_code) (((((((link)->fld[0]).rtx))->fld[3]).rtx))->code) == SET ? ((((((link)->fld[0]).rtx))->fld[3]).rtx) : single_set_2 ((((link)->fld[0]).rtx), ((((((link)->fld[0]).rtx))->fld[3]).rtx))) : (rtx) 0)) != 0
       && rtx_equal_p (i2dest, (((set)->fld[0]).rtx)))
     i2_insn = (((link)->fld[0]).rtx), i2_val = (((set)->fld[1]).rtx);

 record_value_for_reg (i2dest, i2_insn, i2_val);



 if (! added_sets_2
     && (newi2pat == 0 || ! reg_mentioned_p (i2dest, newi2pat))
     && ! i2dest_in_i2src)
   {
     regno = (((i2dest)->fld[0]).rtuint);
     (((reg_n_info)->data.reg[regno])->sets)--;
   }
      }

    if (i1 && ((enum rtx_code) (i1dest)->code) == REG)
      {
 rtx link;
 rtx i1_insn = 0, i1_val = 0, set;

 for (link = (((i3)->fld[5]).rtx); link; link = (((link)->fld[1]).rtx))
   if ((set = (((rtx_class[(int) (((enum rtx_code) ((((link)->fld[0]).rtx))->code))]) == 'i') ? (((enum rtx_code) (((((((link)->fld[0]).rtx))->fld[3]).rtx))->code) == SET ? ((((((link)->fld[0]).rtx))->fld[3]).rtx) : single_set_2 ((((link)->fld[0]).rtx), ((((((link)->fld[0]).rtx))->fld[3]).rtx))) : (rtx) 0)) != 0
       && rtx_equal_p (i1dest, (((set)->fld[0]).rtx)))
     i1_insn = (((link)->fld[0]).rtx), i1_val = (((set)->fld[1]).rtx);

 record_value_for_reg (i1dest, i1_insn, i1_val);

 regno = (((i1dest)->fld[0]).rtuint);
 if (! added_sets_1 && ! i1dest_in_i1src)
   (((reg_n_info)->data.reg[regno])->sets)--;
      }




    if (newi2pat)
      note_stores (newi2pat, set_nonzero_bits_and_sign_copies, ((void*)0));
    note_stores (newpat, set_nonzero_bits_and_sign_copies, ((void*)0));
# 2822 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
    if (((enum rtx_code) (newpat)->code) == RETURN || any_uncondjump_p (i3))
      {
 *new_direct_jump_p = 1;

 if ((temp = next_nonnote_insn (i3)) == (rtx) 0
     || ((enum rtx_code) (temp)->code) != BARRIER)
   emit_barrier_after (i3);
      }


    if (((enum rtx_code) (newpat)->code) == SET
 && (((newpat)->fld[1]).rtx) == (global_rtl[GR_PC])
 && (((newpat)->fld[0]).rtx) == (global_rtl[GR_PC]))
      *new_direct_jump_p = 1;
  }

  combine_successes++;
  undo_commit ();



  subst_prev_insn = (rtx) 0;

  if (added_links_insn
      && (newi2pat == 0 || ((((added_links_insn)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (added_links_insn) : uid_cuid[(((added_links_insn)->fld[0]).rtint)]) < ((((i2)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i2) : uid_cuid[(((i2)->fld[0]).rtint)]))
      && ((((added_links_insn)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (added_links_insn) : uid_cuid[(((added_links_insn)->fld[0]).rtint)]) < ((((i3)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i3) : uid_cuid[(((i3)->fld[0]).rtint)]))
    return added_links_insn;
  else
    return newi2pat ? i2 : i3;
}



static void
undo_all ()
{
  struct undo *undo, *next;

  for (undo = undobuf.undos; undo; undo = next)
    {
      next = undo->next;
      if (undo->is_int)
 *undo->where.i = undo->old_contents.i;
      else
 *undo->where.r = undo->old_contents.r;

      undo->next = undobuf.frees;
      undobuf.frees = undo;
    }

  undobuf.undos = 0;



  subst_prev_insn = (rtx) 0;
}




static void
undo_commit ()
{
  struct undo *undo, *next;

  for (undo = undobuf.undos; undo; undo = next)
    {
      next = undo->next;
      undo->next = undobuf.frees;
      undobuf.frees = undo;
    }
  undobuf.undos = 0;
}
# 2904 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static rtx *
find_split_point (loc, insn)
     rtx *loc;
     rtx insn;
{
  rtx x = *loc;
  enum rtx_code code = ((enum rtx_code) (x)->code);
  rtx *split;
  unsigned long long len = 0;
  long long pos = 0;
  int unsignedp = 0;
  rtx inner = (rtx) 0;


  switch (code)
    {
    case SUBREG:



      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == MEM)
 return loc;

      return find_split_point (&(((x)->fld[0]).rtx), insn);

    case MEM:
# 2949 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == PLUS
   && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
   && ! memory_address_p (((enum machine_mode) (x)->mode), (((x)->fld[0]).rtx)))
 {
   rtx reg = (cfun->emit->x_regno_reg_rtx)[53];
   rtx seq = split_insns (gen_rtx_fmt_ee (SET, (VOIDmode), (reg), ((((x)->fld[0]).rtx))),
     subst_insn);






   if (seq && (((((seq)->fld[0]).rtvec))->num_elem) == 2
       && ((enum rtx_code) ((((((seq)->fld[0]).rtvec))->elem[0]))->code) == INSN
       && ((enum rtx_code) (((((((((seq)->fld[0]).rtvec))->elem[0]))->fld[3]).rtx))->code) == SET
       && (((((((((((seq)->fld[0]).rtvec))->elem[0]))->fld[3]).rtx))->fld[0]).rtx) == reg
       && ! reg_mentioned_p (reg,
        (((((((((((seq)->fld[0]).rtvec))->elem[0]))->fld[3]).rtx))->fld[1]).rtx))
       && ((enum rtx_code) ((((((seq)->fld[0]).rtvec))->elem[1]))->code) == INSN
       && ((enum rtx_code) (((((((((seq)->fld[0]).rtvec))->elem[1]))->fld[3]).rtx))->code) == SET
       && (((((((((((seq)->fld[0]).rtvec))->elem[1]))->fld[3]).rtx))->fld[0]).rtx) == reg
       && memory_address_p (((enum machine_mode) (x)->mode),
       (((((((((((seq)->fld[0]).rtvec))->elem[1]))->fld[3]).rtx))->fld[1]).rtx)))
     {
       rtx src1 = (((((((((((seq)->fld[0]).rtvec))->elem[0]))->fld[3]).rtx))->fld[1]).rtx);
       rtx src2 = (((((((((((seq)->fld[0]).rtvec))->elem[1]))->fld[3]).rtx))->fld[1]).rtx);






       src2 = replace_rtx (src2, reg, src1);
       split = 0;
       if ((((src2)->fld[0]).rtx) == src1)
  split = &(((src2)->fld[0]).rtx);
       else if ((rtx_format[(int) (((enum rtx_code) ((((src2)->fld[0]).rtx))->code))])[0] == 'e'
         && ((((((src2)->fld[0]).rtx))->fld[0]).rtx) == src1)
  split = &((((((src2)->fld[0]).rtx))->fld[0]).rtx);

       if (split)
  {
    do_SUBST(&((((x)->fld[0]).rtx)), (src2));
    return split;
  }
     }






   else if ((rtx_class[(int) (((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code))]) != 'o'
     && ! (((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code) == SUBREG
    && ((rtx_class[(int) (((enum rtx_code) ((((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx))->code))])
        == 'o')))
     return &((((((x)->fld[0]).rtx))->fld[0]).rtx);
 }
      break;

    case SET:
# 3027 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      split = find_split_point (&(((x)->fld[1]).rtx), insn);
      if (split && split != &(((x)->fld[1]).rtx))
 return split;


      split = find_split_point (&(((x)->fld[0]).rtx), insn);
      if (split && split != &(((x)->fld[0]).rtx))
 return split;



      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ZERO_EXTRACT
   && ((mode_bitsize[(int) (((enum machine_mode) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->mode))])
       <= (8 * 8))
   && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
   && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[2]).rtx))->code) == CONST_INT
   && ((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
   && (((((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint)
        + (((((((((x)->fld[0]).rtx))->fld[2]).rtx))->fld[0]).rtwint))
       <= (mode_bitsize[(int) (((enum machine_mode) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->mode))]))
   && ! side_effects_p (((((((x)->fld[0]).rtx))->fld[0]).rtx)))
 {
   long long pos = (((((((((x)->fld[0]).rtx))->fld[2]).rtx))->fld[0]).rtwint);
   unsigned long long len = (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint);
   unsigned long long src = ((((((x)->fld[1]).rtx))->fld[0]).rtwint);
   rtx dest = ((((((x)->fld[0]).rtx))->fld[0]).rtx);
   enum machine_mode mode = ((enum machine_mode) (dest)->mode);
   unsigned long long mask = ((long long) 1 << len) - 1;

   if (0)
     pos = (mode_bitsize[(int) (mode)]) - len - pos;

   if (src == mask)
     do_SUBST(&((((x)->fld[1]).rtx)), (gen_binary (IOR, mode, dest, gen_rtx_CONST_INT (VOIDmode, (long long) (src << pos)))));

   else
     do_SUBST(&((((x)->fld[1]).rtx)), (gen_binary (IOR, mode, gen_binary (AND, mode, dest, gen_rtx_CONST_INT (VOIDmode, (long long) (trunc_int_for_mode (~(mask << pos) & mode_mask_array[(int) (mode)], mode)))), gen_rtx_CONST_INT (VOIDmode, (long long) (src << pos)))));
# 3073 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   do_SUBST(&((((x)->fld[0]).rtx)), (dest));

   split = find_split_point (&(((x)->fld[1]).rtx), insn);
   if (split && split != &(((x)->fld[1]).rtx))
     return split;
 }



      code = ((enum rtx_code) ((((x)->fld[1]).rtx))->code);

      switch (code)
 {
 case AND:
# 3096 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   if (((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[1]).rtx))->code) == CONST_INT
       && ((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[0]).rtx))->code) == REG
       && (pos = exact_log2_wide ((unsigned long long) ((((((((((x)->fld[1]).rtx))->fld[1]).rtx))->fld[0]).rtwint)))) >= 7
       && ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == REG
       && (split = find_single_use ((((x)->fld[0]).rtx), insn, (rtx*) 0)) != 0
       && (((enum rtx_code) (*split)->code) == EQ || ((enum rtx_code) (*split)->code) == NE)
       && (((*split)->fld[0]).rtx) == (((x)->fld[0]).rtx)
       && (((*split)->fld[1]).rtx) == (const_int_rtx[64]))
     {
       rtx extraction = make_extraction (((enum machine_mode) ((((x)->fld[0]).rtx))->mode),
      ((((((x)->fld[1]).rtx))->fld[0]).rtx),
      pos, (rtx) 0, 1, 1, 0, 0);
       if (extraction != 0)
  {
    do_SUBST(&((((x)->fld[1]).rtx)), (extraction));
    return find_split_point (loc, insn);
  }
     }
   break;

 case NE:


   if (1 == -1 && ((((((x)->fld[1]).rtx))->fld[1]).rtx) == (const_int_rtx[64])
       && ((enum machine_mode) ((((x)->fld[1]).rtx))->mode) == ((enum machine_mode) (((((((x)->fld[1]).rtx))->fld[0]).rtx))->mode)
       && 1 <= (pos = exact_log2_wide ((unsigned long long) (nonzero_bits (((((((x)->fld[1]).rtx))->fld[0]).rtx), ((enum machine_mode) (((((((x)->fld[1]).rtx))->fld[0]).rtx))->mode))))))


     {
       enum machine_mode mode = ((enum machine_mode) (((((((x)->fld[1]).rtx))->fld[0]).rtx))->mode);

       do_SUBST(&((((x)->fld[1]).rtx)), (gen_rtx_fmt_e (NEG, (mode), (gen_rtx_fmt_ee (LSHIFTRT, (mode), (((((((x)->fld[1]).rtx))->fld[0]).rtx)), (gen_rtx_CONST_INT (VOIDmode, (long long) (pos))))))));





       split = find_split_point (&(((x)->fld[1]).rtx), insn);
       if (split && split != &(((x)->fld[1]).rtx))
  return split;
     }
   break;

 case SIGN_EXTEND:
   inner = ((((((x)->fld[1]).rtx))->fld[0]).rtx);




   if ((mode_class[(int) (((enum machine_mode) (inner)->mode))]) == MODE_PARTIAL_INT
       || (mode_class[(int) (((enum machine_mode) ((((x)->fld[1]).rtx))->mode))]) == MODE_PARTIAL_INT)
     break;

   pos = 0;
   len = (mode_bitsize[(int) (((enum machine_mode) (inner)->mode))]);
   unsignedp = 0;
   break;

 case SIGN_EXTRACT:
 case ZERO_EXTRACT:
   if (((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[1]).rtx))->code) == CONST_INT
       && ((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[2]).rtx))->code) == CONST_INT)
     {
       inner = ((((((x)->fld[1]).rtx))->fld[0]).rtx);
       len = (((((((((x)->fld[1]).rtx))->fld[1]).rtx))->fld[0]).rtwint);
       pos = (((((((((x)->fld[1]).rtx))->fld[2]).rtx))->fld[0]).rtwint);

       if (0)
  pos = (mode_bitsize[(int) (((enum machine_mode) (inner)->mode))]) - len - pos;
       unsignedp = (code == ZERO_EXTRACT);
     }
   break;

 default:
   break;
 }

      if (len && pos >= 0 && pos + len <= (mode_bitsize[(int) (((enum machine_mode) (inner)->mode))]))
 {
   enum machine_mode mode = ((enum machine_mode) ((((x)->fld[1]).rtx))->mode);







   if (unsignedp && len <= 8)
     {
       do_SUBST(&((((x)->fld[1]).rtx)), (gen_rtx_fmt_ee (AND, (mode), (gen_rtx_fmt_ee (LSHIFTRT, (mode), (gen_lowpart_for_combine (mode, inner)), (gen_rtx_CONST_INT (VOIDmode, (long long) (pos))))), (gen_rtx_CONST_INT (VOIDmode, (long long) (((long long) 1 << len) - 1))))));






       split = find_split_point (&(((x)->fld[1]).rtx), insn);
       if (split && split != &(((x)->fld[1]).rtx))
  return split;
     }
   else
     {
       do_SUBST(&((((x)->fld[1]).rtx)), (gen_rtx_fmt_ee (unsignedp ? LSHIFTRT : ASHIFTRT, mode, gen_rtx_fmt_ee (ASHIFT, (mode), (gen_lowpart_for_combine (mode, inner)), (gen_rtx_CONST_INT (VOIDmode, (long long) ((mode_bitsize[(int) (mode)]) - len - pos)))), gen_rtx_CONST_INT (VOIDmode, (long long) ((mode_bitsize[(int) (mode)]) - len)))));
# 3207 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
       split = find_split_point (&(((x)->fld[1]).rtx), insn);
       if (split && split != &(((x)->fld[1]).rtx))
  return split;
     }
 }




      if (((rtx_class[(int) (((enum rtx_code) ((((x)->fld[1]).rtx))->code))]) == '2'
    || (rtx_class[(int) (((enum rtx_code) ((((x)->fld[1]).rtx))->code))]) == 'c'
    || (rtx_class[(int) (((enum rtx_code) ((((x)->fld[1]).rtx))->code))]) == '<')
   && (((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[1]).rtx))->code) == LABEL_REF || ((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[1]).rtx))->code) == SYMBOL_REF || ((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[1]).rtx))->code) == CONST_INT || ((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[1]).rtx))->code) == CONST_DOUBLE || ((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[1]).rtx))->code) == CONST || ((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[1]).rtx))->code) == HIGH || ((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[1]).rtx))->code) == CONST_VECTOR || ((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[1]).rtx))->code) == CONSTANT_P_RTX)
   && ((rtx_class[(int) (((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[0]).rtx))->code))]) == 'o'
       || (((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[0]).rtx))->code) == SUBREG
    && ((rtx_class[(int) (((enum rtx_code) ((((((((((x)->fld[1]).rtx))->fld[0]).rtx))->fld[0]).rtx))->code))])
        == 'o'))))
 return &((((((x)->fld[1]).rtx))->fld[1]).rtx);






      if (((rtx_class[(int) (((enum rtx_code) ((((x)->fld[1]).rtx))->code))]) == '2'
    || (rtx_class[(int) (((enum rtx_code) ((((x)->fld[1]).rtx))->code))]) == 'c'
    || (rtx_class[(int) (((enum rtx_code) ((((x)->fld[1]).rtx))->code))]) == '<'
    || (rtx_class[(int) (((enum rtx_code) ((((x)->fld[1]).rtx))->code))]) == '1')
   && ! register_operand (((((((x)->fld[1]).rtx))->fld[0]).rtx), VOIDmode))
 return &((((((x)->fld[1]).rtx))->fld[0]).rtx);

      return 0;

    case AND:
    case IOR:



      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == NOT && ((enum rtx_code) ((((x)->fld[1]).rtx))->code) == NOT)
 {
   do_SUBST(&(*loc), (gen_rtx_fmt_e (NOT, (((enum machine_mode) (x)->mode)), (gen_rtx_fmt_ee (code == IOR ? AND : IOR, ((enum machine_mode) (x)->mode), ((((((x)->fld[0]).rtx))->fld[0]).rtx), ((((((x)->fld[1]).rtx))->fld[0]).rtx))))));





   return find_split_point (loc, insn);
 }




      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == NOT)
 {
   rtx tem = (((x)->fld[0]).rtx);
   do_SUBST(&((((x)->fld[0]).rtx)), ((((x)->fld[1]).rtx)));
   do_SUBST(&((((x)->fld[1]).rtx)), (tem));
 }
      break;

    default:
      break;
    }


  switch ((rtx_class[(int) (code)]))
    {
    case 'b':
    case '3':
      split = find_split_point (&(((x)->fld[2]).rtx), insn);
      if (split)
 return split;

    case '2':
    case 'c':
    case '<':
      split = find_split_point (&(((x)->fld[1]).rtx), insn);
      if (split)
 return split;

    case '1':


      if (((enum rtx_code) (x)->code) != AND && ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == AND)
 return &(((x)->fld[0]).rtx);

      split = find_split_point (&(((x)->fld[0]).rtx), insn);
      if (split)
 return split;
      return loc;
    }


  return 0;
}
# 3322 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static rtx
subst (x, from, to, in_dest, unique_copy)
     rtx x, from, to;
     int in_dest;
     int unique_copy;
{
  enum rtx_code code = ((enum rtx_code) (x)->code);
  enum machine_mode op0_mode = VOIDmode;
  const char *fmt;
  int len, i;
  rtx new;
# 3343 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (! in_dest && ((x) == (from) || (((enum rtx_code) (x)->code) == REG && ((enum rtx_code) (from)->code) == REG && (((x)->fld[0]).rtuint) == (((from)->fld[0]).rtuint) && ((enum machine_mode) (x)->mode) == ((enum machine_mode) (from)->mode))))
    {
      n_occurrences++;
      return (unique_copy && n_occurrences > 1 ? copy_rtx (to) : to);
    }
# 3356 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (! in_dest && code == REG && ((enum rtx_code) (from)->code) == REG
      && (((x)->fld[0]).rtuint) == (((from)->fld[0]).rtuint))
    return gen_rtx_fmt_e (CLOBBER, (((enum machine_mode) (x)->mode)), ((const_int_rtx[64])));



  if (code != MEM && code != LO_SUM && (rtx_class[(int) (code)]) == 'o')
    return x;







  if (((x) == (to) || (((enum rtx_code) (x)->code) == REG && ((enum rtx_code) (to)->code) == REG && (((x)->fld[0]).rtuint) == (((to)->fld[0]).rtuint) && ((enum machine_mode) (x)->mode) == ((enum machine_mode) (to)->mode))))
    return to;
# 3383 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (code == PARALLEL
      && ((enum rtx_code) ((((((x)->fld[0]).rtvec))->elem[0]))->code) == SET
      && ((enum rtx_code) (((((((((x)->fld[0]).rtvec))->elem[0]))->fld[1]).rtx))->code) == ASM_OPERANDS)
    {
      new = subst ((((((x)->fld[0]).rtvec))->elem[0]), from, to, 0, unique_copy);


      if (((enum rtx_code) (new)->code) == CLOBBER
   && (((new)->fld[0]).rtx) == (const_int_rtx[64]))
 return new;

      do_SUBST(&((((((x)->fld[0]).rtvec))->elem[0])), (new));

      for (i = (((((x)->fld[0]).rtvec))->num_elem) - 1; i >= 1; i--)
 {
   rtx dest = ((((((((x)->fld[0]).rtvec))->elem[i]))->fld[0]).rtx);

   if (((enum rtx_code) (dest)->code) != REG
       && ((enum rtx_code) (dest)->code) != CC0
       && ((enum rtx_code) (dest)->code) != PC)
     {
       new = subst (dest, from, to, 0, unique_copy);


       if (((enum rtx_code) (new)->code) == CLOBBER
    && (((new)->fld[0]).rtx) == (const_int_rtx[64]))
  return new;

       do_SUBST(&(((((((((x)->fld[0]).rtvec))->elem[i]))->fld[0]).rtx)), (new));
     }
 }
    }
  else
    {
      len = (rtx_length[(int) (code)]);
      fmt = (rtx_format[(int) (code)]);





      if (code == SET
   && (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == REG
       || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == CC0
       || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == PC))
 fmt = "ie";



      if (fmt[0] == 'e')
 op0_mode = ((enum machine_mode) ((((x)->fld[0]).rtx))->mode);

      for (i = 0; i < len; i++)
 {
   if (fmt[i] == 'E')
     {
       int j;
       for (j = (((((x)->fld[i]).rtvec))->num_elem) - 1; j >= 0; j--)
  {
    if ((((((((x)->fld[i]).rtvec))->elem[j])) == (from) || (((enum rtx_code) ((((((x)->fld[i]).rtvec))->elem[j]))->code) == REG && ((enum rtx_code) (from)->code) == REG && ((((((((x)->fld[i]).rtvec))->elem[j]))->fld[0]).rtuint) == (((from)->fld[0]).rtuint) && ((enum machine_mode) ((((((x)->fld[i]).rtvec))->elem[j]))->mode) == ((enum machine_mode) (from)->mode))))
      {
        new = (unique_copy && n_occurrences
        ? copy_rtx (to) : to);
        n_occurrences++;
      }
    else
      {
        new = subst ((((((x)->fld[i]).rtvec))->elem[j]), from, to, 0,
       unique_copy);



        if (((enum rtx_code) (new)->code) == CLOBBER
     && (((new)->fld[0]).rtx) == (const_int_rtx[64]))
   return new;
      }

    do_SUBST(&((((((x)->fld[i]).rtvec))->elem[j])), (new));
  }
     }
   else if (fmt[i] == 'e')
     {

       new = (((x)->fld[i]).rtx);
       if (in_dest
    && (code == SUBREG || code == STRICT_LOW_PART
        || code == ZERO_EXTRACT)
    && i == 0
    && ((enum rtx_code) (new)->code) == REG)
  ;

       else if ((((((x)->fld[i]).rtx)) == (from) || (((enum rtx_code) ((((x)->fld[i]).rtx))->code) == REG && ((enum rtx_code) (from)->code) == REG && ((((((x)->fld[i]).rtx))->fld[0]).rtuint) == (((from)->fld[0]).rtuint) && ((enum machine_mode) ((((x)->fld[i]).rtx))->mode) == ((enum machine_mode) (from)->mode))))
  {
# 3489 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
    if (((enum rtx_code) (to)->code) == SUBREG
        && ! ((((enum machine_mode) (to)->mode)) == (((enum machine_mode) ((((to)->fld[0]).rtx))->mode)) || (((((enum machine_mode) (to)->mode)) == HImode || (((enum machine_mode) (to)->mode)) == SImode || ((((enum machine_mode) (to)->mode)) == QImode && ((target_flags & 0x02000000) || !(x86_partial_reg_stall & (1 << ix86_cpu)))) || ((((enum machine_mode) (to)->mode)) == DImode && (target_flags & 0x02000000))) && ((((enum machine_mode) ((((to)->fld[0]).rtx))->mode)) == HImode || (((enum machine_mode) ((((to)->fld[0]).rtx))->mode)) == SImode || ((((enum machine_mode) (to)->mode)) == QImode && ((target_flags & 0x02000000) || !(x86_partial_reg_stall & (1 << ix86_cpu)))) || ((((enum machine_mode) ((((to)->fld[0]).rtx))->mode)) == DImode && (target_flags & 0x02000000)))))

        && ! (code == SUBREG
       && ((((enum machine_mode) (x)->mode)) == (((enum machine_mode) ((((to)->fld[0]).rtx))->mode)) || (((((enum machine_mode) (x)->mode)) == HImode || (((enum machine_mode) (x)->mode)) == SImode || ((((enum machine_mode) (x)->mode)) == QImode && ((target_flags & 0x02000000) || !(x86_partial_reg_stall & (1 << ix86_cpu)))) || ((((enum machine_mode) (x)->mode)) == DImode && (target_flags & 0x02000000))) && ((((enum machine_mode) ((((to)->fld[0]).rtx))->mode)) == HImode || (((enum machine_mode) ((((to)->fld[0]).rtx))->mode)) == SImode || ((((enum machine_mode) (x)->mode)) == QImode && ((target_flags & 0x02000000) || !(x86_partial_reg_stall & (1 << ix86_cpu)))) || ((((enum machine_mode) ((((to)->fld[0]).rtx))->mode)) == DImode && (target_flags & 0x02000000))))))




        )
      return gen_rtx_fmt_e (CLOBBER, (VOIDmode), ((const_int_rtx[64])));
# 3513 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
    new = (unique_copy && n_occurrences ? copy_rtx (to) : to);
    n_occurrences++;
  }
       else
# 3525 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  new = subst ((((x)->fld[i]).rtx), from, to,
        (((in_dest
    && (code == SUBREG || code == STRICT_LOW_PART
        || code == ZERO_EXTRACT))
          || code == SET)
         && i == 0), unique_copy);







       if (((enum rtx_code) (new)->code) == CLOBBER && (((new)->fld[0]).rtx) == (const_int_rtx[64]))
  return new;

       if (((enum rtx_code) (new)->code) == CONST_INT && ((enum rtx_code) (x)->code) == SUBREG)
  {
    enum machine_mode mode = ((enum machine_mode) (x)->mode);
    x = simplify_subreg (mode, new,
           ((enum machine_mode) ((((x)->fld[0]).rtx))->mode),
           (((x)->fld[1]).rtuint));
    if (! x)
      x = gen_rtx_fmt_e (CLOBBER, (mode), ((const_int_rtx[64])));
  }
       else if (((enum rtx_code) (new)->code) == CONST_INT
         && ((enum rtx_code) (x)->code) == ZERO_EXTEND)
  {
    x = simplify_unary_operation (ZERO_EXTEND, ((enum machine_mode) (x)->mode),
      new, ((enum machine_mode) ((((x)->fld[0]).rtx))->mode));
    if (! x)
      fancy_abort ("/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c", 3556, __FUNCTION__);
  }
       else
  do_SUBST(&((((x)->fld[i]).rtx)), (new));
     }
 }
    }





  for (i = 0; i < 4; i++)
    {


      if (code != CONST_INT && code != REG && code != CLOBBER)
 x = combine_simplify_rtx (x, op0_mode, i == 3, in_dest);

      if (((enum rtx_code) (x)->code) == code)
 break;

      code = ((enum rtx_code) (x)->code);



      op0_mode = VOIDmode;
    }

  return x;
}
# 3596 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static rtx
combine_simplify_rtx (x, op0_mode, last, in_dest)
     rtx x;
     enum machine_mode op0_mode;
     int last;
     int in_dest;
{
  enum rtx_code code = ((enum rtx_code) (x)->code);
  enum machine_mode mode = ((enum machine_mode) (x)->mode);
  rtx temp;
  rtx reversed;
  int i;



  if ((rtx_class[(int) (code)]) == 'c'
      && swap_commutative_operands_p ((((x)->fld[0]).rtx), (((x)->fld[1]).rtx)))
    {
      temp = (((x)->fld[0]).rtx);
      do_SUBST(&((((x)->fld[0]).rtx)), ((((x)->fld[1]).rtx)));
      do_SUBST(&((((x)->fld[1]).rtx)), (temp));
    }
# 3637 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if ((code == PLUS || code == MINUS || code == MULT)
      && ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ASHIFTRT
      && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code) == PLUS
      && ((enum rtx_code) ((((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx))->code) == ASHIFT
      && ((enum rtx_code) (((((((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
      && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
      && ((((((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx))->fld[1]).rtx) == ((((((x)->fld[0]).rtx))->fld[1]).rtx)
      && ((enum rtx_code) ((((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
      && (temp = simplify_binary_operation (ASHIFTRT, mode,
         (((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[1]).rtx),
         ((((((x)->fld[0]).rtx))->fld[1]).rtx))) != 0)
    {
      rtx new
 = simplify_shift_const ((rtx) 0, ASHIFT, mode,
    ((((((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx),
    (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint));

      new = simplify_shift_const ((rtx) 0, ASHIFTRT, mode, new,
      (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint));

      do_SUBST(&((((x)->fld[0]).rtx)), (gen_binary (PLUS, mode, new, temp)));
    }
# 3667 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if ((((rtx_class[(int) (code)]) == '2' || (rtx_class[(int) (code)]) == 'c'
 || (rtx_class[(int) (code)]) == '<')
       && (((rtx_class[(int) (((enum rtx_code) ((((x)->fld[0]).rtx))->code))]) != 'o'
     && ! (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SUBREG
    && ((rtx_class[(int) (((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code))])
        == 'o')))
    || ((rtx_class[(int) (((enum rtx_code) ((((x)->fld[1]).rtx))->code))]) != 'o'
        && ! (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == SUBREG
       && ((rtx_class[(int) (((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[0]).rtx))->code))])
    == 'o')))))
      || ((rtx_class[(int) (code)]) == '1'
   && (((rtx_class[(int) (((enum rtx_code) ((((x)->fld[0]).rtx))->code))]) != 'o'
        && ! (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SUBREG
       && ((rtx_class[(int) (((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code))])
    == 'o'))))))
    {
      rtx cond, true_rtx, false_rtx;

      cond = if_then_else_cond (x, &true_rtx, &false_rtx);
      if (cond != 0


   && ! ((rtx_class[(int) (code)]) == '<'
  && ((rtx_class[(int) (((enum rtx_code) (true_rtx)->code))]) == '<'
      || (rtx_class[(int) (((enum rtx_code) (false_rtx)->code))]) == '<')))
 {
   rtx cop1 = (const_int_rtx[64]);
   enum rtx_code cond_code = simplify_comparison (NE, &cond, &cop1);

   if (cond_code == NE && (rtx_class[(int) (((enum rtx_code) (cond)->code))]) == '<')
     return x;



   true_rtx = subst (true_rtx, (global_rtl[GR_PC]), (global_rtl[GR_PC]), 0, 0);
   false_rtx = subst (false_rtx, (global_rtl[GR_PC]), (global_rtl[GR_PC]), 0, 0);



   if (general_operand (true_rtx, VOIDmode)
       && general_operand (false_rtx, VOIDmode))
     {





       if (true_rtx == const_true_rtx && false_rtx == (const_int_rtx[64]))
  x = gen_binary (cond_code, mode, cond, cop1);
       else if (true_rtx == (const_int_rtx[64]) && false_rtx == const_true_rtx
         && reverse_condition (cond_code) != UNKNOWN)
  x = gen_binary (reverse_condition (cond_code),
    mode, cond, cop1);



       else if (((enum rtx_code) (true_rtx)->code) == CONST_INT
         && (((true_rtx)->fld[0]).rtwint) == - 1
         && false_rtx == (const_int_rtx[64]))
  x = simplify_gen_unary (NEG, mode,
     gen_binary (cond_code, mode, cond,
          cop1),
     mode);
       else if (((enum rtx_code) (false_rtx)->code) == CONST_INT
         && (((false_rtx)->fld[0]).rtwint) == - 1
         && true_rtx == (const_int_rtx[64]))
  x = simplify_gen_unary (NEG, mode,
     gen_binary (reverse_condition
          (cond_code),
          mode, cond, cop1),
     mode);
       else
  return gen_rtx_fmt_eee (IF_THEN_ELSE, (mode), (gen_binary (cond_code, VOIDmode, cond, cop1)), (true_rtx), (false_rtx));




       code = ((enum rtx_code) (x)->code);
       op0_mode = VOIDmode;
     }
 }
    }



  temp = 0;
  switch ((rtx_class[(int) (code)]))
    {
    case '1':
      temp = simplify_unary_operation (code, mode, (((x)->fld[0]).rtx), op0_mode);
      break;
    case '<':
      {
 enum machine_mode cmp_mode = ((enum machine_mode) ((((x)->fld[0]).rtx))->mode);
 if (cmp_mode == VOIDmode)
   {
     cmp_mode = ((enum machine_mode) ((((x)->fld[1]).rtx))->mode);
     if (cmp_mode == VOIDmode)
       cmp_mode = op0_mode;
   }
 temp = simplify_relational_operation (code, cmp_mode,
           (((x)->fld[0]).rtx), (((x)->fld[1]).rtx));
      }
# 3779 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      break;
    case 'c':
    case '2':
      temp = simplify_binary_operation (code, mode, (((x)->fld[0]).rtx), (((x)->fld[1]).rtx));
      break;
    case 'b':
    case '3':
      temp = simplify_ternary_operation (code, mode, op0_mode, (((x)->fld[0]).rtx),
      (((x)->fld[1]).rtx), (((x)->fld[2]).rtx));
      break;
    }

  if (temp)
    {
      x = temp;
      code = ((enum rtx_code) (temp)->code);
      op0_mode = VOIDmode;
      mode = ((enum machine_mode) (temp)->mode);
    }


  if (code == PLUS || code == MINUS
      || code == AND || code == IOR || code == XOR)
    {
      x = apply_distributive_law (x);
      code = ((enum rtx_code) (x)->code);
      op0_mode = VOIDmode;
    }




  if ((code == PLUS || code == MINUS || code == MULT || code == DIV
       || code == AND || code == IOR || code == XOR
       || code == SMAX || code == SMIN || code == UMAX || code == UMIN)
      && ((((mode_class[(int) (mode)]) == MODE_INT || (mode_class[(int) (mode)]) == MODE_PARTIAL_INT || (mode_class[(int) (mode)]) == MODE_COMPLEX_INT || (mode_class[(int) (mode)]) == MODE_VECTOR_INT) && code != DIV)
   || (flag_unsafe_math_optimizations && ((mode_class[(int) (mode)]) == MODE_FLOAT || (mode_class[(int) (mode)]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (mode)]) == MODE_VECTOR_FLOAT))))
    {
      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == code)
 {
   rtx other = ((((((x)->fld[0]).rtx))->fld[0]).rtx);
   rtx inner_op0 = ((((((x)->fld[0]).rtx))->fld[1]).rtx);
   rtx inner_op1 = (((x)->fld[1]).rtx);
   rtx inner;



   if ((((enum rtx_code) (inner_op0)->code) == LABEL_REF || ((enum rtx_code) (inner_op0)->code) == SYMBOL_REF || ((enum rtx_code) (inner_op0)->code) == CONST_INT || ((enum rtx_code) (inner_op0)->code) == CONST_DOUBLE || ((enum rtx_code) (inner_op0)->code) == CONST || ((enum rtx_code) (inner_op0)->code) == HIGH || ((enum rtx_code) (inner_op0)->code) == CONST_VECTOR || ((enum rtx_code) (inner_op0)->code) == CONSTANT_P_RTX) && (rtx_class[(int) (code)]) == 'c')
     {
       rtx tem = inner_op0;
       inner_op0 = inner_op1;
       inner_op1 = tem;
     }
   inner = simplify_binary_operation (code == MINUS ? PLUS
          : code == DIV ? MULT
          : code,
          mode, inner_op0, inner_op1);



   if (inner == 0 && (rtx_class[(int) (code)]) == 'c')
     {
       other = ((((((x)->fld[0]).rtx))->fld[1]).rtx);
       inner = simplify_binary_operation (code, mode,
       ((((((x)->fld[0]).rtx))->fld[0]).rtx),
       (((x)->fld[1]).rtx));
     }

   if (inner)
     return gen_binary (code, mode, other, inner);
 }
    }


  switch (code)
    {
    case MEM:


      temp = make_compound_operation ((((x)->fld[0]).rtx), MEM);
      do_SUBST(&((((x)->fld[0]).rtx)), (temp));
      break;

    case SUBREG:
      if (op0_mode == VOIDmode)
 op0_mode = ((enum machine_mode) ((((x)->fld[0]).rtx))->mode);


      if ((((enum rtx_code) ((((x)->fld[0]).rtx))->code) == LABEL_REF || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SYMBOL_REF || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == CONST_INT || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == CONST_DOUBLE || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == CONST || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == HIGH || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == CONST_VECTOR || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == CONSTANT_P_RTX)
   && subreg_lowpart_offset (mode, op0_mode) == (((x)->fld[1]).rtuint))
 return gen_lowpart_for_combine (mode, (((x)->fld[0]).rtx));

      if ((mode_class[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) == MODE_CC)
        break;
      {
 rtx temp;
 temp = simplify_subreg (mode, (((x)->fld[0]).rtx), op0_mode,
    (((x)->fld[1]).rtuint));
 if (temp)
   return temp;
      }



      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == MEM
   && ((((((x)->fld[0]).rtx))->volatil)
       || mode_dependent_address_p (((((((x)->fld[0]).rtx))->fld[0]).rtx))))
 return gen_rtx_fmt_e (CLOBBER, (mode), ((const_int_rtx[64])));





      break;

    case NOT:

      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == PLUS
   && ((((((x)->fld[0]).rtx))->fld[1]).rtx) == (const_int_rtx[64 -1]))
 return gen_rtx_fmt_e (NEG, (mode), (((((((x)->fld[0]).rtx))->fld[0]).rtx)));


      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == NEG)
 return gen_rtx_fmt_ee (PLUS, (mode), (((((((x)->fld[0]).rtx))->fld[0]).rtx)), ((const_int_rtx[64 -1])));


      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == XOR
   && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
   && (temp = simplify_unary_operation (NOT, mode,
            ((((((x)->fld[0]).rtx))->fld[1]).rtx),
            mode)) != 0)
 return gen_binary (XOR, mode, ((((((x)->fld[0]).rtx))->fld[0]).rtx), temp);





      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ASHIFT
   && ((((((x)->fld[0]).rtx))->fld[0]).rtx) == (const_int_rtx[64 +1]))
 return gen_rtx_fmt_ee (ROTATE, (mode), (simplify_gen_unary (NOT, mode, (const_int_rtx[64 +1]), mode)), (((((((x)->fld[0]).rtx))->fld[1]).rtx)));



      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SUBREG
   && subreg_lowpart_p ((((x)->fld[0]).rtx))
   && ((mode_size[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))])
       < (mode_size[(int) (((enum machine_mode) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->mode))]))
   && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code) == ASHIFT
   && (((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx) == (const_int_rtx[64 +1]))
 {
   enum machine_mode inner_mode = ((enum machine_mode) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->mode);

   x = gen_rtx_fmt_ee (ROTATE, (inner_mode), (simplify_gen_unary (NOT, inner_mode, (const_int_rtx[64 +1]), inner_mode)), ((((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[1]).rtx)));



   return gen_lowpart_for_combine (mode, x);
 }



      if (1 == -1
   && (rtx_class[(int) (((enum rtx_code) ((((x)->fld[0]).rtx))->code))]) == '<'
   && (reversed = reversed_comparison (x, mode, ((((((x)->fld[0]).rtx))->fld[0]).rtx),
           ((((((x)->fld[0]).rtx))->fld[1]).rtx))))
 return reversed;





      if (1 == -1
   && ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ASHIFTRT
   && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
   && (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint) == (mode_bitsize[(int) (mode)]) - 1)
 return gen_rtx_fmt_ee (GE, (mode), (((((((x)->fld[0]).rtx))->fld[0]).rtx)), ((const_int_rtx[64])));






      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == IOR || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == AND)
 {
   rtx in1 = ((((((x)->fld[0]).rtx))->fld[0]).rtx), in2 = ((((((x)->fld[0]).rtx))->fld[1]).rtx);
   enum machine_mode op_mode;

   op_mode = ((enum machine_mode) (in1)->mode);
   in1 = simplify_gen_unary (NOT, op_mode, in1, op_mode);

   op_mode = ((enum machine_mode) (in2)->mode);
   if (op_mode == VOIDmode)
     op_mode = mode;
   in2 = simplify_gen_unary (NOT, op_mode, in2, op_mode);

   if (((enum rtx_code) (in2)->code) == NOT && ((enum rtx_code) (in1)->code) != NOT)
     {
       rtx tem = in2;
       in2 = in1; in1 = tem;
     }

   return gen_rtx_fmt_ee (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == IOR ? AND : IOR,
     mode, in1, in2);
 }
      break;

    case NEG:

      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == PLUS
   && ((((((x)->fld[0]).rtx))->fld[1]).rtx) == (const_int_rtx[64 +1]))
 return gen_rtx_fmt_e (NOT, (mode), (((((((x)->fld[0]).rtx))->fld[0]).rtx)));


      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == NOT)
 return plus_constant_wide ((((((((x)->fld[0]).rtx))->fld[0]).rtx)), (long long) (1));


      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == MINUS
   && (! ((mode_class[(int) (mode)]) == MODE_FLOAT || (mode_class[(int) (mode)]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (mode)]) == MODE_VECTOR_FLOAT)

       || 1 != 1
       || flag_unsafe_math_optimizations))
 return gen_binary (MINUS, mode, ((((((x)->fld[0]).rtx))->fld[1]).rtx),
      ((((((x)->fld[0]).rtx))->fld[0]).rtx));


      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == XOR && ((((((x)->fld[0]).rtx))->fld[1]).rtx) == (const_int_rtx[64 +1])
   && nonzero_bits (((((((x)->fld[0]).rtx))->fld[0]).rtx), mode) == 1)
 return gen_binary (PLUS, mode, ((((((x)->fld[0]).rtx))->fld[0]).rtx), (const_int_rtx[64 -1]));





      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ASHIFT)
 {
   temp = simplify_unary_operation (NEG, mode,
        ((((((x)->fld[0]).rtx))->fld[0]).rtx), mode);
   if (temp)
     return gen_binary (ASHIFT, mode, temp, ((((((x)->fld[0]).rtx))->fld[1]).rtx));
 }

      temp = expand_compound_operation ((((x)->fld[0]).rtx));





      if (((enum rtx_code) (temp)->code) == ASHIFTRT
   && ((enum rtx_code) ((((temp)->fld[1]).rtx))->code) == CONST_INT
   && ((((((temp)->fld[1]).rtx))->fld[0]).rtwint) == (mode_bitsize[(int) (mode)]) - 1)
 return simplify_shift_const (temp, LSHIFTRT, mode, (((temp)->fld[0]).rtx),
         ((((((temp)->fld[1]).rtx))->fld[0]).rtwint));
# 4040 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if (((enum rtx_code) (temp)->code) != REG
   && ! (((enum rtx_code) (temp)->code) == SUBREG
  && ((enum rtx_code) ((((temp)->fld[0]).rtx))->code) == REG)
   && (i = exact_log2_wide ((unsigned long long) (nonzero_bits (temp, mode)))) >= 0)
 {
   rtx temp1 = simplify_shift_const
     ((rtx) 0, ASHIFTRT, mode,
      simplify_shift_const ((rtx) 0, ASHIFT, mode, temp,
       (mode_bitsize[(int) (mode)]) - 1 - i),
      (mode_bitsize[(int) (mode)]) - 1 - i);




   if (((enum rtx_code) (temp1)->code) != ASHIFTRT
       || ((enum rtx_code) ((((temp1)->fld[0]).rtx))->code) != ASHIFT
       || ((((((temp1)->fld[0]).rtx))->fld[0]).rtx) != temp)
     return temp1;
 }
      break;

    case TRUNCATE:



      if ((mode_class[(int) (mode)]) == MODE_PARTIAL_INT)
 break;

      if ((mode_bitsize[(int) (mode)]) <= (8 * 8)
   && 1)

 do_SUBST(&((((x)->fld[0]).rtx)), (force_to_mode ((((x)->fld[0]).rtx), ((enum machine_mode) ((((x)->fld[0]).rtx))->mode), mode_mask_array[(int) (mode)], (rtx) 0, 0)));




      if ((((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SIGN_EXTEND
    || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ZERO_EXTEND)
   && ((enum machine_mode) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->mode) == mode)
 return ((((((x)->fld[0]).rtx))->fld[0]).rtx);



      if ((((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ABS
    || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == NEG)
   && (((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code) == SIGN_EXTEND
       || ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code) == ZERO_EXTEND)
   && ((enum machine_mode) ((((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx))->mode) == mode)
 return simplify_gen_unary (((enum rtx_code) ((((x)->fld[0]).rtx))->code), mode,
       (((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx), mode);



      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SUBREG
   && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code) == TRUNCATE
   && subreg_lowpart_p ((((x)->fld[0]).rtx)))
 return ((((((x)->fld[0]).rtx))->fld[0]).rtx);






      if (1

   && num_sign_bit_copies ((((x)->fld[0]).rtx), ((enum machine_mode) ((((x)->fld[0]).rtx))->mode))
      >= (mode_bitsize[(int) (mode)]) + 1
   && ! (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == LSHIFTRT
  && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code) == MULT))
 return gen_lowpart_for_combine (mode, (((x)->fld[0]).rtx));





      if ((mode_bitsize[(int) (mode)]) <= (8 * 8)
   && (rtx_class[(int) (((enum rtx_code) ((((x)->fld[0]).rtx))->code))]) == '<'
   && ((long long) 1 & ~mode_mask_array[(int) (mode)]) == 0)
 return gen_lowpart_for_combine (mode, (((x)->fld[0]).rtx));




      if ((mode_bitsize[(int) (mode)]) <= (8 * 8)
   && ((long long) 1 & ~mode_mask_array[(int) (mode)]) == 0
   && (temp = get_last_value ((((x)->fld[0]).rtx)))
   && (rtx_class[(int) (((enum rtx_code) (temp)->code))]) == '<')
 return gen_lowpart_for_combine (mode, (((x)->fld[0]).rtx));

      break;

    case FLOAT_TRUNCATE:

      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == FLOAT_EXTEND
   && ((enum machine_mode) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->mode) == mode)
 return ((((((x)->fld[0]).rtx))->fld[0]).rtx);



      if ((((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ABS
    || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == NEG)
   && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code) == FLOAT_EXTEND
   && ((enum machine_mode) ((((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx))->mode) == mode)
 return simplify_gen_unary (((enum rtx_code) ((((x)->fld[0]).rtx))->code), mode,
       (((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx), mode);



      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SUBREG
   && subreg_lowpart_p ((((x)->fld[0]).rtx))
   && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code) == FLOAT_TRUNCATE)
 return ((((((x)->fld[0]).rtx))->fld[0]).rtx);
      break;
# 4171 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
    case CONST:



      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == CONST)
 do_SUBST(&((((x)->fld[0]).rtx)), (((((((x)->fld[0]).rtx))->fld[0]).rtx)));
      break;
# 4190 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
    case PLUS:




      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == PLUS
   && (((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == LABEL_REF || ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == SYMBOL_REF || ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT || ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST || ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_DOUBLE))
 return gen_binary (PLUS, mode,
      gen_binary (PLUS, mode, ((((((x)->fld[0]).rtx))->fld[0]).rtx),
           (((x)->fld[1]).rtx)),
      ((((((x)->fld[0]).rtx))->fld[1]).rtx));






      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == XOR
   && ((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
   && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) == -(((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint)
   && ((i = exact_log2_wide ((unsigned long long) ((((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint)))) >= 0
       || (i = exact_log2_wide ((unsigned long long) (((((((x)->fld[1]).rtx))->fld[0]).rtwint)))) >= 0)
   && (mode_bitsize[(int) (mode)]) <= (8 * 8)
   && ((((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code) == AND
        && ((enum rtx_code) ((((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
        && (((((((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint)
     == ((long long) 1 << (i + 1)) - 1))
       || (((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code) == ZERO_EXTEND
    && ((mode_bitsize[(int) (((enum machine_mode) ((((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx))->mode))])
        == (unsigned int) i + 1))))
 return simplify_shift_const
   ((rtx) 0, ASHIFTRT, mode,
    simplify_shift_const ((rtx) 0, ASHIFT, mode,
     (((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx),
     (mode_bitsize[(int) (mode)]) - (i + 1)),
    (mode_bitsize[(int) (mode)]) - (i + 1));





      if ((rtx_class[(int) (((enum rtx_code) ((((x)->fld[0]).rtx))->code))]) == '<'
   && ((1 == -1 && (((x)->fld[1]).rtx) == (const_int_rtx[64 +1]))
       || (1 == 1 && (((x)->fld[1]).rtx) == (const_int_rtx[64 -1])))
   && (reversed = reversed_comparison ((((x)->fld[0]).rtx), mode,
           ((((((x)->fld[0]).rtx))->fld[0]).rtx),
           ((((((x)->fld[0]).rtx))->fld[1]).rtx))))
 return
   simplify_gen_unary (NEG, mode, reversed, mode);





      if ((((x)->fld[1]).rtx) == (const_int_rtx[64 -1])
   && ((enum rtx_code) ((((x)->fld[0]).rtx))->code) != REG
   && ! (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SUBREG
  && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code) == REG)
   && nonzero_bits ((((x)->fld[0]).rtx), mode) == 1)
 return simplify_shift_const ((rtx) 0, ASHIFTRT, mode,
    simplify_shift_const ((rtx) 0, ASHIFT, mode,
     gen_rtx_fmt_ee (XOR, (mode), ((((x)->fld[0]).rtx)), ((const_int_rtx[64 +1]))),
     (mode_bitsize[(int) (mode)]) - 1),
    (mode_bitsize[(int) (mode)]) - 1);






      if ((mode_bitsize[(int) (mode)]) <= (8 * 8)
   && (nonzero_bits ((((x)->fld[0]).rtx), mode)
       & nonzero_bits ((((x)->fld[1]).rtx), mode)) == 0)
 {

   rtx tor = gen_binary (IOR, mode, (((x)->fld[0]).rtx), (((x)->fld[1]).rtx));
   temp = combine_simplify_rtx (tor, mode, last, in_dest);




   if (((enum rtx_code) (temp)->code) != CLOBBER && temp != tor)
     return temp;
 }
      break;

    case MINUS:


      if (1 == 1
   && (((x)->fld[0]).rtx) == (const_int_rtx[64 +1])
   && (rtx_class[(int) (((enum rtx_code) ((((x)->fld[1]).rtx))->code))]) == '<'
   && (reversed = reversed_comparison ((((x)->fld[1]).rtx), mode,
           ((((((x)->fld[1]).rtx))->fld[0]).rtx),
           ((((((x)->fld[1]).rtx))->fld[1]).rtx))))
 return reversed;



      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == AND
   && ((enum rtx_code) (((((((x)->fld[1]).rtx))->fld[1]).rtx))->code) == CONST_INT
   && exact_log2_wide ((unsigned long long) (-(((((((((x)->fld[1]).rtx))->fld[1]).rtx))->fld[0]).rtwint))) >= 0
   && rtx_equal_p (((((((x)->fld[1]).rtx))->fld[0]).rtx), (((x)->fld[0]).rtx)))
 return simplify_and_const_int ((rtx) 0, mode, (((x)->fld[0]).rtx),
           -(((((((((x)->fld[1]).rtx))->fld[1]).rtx))->fld[0]).rtwint) - 1);



      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == PLUS && ((mode_class[(int) (mode)]) == MODE_INT || (mode_class[(int) (mode)]) == MODE_PARTIAL_INT || (mode_class[(int) (mode)]) == MODE_COMPLEX_INT || (mode_class[(int) (mode)]) == MODE_VECTOR_INT))
 return gen_binary (MINUS, mode,
      gen_binary (MINUS, mode, (((x)->fld[0]).rtx),
           ((((((x)->fld[1]).rtx))->fld[0]).rtx)),
      ((((((x)->fld[1]).rtx))->fld[1]).rtx));
      break;

    case MULT:




      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == PLUS)
 {
   x = apply_distributive_law
     (gen_binary (PLUS, mode,
    gen_binary (MULT, mode,
         ((((((x)->fld[0]).rtx))->fld[0]).rtx), (((x)->fld[1]).rtx)),
    gen_binary (MULT, mode,
         ((((((x)->fld[0]).rtx))->fld[1]).rtx),
         copy_rtx ((((x)->fld[1]).rtx)))));

   if (((enum rtx_code) (x)->code) != MULT)
     return x;
 }

      if (((mode_class[(int) (mode)]) == MODE_FLOAT || (mode_class[(int) (mode)]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (mode)]) == MODE_VECTOR_FLOAT) && flag_unsafe_math_optimizations
   && ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == DIV)
 {
   rtx tem = simplify_binary_operation (MULT, mode,
            ((((((x)->fld[0]).rtx))->fld[0]).rtx),
            (((x)->fld[1]).rtx));
   if (tem)
     return gen_binary (DIV, mode, tem, ((((((x)->fld[0]).rtx))->fld[1]).rtx));
 }
      break;

    case UDIV:


      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
   && (i = exact_log2_wide ((unsigned long long) (((((((x)->fld[1]).rtx))->fld[0]).rtwint)))) >= 0
   && (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ASHIFT
       || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == LSHIFTRT
       || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ASHIFTRT
       || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ROTATE
       || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ROTATERT))
 return simplify_shift_const ((rtx) 0, LSHIFTRT, mode, (((x)->fld[0]).rtx), i);
      break;

    case EQ: case NE:
    case GT: case GTU: case GE: case GEU:
    case LT: case LTU: case LE: case LEU:
    case UNEQ: case LTGT:
    case UNGT: case UNGE:
    case UNLT: case UNLE:
    case UNORDERED: case ORDERED:


      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == COMPARE
   || ((mode_class[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) != MODE_CC



       ))
 {
   rtx op0 = (((x)->fld[0]).rtx);
   rtx op1 = (((x)->fld[1]).rtx);
   enum rtx_code new_code;

   if (((enum rtx_code) (op0)->code) == COMPARE)
     op1 = (((op0)->fld[1]).rtx), op0 = (((op0)->fld[0]).rtx);


   new_code = simplify_comparison (code, &op0, &op1);
# 4387 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   if (1 == 1
       && new_code == NE && (mode_class[(int) (mode)]) == MODE_INT
       && op1 == (const_int_rtx[64])
       && mode == ((enum machine_mode) (op0)->mode)
       && nonzero_bits (op0, mode) == 1)
     return gen_lowpart_for_combine (mode,
         expand_compound_operation (op0));

   else if (1 == 1
     && new_code == NE && (mode_class[(int) (mode)]) == MODE_INT
     && op1 == (const_int_rtx[64])
     && mode == ((enum machine_mode) (op0)->mode)
     && (num_sign_bit_copies (op0, mode)
         == (mode_bitsize[(int) (mode)])))
     {
       op0 = expand_compound_operation (op0);
       return simplify_gen_unary (NEG, mode,
      gen_lowpart_for_combine (mode, op0),
      mode);
     }

   else if (1 == 1
     && new_code == EQ && (mode_class[(int) (mode)]) == MODE_INT
     && op1 == (const_int_rtx[64])
     && mode == ((enum machine_mode) (op0)->mode)
     && nonzero_bits (op0, mode) == 1)
     {
       op0 = expand_compound_operation (op0);
       return gen_binary (XOR, mode,
     gen_lowpart_for_combine (mode, op0),
     (const_int_rtx[64 +1]));
     }

   else if (1 == 1
     && new_code == EQ && (mode_class[(int) (mode)]) == MODE_INT
     && op1 == (const_int_rtx[64])
     && mode == ((enum machine_mode) (op0)->mode)
     && (num_sign_bit_copies (op0, mode)
         == (mode_bitsize[(int) (mode)])))
     {
       op0 = expand_compound_operation (op0);
       return plus_constant_wide ((gen_lowpart_for_combine (mode, op0)), (long long) (1));
     }



   if (1 == -1
       && new_code == NE && (mode_class[(int) (mode)]) == MODE_INT
       && op1 == (const_int_rtx[64])
       && (num_sign_bit_copies (op0, mode)
    == (mode_bitsize[(int) (mode)])))
     return gen_lowpart_for_combine (mode,
         expand_compound_operation (op0));

   else if (1 == -1
     && new_code == NE && (mode_class[(int) (mode)]) == MODE_INT
     && op1 == (const_int_rtx[64])
     && mode == ((enum machine_mode) (op0)->mode)
     && nonzero_bits (op0, mode) == 1)
     {
       op0 = expand_compound_operation (op0);
       return simplify_gen_unary (NEG, mode,
      gen_lowpart_for_combine (mode, op0),
      mode);
     }

   else if (1 == -1
     && new_code == EQ && (mode_class[(int) (mode)]) == MODE_INT
     && op1 == (const_int_rtx[64])
     && mode == ((enum machine_mode) (op0)->mode)
     && (num_sign_bit_copies (op0, mode)
         == (mode_bitsize[(int) (mode)])))
     {
       op0 = expand_compound_operation (op0);
       return simplify_gen_unary (NOT, mode,
      gen_lowpart_for_combine (mode, op0),
      mode);
     }


   else if (1 == -1
     && new_code == EQ && (mode_class[(int) (mode)]) == MODE_INT
     && op1 == (const_int_rtx[64])
     && mode == ((enum machine_mode) (op0)->mode)
     && nonzero_bits (op0, mode) == 1)
     {
       op0 = expand_compound_operation (op0);
       return plus_constant_wide ((gen_lowpart_for_combine (mode, op0)), (long long) (-1));
     }






   if (new_code == NE && (mode_class[(int) (mode)]) == MODE_INT
       && (mode_bitsize[(int) (mode)]) <= (8 * 8)
       && ((1 & mode_mask_array[(int) (mode)])
    == (unsigned long long) 1 << ((mode_bitsize[(int) (mode)])-1))
       && op1 == (const_int_rtx[64])
       && mode == ((enum machine_mode) (op0)->mode)
       && (i = exact_log2_wide ((unsigned long long) (nonzero_bits (op0, mode)))) >= 0)
     {
       x = simplify_shift_const ((rtx) 0, ASHIFT, mode,
     expand_compound_operation (op0),
     (mode_bitsize[(int) (mode)]) - 1 - i);
       if (((enum rtx_code) (x)->code) == AND && (((x)->fld[1]).rtx) == const_true_rtx)
  return (((x)->fld[0]).rtx);
       else
  return x;
     }


   if (new_code != code)
     return gen_rtx_fmt_ee (new_code, mode, op0, op1);



   do_SUBST(&((((x)->fld[0]).rtx)), (op0));
   do_SUBST(&((((x)->fld[1]).rtx)), (op1));
 }
      break;

    case IF_THEN_ELSE:
      return simplify_if_then_else (x);

    case ZERO_EXTRACT:
    case SIGN_EXTRACT:
    case ZERO_EXTEND:
    case SIGN_EXTEND:

      if (in_dest)
 return x;

      return expand_compound_operation (x);

    case SET:
      return simplify_set (x);

    case AND:
    case IOR:
    case XOR:
      return simplify_logical (x, last);

    case ABS:

      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == NEG)
 do_SUBST(&((((x)->fld[0]).rtx)), (((((((x)->fld[0]).rtx))->fld[0]).rtx)));



      if (((enum machine_mode) ((((x)->fld[0]).rtx))->mode) == VOIDmode)
 break;


      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == FFS || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ABS
   || (((mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))])
        <= (8 * 8))
       && ((nonzero_bits ((((x)->fld[0]).rtx), ((enum machine_mode) ((((x)->fld[0]).rtx))->mode))
     & ((long long) 1
        << ((mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) - 1)))
    == 0)))
 return (((x)->fld[0]).rtx);


      if (num_sign_bit_copies ((((x)->fld[0]).rtx), mode) == (mode_bitsize[(int) (mode)]))
 return gen_rtx_fmt_e (NEG, (mode), ((((x)->fld[0]).rtx)));

      break;

    case FFS:

      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SIGN_EXTEND
   || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ZERO_EXTEND)
 do_SUBST(&((((x)->fld[0]).rtx)), (((((((x)->fld[0]).rtx))->fld[0]).rtx)));
      break;

    case FLOAT:

      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SIGN_EXTEND)
 do_SUBST(&((((x)->fld[0]).rtx)), (((((((x)->fld[0]).rtx))->fld[0]).rtx)));
      break;

    case ASHIFT:
    case LSHIFTRT:
    case ASHIFTRT:
    case ROTATE:
    case ROTATERT:

      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT)
 return simplify_shift_const (x, code, mode, (((x)->fld[0]).rtx),
         ((((((x)->fld[1]).rtx))->fld[0]).rtwint));
# 4590 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      break;

    case VEC_SELECT:
      {
 rtx op0 = (((x)->fld[0]).rtx);
 rtx op1 = (((x)->fld[1]).rtx);
 int len;

 if (((enum rtx_code) (op1)->code) != PARALLEL)
   fancy_abort ("/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c", 4599, __FUNCTION__);
 len = (((((op1)->fld[0]).rtvec))->num_elem);
 if (len == 1
     && ((enum rtx_code) ((((((op1)->fld[0]).rtvec))->elem[0]))->code) == CONST_INT
     && ((enum rtx_code) (op0)->code) == VEC_CONCAT)
   {
     int offset = ((((((((op1)->fld[0]).rtvec))->elem[0]))->fld[0]).rtwint) * (mode_size[(int) (((enum machine_mode) (x)->mode))]);


     for (;;)
       {
  if (((enum machine_mode) (op0)->mode) == ((enum machine_mode) (x)->mode))
    return op0;
  if (((enum rtx_code) (op0)->code) == VEC_CONCAT)
    {
      long long op0_size = (mode_size[(int) (((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))]);
      if (op0_size < offset)
        op0 = (((op0)->fld[0]).rtx);
      else
        {
   offset -= op0_size;
   op0 = (((op0)->fld[1]).rtx);
        }
    }
  else
    break;
       }
   }
      }

      break;

    default:
      break;
    }

  return x;
}



static rtx
simplify_if_then_else (x)
     rtx x;
{
  enum machine_mode mode = ((enum machine_mode) (x)->mode);
  rtx cond = (((x)->fld[0]).rtx);
  rtx true_rtx = (((x)->fld[1]).rtx);
  rtx false_rtx = (((x)->fld[2]).rtx);
  enum rtx_code true_code = ((enum rtx_code) (cond)->code);
  int comparison_p = (rtx_class[(int) (true_code)]) == '<';
  rtx temp;
  int i;
  enum rtx_code false_code;
  rtx reversed;


  if (comparison_p && true_rtx == const_true_rtx && false_rtx == (const_int_rtx[64]))
    return gen_binary (true_code, mode, (((cond)->fld[0]).rtx), (((cond)->fld[1]).rtx));


  if (comparison_p
      && true_rtx == (const_int_rtx[64]) && false_rtx == const_true_rtx
      && (reversed = reversed_comparison (cond, mode, (((cond)->fld[0]).rtx),
       (((cond)->fld[1]).rtx))))
    return reversed;





  if (comparison_p
      && ((false_code = combine_reversed_comparison_code (cond))
   != UNKNOWN)
      && ((enum rtx_code) ((((cond)->fld[0]).rtx))->code) == REG)
    {
      long long nzb;
      rtx from = (((cond)->fld[0]).rtx);
      rtx true_val = (((cond)->fld[1]).rtx);
      rtx false_val = true_val;
      int swapped = 0;



      if (false_code == EQ)
 {
   swapped = 1, true_code = EQ, false_code = NE;
   temp = true_rtx, true_rtx = false_rtx, false_rtx = temp;
 }





      if (true_code == EQ && true_val == (const_int_rtx[64])
   && exact_log2_wide ((unsigned long long) (nzb = nonzero_bits (from, ((enum machine_mode) (from)->mode)))) >= 0)
 false_code = EQ, false_val = gen_rtx_CONST_INT (VOIDmode, (long long) (nzb));
      else if (true_code == EQ && true_val == (const_int_rtx[64])
        && (num_sign_bit_copies (from, ((enum machine_mode) (from)->mode))
     == (mode_bitsize[(int) (((enum machine_mode) (from)->mode))])))
 false_code = EQ, false_val = (const_int_rtx[64 -1]);





      if (reg_mentioned_p (from, true_rtx))
 true_rtx = subst (known_cond (copy_rtx (true_rtx), true_code,
          from, true_val),
        (global_rtl[GR_PC]), (global_rtl[GR_PC]), 0, 0);
      if (reg_mentioned_p (from, false_rtx))
 false_rtx = subst (known_cond (copy_rtx (false_rtx), false_code,
       from, false_val),
         (global_rtl[GR_PC]), (global_rtl[GR_PC]), 0, 0);

      do_SUBST(&((((x)->fld[1]).rtx)), (swapped ? false_rtx : true_rtx));
      do_SUBST(&((((x)->fld[2]).rtx)), (swapped ? true_rtx : false_rtx));

      true_rtx = (((x)->fld[1]).rtx);
      false_rtx = (((x)->fld[2]).rtx);
      true_code = ((enum rtx_code) (cond)->code);
    }







  if (comparison_p
      && combine_reversed_comparison_code (cond) != UNKNOWN
      && (true_rtx == (global_rtl[GR_PC])
   || ((((enum rtx_code) (true_rtx)->code) == LABEL_REF || ((enum rtx_code) (true_rtx)->code) == SYMBOL_REF || ((enum rtx_code) (true_rtx)->code) == CONST_INT || ((enum rtx_code) (true_rtx)->code) == CONST_DOUBLE || ((enum rtx_code) (true_rtx)->code) == CONST || ((enum rtx_code) (true_rtx)->code) == HIGH || ((enum rtx_code) (true_rtx)->code) == CONST_VECTOR || ((enum rtx_code) (true_rtx)->code) == CONSTANT_P_RTX)
       && ((enum rtx_code) (false_rtx)->code) != CONST_INT && false_rtx != (global_rtl[GR_PC]))
   || true_rtx == (const_int_rtx[64])
   || ((rtx_class[(int) (((enum rtx_code) (true_rtx)->code))]) == 'o'
       && (rtx_class[(int) (((enum rtx_code) (false_rtx)->code))]) != 'o')
   || (((enum rtx_code) (true_rtx)->code) == SUBREG
       && (rtx_class[(int) (((enum rtx_code) ((((true_rtx)->fld[0]).rtx))->code))]) == 'o'
       && (rtx_class[(int) (((enum rtx_code) (false_rtx)->code))]) != 'o')
   || reg_mentioned_p (true_rtx, false_rtx)
   || rtx_equal_p (false_rtx, (((cond)->fld[0]).rtx))))
    {
      true_code = reversed_comparison_code (cond, ((void*)0));
      do_SUBST(&((((x)->fld[0]).rtx)), (reversed_comparison (cond, ((enum machine_mode) (cond)->mode), (((cond)->fld[0]).rtx), (((cond)->fld[1]).rtx))));



      do_SUBST(&((((x)->fld[1]).rtx)), (false_rtx));
      do_SUBST(&((((x)->fld[2]).rtx)), (true_rtx));

      temp = true_rtx, true_rtx = false_rtx, false_rtx = temp;
      cond = (((x)->fld[0]).rtx);


      true_code = ((enum rtx_code) (cond)->code);
      comparison_p = (rtx_class[(int) (true_code)]) == '<';
    }



  if (rtx_equal_p (true_rtx, false_rtx) && ! side_effects_p (cond))
    return true_rtx;


  if (true_code == EQ && ! side_effects_p (cond)
      && (! ((mode_class[(int) (mode)]) == MODE_FLOAT || (mode_class[(int) (mode)]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (mode)]) == MODE_VECTOR_FLOAT) || flag_unsafe_math_optimizations)
      && rtx_equal_p ((((cond)->fld[0]).rtx), false_rtx)
      && rtx_equal_p ((((cond)->fld[1]).rtx), true_rtx))
    return false_rtx;
  else if (true_code == NE && ! side_effects_p (cond)
    && (! ((mode_class[(int) (mode)]) == MODE_FLOAT || (mode_class[(int) (mode)]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (mode)]) == MODE_VECTOR_FLOAT) || flag_unsafe_math_optimizations)
    && rtx_equal_p ((((cond)->fld[0]).rtx), true_rtx)
    && rtx_equal_p ((((cond)->fld[1]).rtx), false_rtx))
    return true_rtx;



  if ((mode_class[(int) (mode)]) == MODE_INT
      && ((enum rtx_code) (false_rtx)->code) == NEG
      && rtx_equal_p (true_rtx, (((false_rtx)->fld[0]).rtx))
      && comparison_p
      && rtx_equal_p (true_rtx, (((cond)->fld[0]).rtx))
      && ! side_effects_p (true_rtx))
    switch (true_code)
      {
      case GT:
      case GE:
 return simplify_gen_unary (ABS, mode, true_rtx, mode);
      case LT:
      case LE:
 return
   simplify_gen_unary (NEG, mode,
         simplify_gen_unary (ABS, mode, true_rtx, mode),
         mode);
      default:
 break;
      }



  if ((! ((mode_class[(int) (mode)]) == MODE_FLOAT || (mode_class[(int) (mode)]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (mode)]) == MODE_VECTOR_FLOAT) || flag_unsafe_math_optimizations)
      && comparison_p
      && rtx_equal_p ((((cond)->fld[0]).rtx), true_rtx)
      && rtx_equal_p ((((cond)->fld[1]).rtx), false_rtx)
      && ! side_effects_p (cond))
    switch (true_code)
      {
      case GE:
      case GT:
 return gen_binary (SMAX, mode, true_rtx, false_rtx);
      case LE:
      case LT:
 return gen_binary (SMIN, mode, true_rtx, false_rtx);
      case GEU:
      case GTU:
 return gen_binary (UMAX, mode, true_rtx, false_rtx);
      case LEU:
      case LTU:
 return gen_binary (UMIN, mode, true_rtx, false_rtx);
      default:
 break;
      }
# 4830 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if ((1 == 1 || 1 == -1)
      && comparison_p && mode != VOIDmode && ! side_effects_p (x))
    {
      rtx t = make_compound_operation (true_rtx, SET);
      rtx f = make_compound_operation (false_rtx, SET);
      rtx cond_op0 = (((cond)->fld[0]).rtx);
      rtx cond_op1 = (((cond)->fld[1]).rtx);
      enum rtx_code op = NIL, extend_op = NIL;
      enum machine_mode m = mode;
      rtx z = 0, c1 = (rtx) 0;

      if ((((enum rtx_code) (t)->code) == PLUS || ((enum rtx_code) (t)->code) == MINUS
    || ((enum rtx_code) (t)->code) == IOR || ((enum rtx_code) (t)->code) == XOR
    || ((enum rtx_code) (t)->code) == ASHIFT
    || ((enum rtx_code) (t)->code) == LSHIFTRT || ((enum rtx_code) (t)->code) == ASHIFTRT)
   && rtx_equal_p ((((t)->fld[0]).rtx), f))
 c1 = (((t)->fld[1]).rtx), op = ((enum rtx_code) (t)->code), z = f;



      else if ((((enum rtx_code) (t)->code) == PLUS || ((enum rtx_code) (t)->code) == IOR
  || ((enum rtx_code) (t)->code) == XOR)
        && rtx_equal_p ((((t)->fld[1]).rtx), f))
 c1 = (((t)->fld[0]).rtx), op = ((enum rtx_code) (t)->code), z = f;
      else if (((enum rtx_code) (t)->code) == SIGN_EXTEND
        && (((enum rtx_code) ((((t)->fld[0]).rtx))->code) == PLUS
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == MINUS
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == IOR
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == XOR
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == ASHIFT
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == LSHIFTRT
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == ASHIFTRT)
        && ((enum rtx_code) (((((((t)->fld[0]).rtx))->fld[0]).rtx))->code) == SUBREG
        && subreg_lowpart_p (((((((t)->fld[0]).rtx))->fld[0]).rtx))
        && rtx_equal_p ((((((((((t)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx), f)
        && (num_sign_bit_copies (f, ((enum machine_mode) (f)->mode))
     > ((mode_bitsize[(int) (mode)])
        - (mode_bitsize[(int) (((enum machine_mode) (((((((t)->fld[0]).rtx))->fld[0]).rtx))->mode))]))))
 {
   c1 = ((((((t)->fld[0]).rtx))->fld[1]).rtx); z = f; op = ((enum rtx_code) ((((t)->fld[0]).rtx))->code);
   extend_op = SIGN_EXTEND;
   m = ((enum machine_mode) ((((t)->fld[0]).rtx))->mode);
 }
      else if (((enum rtx_code) (t)->code) == SIGN_EXTEND
        && (((enum rtx_code) ((((t)->fld[0]).rtx))->code) == PLUS
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == IOR
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == XOR)
        && ((enum rtx_code) (((((((t)->fld[0]).rtx))->fld[1]).rtx))->code) == SUBREG
        && subreg_lowpart_p (((((((t)->fld[0]).rtx))->fld[1]).rtx))
        && rtx_equal_p ((((((((((t)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtx), f)
        && (num_sign_bit_copies (f, ((enum machine_mode) (f)->mode))
     > ((mode_bitsize[(int) (mode)])
        - (mode_bitsize[(int) (((enum machine_mode) (((((((t)->fld[0]).rtx))->fld[1]).rtx))->mode))]))))
 {
   c1 = ((((((t)->fld[0]).rtx))->fld[0]).rtx); z = f; op = ((enum rtx_code) ((((t)->fld[0]).rtx))->code);
   extend_op = SIGN_EXTEND;
   m = ((enum machine_mode) ((((t)->fld[0]).rtx))->mode);
 }
      else if (((enum rtx_code) (t)->code) == ZERO_EXTEND
        && (((enum rtx_code) ((((t)->fld[0]).rtx))->code) == PLUS
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == MINUS
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == IOR
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == XOR
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == ASHIFT
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == LSHIFTRT
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == ASHIFTRT)
        && ((enum rtx_code) (((((((t)->fld[0]).rtx))->fld[0]).rtx))->code) == SUBREG
        && (mode_bitsize[(int) (mode)]) <= (8 * 8)
        && subreg_lowpart_p (((((((t)->fld[0]).rtx))->fld[0]).rtx))
        && rtx_equal_p ((((((((((t)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx), f)
        && ((nonzero_bits (f, ((enum machine_mode) (f)->mode))
      & ~mode_mask_array[(int) (((enum machine_mode) (((((((t)->fld[0]).rtx))->fld[0]).rtx))->mode))])
     == 0))
 {
   c1 = ((((((t)->fld[0]).rtx))->fld[1]).rtx); z = f; op = ((enum rtx_code) ((((t)->fld[0]).rtx))->code);
   extend_op = ZERO_EXTEND;
   m = ((enum machine_mode) ((((t)->fld[0]).rtx))->mode);
 }
      else if (((enum rtx_code) (t)->code) == ZERO_EXTEND
        && (((enum rtx_code) ((((t)->fld[0]).rtx))->code) == PLUS
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == IOR
     || ((enum rtx_code) ((((t)->fld[0]).rtx))->code) == XOR)
        && ((enum rtx_code) (((((((t)->fld[0]).rtx))->fld[1]).rtx))->code) == SUBREG
        && (mode_bitsize[(int) (mode)]) <= (8 * 8)
        && subreg_lowpart_p (((((((t)->fld[0]).rtx))->fld[1]).rtx))
        && rtx_equal_p ((((((((((t)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtx), f)
        && ((nonzero_bits (f, ((enum machine_mode) (f)->mode))
      & ~mode_mask_array[(int) (((enum machine_mode) (((((((t)->fld[0]).rtx))->fld[1]).rtx))->mode))])
     == 0))
 {
   c1 = ((((((t)->fld[0]).rtx))->fld[0]).rtx); z = f; op = ((enum rtx_code) ((((t)->fld[0]).rtx))->code);
   extend_op = ZERO_EXTEND;
   m = ((enum machine_mode) ((((t)->fld[0]).rtx))->mode);
 }

      if (z)
 {
   temp = subst (gen_binary (true_code, m, cond_op0, cond_op1),
   (global_rtl[GR_PC]), (global_rtl[GR_PC]), 0, 0);
   temp = gen_binary (MULT, m, temp,
        gen_binary (MULT, m, c1, const_true_rtx));
   temp = subst (temp, (global_rtl[GR_PC]), (global_rtl[GR_PC]), 0, 0);
   temp = gen_binary (op, m, gen_lowpart_for_combine (m, z), temp);

   if (extend_op != NIL)
     temp = simplify_gen_unary (extend_op, mode, temp, m);

   return temp;
 }
    }






  if (true_code == NE && (((cond)->fld[1]).rtx) == (const_int_rtx[64])
      && false_rtx == (const_int_rtx[64]) && ((enum rtx_code) (true_rtx)->code) == CONST_INT
      && ((1 == nonzero_bits ((((cond)->fld[0]).rtx), mode)
    && (i = exact_log2_wide ((unsigned long long) ((((true_rtx)->fld[0]).rtwint)))) >= 0)
   || ((num_sign_bit_copies ((((cond)->fld[0]).rtx), mode)
        == (mode_bitsize[(int) (mode)]))
       && (i = exact_log2_wide ((unsigned long long) (-(((true_rtx)->fld[0]).rtwint)))) >= 0)))
    return
      simplify_shift_const ((rtx) 0, ASHIFT, mode,
       gen_lowpart_for_combine (mode, (((cond)->fld[0]).rtx)), i);

  return x;
}



static rtx
simplify_set (x)
     rtx x;
{
  rtx src = (((x)->fld[1]).rtx);
  rtx dest = (((x)->fld[0]).rtx);
  enum machine_mode mode
    = ((enum machine_mode) (src)->mode) != VOIDmode ? ((enum machine_mode) (src)->mode) : ((enum machine_mode) (dest)->mode);
  rtx other_insn;
  rtx *cc_use;


  if (((enum rtx_code) (dest)->code) == PC && ((enum rtx_code) (src)->code) == RETURN)
    return src;





  if ((mode_class[(int) (mode)]) == MODE_INT)
    {
      src = force_to_mode (src, mode, ~(long long) 0, (rtx) 0, 0);
      do_SUBST(&((((x)->fld[1]).rtx)), (src));
    }




  if ((((enum rtx_code) (src)->code) == COMPARE



       )
      && (cc_use = find_single_use (dest, subst_insn, &other_insn)) != 0
      && (undobuf.other_insn == 0 || other_insn == undobuf.other_insn)
      && (rtx_class[(int) (((enum rtx_code) (*cc_use)->code))]) == '<'
      && rtx_equal_p ((((*cc_use)->fld[0]).rtx), dest))
    {
      enum rtx_code old_code = ((enum rtx_code) (*cc_use)->code);
      enum rtx_code new_code;
      rtx op0, op1;
      int other_changed = 0;
      enum machine_mode compare_mode = ((enum machine_mode) (dest)->mode);

      if (((enum rtx_code) (src)->code) == COMPARE)
 op0 = (((src)->fld[0]).rtx), op1 = (((src)->fld[1]).rtx);
      else
 op0 = src, op1 = (const_int_rtx[64]);


      new_code = simplify_comparison (old_code, &op0, &op1);




      compare_mode = ix86_cc_mode ((new_code), (op0), (op1));
# 5026 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if (compare_mode != ((enum machine_mode) (dest)->mode))
 {
   unsigned int regno = (((dest)->fld[0]).rtuint);
   rtx new_dest = gen_rtx_REG (compare_mode, regno);

   if (regno < 53
       || ((((reg_n_info)->data.reg[regno])->sets) == 1 && ! ((dest)->volatil)))
     {
       if (regno >= 53)
  do_SUBST(&((cfun->emit->x_regno_reg_rtx)[regno]), (new_dest));

       do_SUBST(&((((x)->fld[0]).rtx)), (new_dest));
       do_SUBST(&((((*cc_use)->fld[0]).rtx)), (new_dest));
       other_changed = 1;

       dest = new_dest;
     }
 }




      if (new_code != old_code)
 {
   unsigned long long mask;

   do_SUBST(&(*cc_use), (gen_rtx_fmt_ee (new_code, ((enum machine_mode) (*cc_use)->mode), dest, (const_int_rtx[64]))));
# 5061 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   if (((old_code == NE && new_code == EQ)
        || (old_code == EQ && new_code == NE))
       && ! other_changed && op1 == (const_int_rtx[64])
       && (mode_bitsize[(int) (((enum machine_mode) (op0)->mode))]) <= (8 * 8)
       && exact_log2_wide ((unsigned long long) (mask = nonzero_bits (op0, ((enum machine_mode) (op0)->mode)))) >= 0)
     {
       rtx pat = (((other_insn)->fld[3]).rtx), note = 0;

       if ((recog_for_combine (&pat, other_insn, &note) < 0
     && ! check_asm_operands (pat)))
  {
    ((*cc_use)->code = (enum rtx_code) (old_code));
    other_insn = 0;

    op0 = gen_binary (XOR, ((enum machine_mode) (op0)->mode), op0, gen_rtx_CONST_INT (VOIDmode, (long long) (mask)));
  }
     }

   other_changed = 1;
 }

      if (other_changed)
 undobuf.other_insn = other_insn;
# 5098 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if (((enum rtx_code) (src)->code) != COMPARE || ((enum machine_mode) (src)->mode) != compare_mode)
 {
   do_SUBST(&((((x)->fld[1]).rtx)), (gen_rtx_fmt_ee (COMPARE, (compare_mode), (op0), (op1))));
   src = (((x)->fld[1]).rtx);
 }
      else
 {

   do_SUBST(&((((src)->fld[0]).rtx)), (op0));
   do_SUBST(&((((src)->fld[1]).rtx)), (op1));
 }
    }
  else
    {


      src = make_compound_operation (src, SET);
      do_SUBST(&((((x)->fld[1]).rtx)), (src));
    }
# 5130 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (((enum rtx_code) (src)->code) == SUBREG && subreg_lowpart_p (src)
      && (rtx_class[(int) (((enum rtx_code) ((((src)->fld[0]).rtx))->code))]) != 'o'
      && ((((mode_size[(int) (((enum machine_mode) (src)->mode))]) + (((target_flags & 0x02000000) ? 8 : 4) - 1))
    / ((target_flags & 0x02000000) ? 8 : 4))
   == (((mode_size[(int) (((enum machine_mode) ((((src)->fld[0]).rtx))->mode))])
        + (((target_flags & 0x02000000) ? 8 : 4) - 1)) / ((target_flags & 0x02000000) ? 8 : 4)))

      && ((mode_size[(int) (((enum machine_mode) (src)->mode))])
   < (mode_size[(int) (((enum machine_mode) ((((src)->fld[0]).rtx))->mode))]))
# 5148 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      && (((enum rtx_code) (dest)->code) == REG
   || (((enum rtx_code) (dest)->code) == SUBREG
       && ((enum rtx_code) ((((dest)->fld[0]).rtx))->code) == REG)))
    {
      do_SUBST(&((((x)->fld[0]).rtx)), (gen_lowpart_for_combine (((enum machine_mode) ((((src)->fld[0]).rtx))->mode), dest)));


      do_SUBST(&((((x)->fld[1]).rtx)), ((((src)->fld[0]).rtx)));

      src = (((x)->fld[1]).rtx), dest = (((x)->fld[0]).rtx);
    }
# 5186 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (((enum rtx_code) (dest)->code) != PC
      && ((enum rtx_code) (src)->code) == IF_THEN_ELSE
      && (mode_class[(int) (((enum machine_mode) (src)->mode))]) == MODE_INT
      && (((enum rtx_code) ((((src)->fld[0]).rtx))->code) == EQ || ((enum rtx_code) ((((src)->fld[0]).rtx))->code) == NE)
      && ((((((src)->fld[0]).rtx))->fld[1]).rtx) == (const_int_rtx[64])
      && ((enum machine_mode) (src)->mode) == ((enum machine_mode) (((((((src)->fld[0]).rtx))->fld[0]).rtx))->mode)

      && ! can_conditionally_move_p (((enum machine_mode) (src)->mode))

      && (num_sign_bit_copies (((((((src)->fld[0]).rtx))->fld[0]).rtx),
          ((enum machine_mode) (((((((src)->fld[0]).rtx))->fld[0]).rtx))->mode))
   == (mode_bitsize[(int) (((enum machine_mode) (((((((src)->fld[0]).rtx))->fld[0]).rtx))->mode))]))
      && ! side_effects_p (src))
    {
      rtx true_rtx = (((enum rtx_code) ((((src)->fld[0]).rtx))->code) == NE
        ? (((src)->fld[1]).rtx) : (((src)->fld[2]).rtx));
      rtx false_rtx = (((enum rtx_code) ((((src)->fld[0]).rtx))->code) == NE
     ? (((src)->fld[2]).rtx) : (((src)->fld[1]).rtx));
      rtx term1 = (const_int_rtx[64]), term2, term3;

      if (((enum rtx_code) (true_rtx)->code) == IOR
   && rtx_equal_p ((((true_rtx)->fld[0]).rtx), false_rtx))
 term1 = false_rtx, true_rtx = (((true_rtx)->fld[1]).rtx), false_rtx = (const_int_rtx[64]);
      else if (((enum rtx_code) (true_rtx)->code) == IOR
        && rtx_equal_p ((((true_rtx)->fld[1]).rtx), false_rtx))
 term1 = false_rtx, true_rtx = (((true_rtx)->fld[0]).rtx), false_rtx = (const_int_rtx[64]);
      else if (((enum rtx_code) (false_rtx)->code) == IOR
        && rtx_equal_p ((((false_rtx)->fld[0]).rtx), true_rtx))
 term1 = true_rtx, false_rtx = (((false_rtx)->fld[1]).rtx), true_rtx = (const_int_rtx[64]);
      else if (((enum rtx_code) (false_rtx)->code) == IOR
        && rtx_equal_p ((((false_rtx)->fld[1]).rtx), true_rtx))
 term1 = true_rtx, false_rtx = (((false_rtx)->fld[0]).rtx), true_rtx = (const_int_rtx[64]);

      term2 = gen_binary (AND, ((enum machine_mode) (src)->mode),
     ((((((src)->fld[0]).rtx))->fld[0]).rtx), true_rtx);
      term3 = gen_binary (AND, ((enum machine_mode) (src)->mode),
     simplify_gen_unary (NOT, ((enum machine_mode) (src)->mode),
           ((((((src)->fld[0]).rtx))->fld[0]).rtx),
           ((enum machine_mode) (src)->mode)),
     false_rtx);

      do_SUBST(&((((x)->fld[1]).rtx)), (gen_binary (IOR, ((enum machine_mode) (src)->mode), gen_binary (IOR, ((enum machine_mode) (src)->mode), term1, term2), term3)));




      src = (((x)->fld[1]).rtx);
    }



  if (((enum rtx_code) (src)->code) == CLOBBER && (((src)->fld[0]).rtx) == (const_int_rtx[64]))
    return src;
  else if (((enum rtx_code) (dest)->code) == CLOBBER && (((dest)->fld[0]).rtx) == (const_int_rtx[64]))
    return dest;
  else

    return make_field_assignment (x);
}




static rtx
simplify_logical (x, last)
     rtx x;
     int last;
{
  enum machine_mode mode = ((enum machine_mode) (x)->mode);
  rtx op0 = (((x)->fld[0]).rtx);
  rtx op1 = (((x)->fld[1]).rtx);
  rtx reversed;

  switch (((enum rtx_code) (x)->code))
    {
    case AND:


      if (((enum rtx_code) (op0)->code) == XOR
   && rtx_equal_p ((((op0)->fld[0]).rtx), op1)
   && ! side_effects_p (op1))
 x = gen_binary (AND, mode,
   simplify_gen_unary (NOT, mode, (((op0)->fld[1]).rtx), mode),
   op1);

      if (((enum rtx_code) (op0)->code) == XOR
   && rtx_equal_p ((((op0)->fld[1]).rtx), op1)
   && ! side_effects_p (op1))
 x = gen_binary (AND, mode,
   simplify_gen_unary (NOT, mode, (((op0)->fld[0]).rtx), mode),
   op1);


      if (((enum rtx_code) (op0)->code) == NOT
   && ((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == XOR
   && rtx_equal_p (((((((op0)->fld[0]).rtx))->fld[0]).rtx), op1)
   && ! side_effects_p (op1))
 x = gen_binary (AND, mode, ((((((op0)->fld[0]).rtx))->fld[1]).rtx), op1);

      if (((enum rtx_code) (op0)->code) == NOT
   && ((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == XOR
   && rtx_equal_p (((((((op0)->fld[0]).rtx))->fld[1]).rtx), op1)
   && ! side_effects_p (op1))
 x = gen_binary (AND, mode, ((((((op0)->fld[0]).rtx))->fld[0]).rtx), op1);




      if (((enum rtx_code) (op1)->code) == CONST_INT
   && ((mode_bitsize[(int) (mode)]) <= (8 * 8)
       || (((op1)->fld[0]).rtwint) > 0))
 {
   x = simplify_and_const_int (x, mode, op0, (((op1)->fld[0]).rtwint));




   if (last
       && ((enum rtx_code) (x)->code) == IOR && ((enum rtx_code) (op0)->code) == AND
       && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
       && ((enum rtx_code) (op1)->code) == CONST_INT)
     return gen_binary (IOR, mode,
          gen_binary (AND, mode, (((op0)->fld[0]).rtx),
        gen_rtx_CONST_INT (VOIDmode, (long long) (((((((op0)->fld[1]).rtx))->fld[0]).rtwint) & ~(((op1)->fld[0]).rtwint)))), op1);


   if (((enum rtx_code) (x)->code) != AND)
     return x;

   if ((rtx_class[(int) (((enum rtx_code) (x)->code))]) == 'c'
       || (rtx_class[(int) (((enum rtx_code) (x)->code))]) == '2')
     op0 = (((x)->fld[0]).rtx), op1 = (((x)->fld[1]).rtx);
 }


      if (((enum rtx_code) (op0)->code) == IOR
   && (rtx_equal_p ((((op0)->fld[0]).rtx), op1)
       || rtx_equal_p ((((op0)->fld[1]).rtx), op1))
   && ! side_effects_p ((((op0)->fld[0]).rtx))
   && ! side_effects_p ((((op0)->fld[1]).rtx)))
 return op1;
# 5343 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if (((enum rtx_code) (op0)->code) == IOR || ((enum rtx_code) (op0)->code) == XOR)
 {
   x = apply_distributive_law
     (gen_binary (((enum rtx_code) (op0)->code), mode,
    gen_binary (AND, mode, (((op0)->fld[0]).rtx), op1),
    gen_binary (AND, mode, (((op0)->fld[1]).rtx),
         copy_rtx (op1))));
   if (((enum rtx_code) (x)->code) != AND)
     return x;
 }

      if (((enum rtx_code) (op1)->code) == IOR || ((enum rtx_code) (op1)->code) == XOR)
 return apply_distributive_law
   (gen_binary (((enum rtx_code) (op1)->code), mode,
         gen_binary (AND, mode, (((op1)->fld[0]).rtx), op0),
         gen_binary (AND, mode, (((op1)->fld[1]).rtx),
       copy_rtx (op0))));




      if (((enum rtx_code) (op0)->code) == NOT && ((enum rtx_code) (op1)->code) == XOR)
 return apply_distributive_law
   (gen_binary (XOR, mode,
         gen_binary (IOR, mode, (((op0)->fld[0]).rtx), (((op1)->fld[0]).rtx)),
         gen_binary (IOR, mode, copy_rtx ((((op0)->fld[0]).rtx)),
       (((op1)->fld[1]).rtx))));

      else if (((enum rtx_code) (op1)->code) == NOT && ((enum rtx_code) (op0)->code) == XOR)
 return apply_distributive_law
   (gen_binary (XOR, mode,
         gen_binary (IOR, mode, (((op1)->fld[0]).rtx), (((op0)->fld[0]).rtx)),
         gen_binary (IOR, mode, copy_rtx ((((op1)->fld[0]).rtx)), (((op0)->fld[1]).rtx))));
      break;

    case IOR:

      if (((enum rtx_code) (op1)->code) == CONST_INT
   && (mode_bitsize[(int) (mode)]) <= (8 * 8)
   && (nonzero_bits (op0, mode) & ~(((op1)->fld[0]).rtwint)) == 0)
 return op1;


      if (((enum rtx_code) (op0)->code) == AND
   && (rtx_equal_p ((((op0)->fld[0]).rtx), op1)
       || rtx_equal_p ((((op0)->fld[1]).rtx), op1))
   && ! side_effects_p ((((op0)->fld[0]).rtx))
   && ! side_effects_p ((((op0)->fld[1]).rtx)))
 return op1;




      if (((enum rtx_code) (op0)->code) == AND)
 {
   x = apply_distributive_law
     (gen_binary (AND, mode,
    gen_binary (IOR, mode, (((op0)->fld[0]).rtx), op1),
    gen_binary (IOR, mode, (((op0)->fld[1]).rtx),
         copy_rtx (op1))));

   if (((enum rtx_code) (x)->code) != IOR)
     return x;
 }

      if (((enum rtx_code) (op1)->code) == AND)
 {
   x = apply_distributive_law
     (gen_binary (AND, mode,
    gen_binary (IOR, mode, (((op1)->fld[0]).rtx), op0),
    gen_binary (IOR, mode, (((op1)->fld[1]).rtx),
         copy_rtx (op0))));

   if (((enum rtx_code) (x)->code) != IOR)
     return x;
 }




      if (((((enum rtx_code) (op0)->code) == ASHIFT && ((enum rtx_code) (op1)->code) == LSHIFTRT)
    || (((enum rtx_code) (op1)->code) == ASHIFT && ((enum rtx_code) (op0)->code) == LSHIFTRT))
   && rtx_equal_p ((((op0)->fld[0]).rtx), (((op1)->fld[0]).rtx))
   && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
   && ((enum rtx_code) ((((op1)->fld[1]).rtx))->code) == CONST_INT
   && (((((((op0)->fld[1]).rtx))->fld[0]).rtwint) + ((((((op1)->fld[1]).rtx))->fld[0]).rtwint)
       == (mode_bitsize[(int) (mode)])))
 return gen_rtx_fmt_ee (ROTATE, (mode), ((((op0)->fld[0]).rtx)), ((((enum rtx_code) (op0)->code) == ASHIFT ? (((op0)->fld[1]).rtx) : (((op1)->fld[1]).rtx))));
# 5439 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if (((enum rtx_code) (op1)->code) == CONST_INT && ((enum rtx_code) (op0)->code) == ASHIFTRT
   && ((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == PLUS
   && ((enum rtx_code) (((((((op0)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
   && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
   && ((((((op0)->fld[1]).rtx))->fld[0]).rtwint) < (8 * 8))
 {
   int count = ((((((op0)->fld[1]).rtx))->fld[0]).rtwint);
   long long mask = (((op1)->fld[0]).rtwint) << count;

   if (mask >> count == (((op1)->fld[0]).rtwint)
       && (mask & nonzero_bits ((((op0)->fld[0]).rtx), mode)) == 0)
     {
       do_SUBST(&(((((((op0)->fld[0]).rtx))->fld[1]).rtx)), (gen_rtx_CONST_INT (VOIDmode, (long long) ((((((((((op0)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint) | mask))));

       return op0;
     }
 }
      break;

    case XOR:




      if ((mode_bitsize[(int) (mode)]) <= (8 * 8)
   && (nonzero_bits (op0, mode)
       & nonzero_bits (op1, mode)) == 0)
 return (gen_binary (IOR, mode, op0, op1));




      {
 int num_negated = 0;

 if (((enum rtx_code) (op0)->code) == NOT)
   num_negated++, op0 = (((op0)->fld[0]).rtx);
 if (((enum rtx_code) (op1)->code) == NOT)
   num_negated++, op1 = (((op1)->fld[0]).rtx);

 if (num_negated == 2)
   {
     do_SUBST(&((((x)->fld[0]).rtx)), (op0));
     do_SUBST(&((((x)->fld[1]).rtx)), (op1));
   }
 else if (num_negated == 1)
   return
     simplify_gen_unary (NOT, mode, gen_binary (XOR, mode, op0, op1),
    mode);
      }





      if (((enum rtx_code) (op0)->code) == AND
   && rtx_equal_p ((((op0)->fld[1]).rtx), op1)
   && ! side_effects_p (op1))
 return gen_binary (AND, mode,
      simplify_gen_unary (NOT, mode, (((op0)->fld[0]).rtx), mode),
      op1);

      else if (((enum rtx_code) (op0)->code) == AND
        && rtx_equal_p ((((op0)->fld[0]).rtx), op1)
        && ! side_effects_p (op1))
 return gen_binary (AND, mode,
      simplify_gen_unary (NOT, mode, (((op0)->fld[1]).rtx), mode),
      op1);



      if (1 == 1
   && op1 == (const_int_rtx[64 +1])
   && (rtx_class[(int) (((enum rtx_code) (op0)->code))]) == '<'
   && (reversed = reversed_comparison (op0, mode, (((op0)->fld[0]).rtx),
           (((op0)->fld[1]).rtx))))
 return reversed;





      if (1 == 1
   && op1 == (const_int_rtx[64 +1])
   && ((enum rtx_code) (op0)->code) == LSHIFTRT
   && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
   && ((((((op0)->fld[1]).rtx))->fld[0]).rtwint) == (mode_bitsize[(int) (mode)]) - 1)
 return gen_rtx_fmt_ee (GE, (mode), ((((op0)->fld[0]).rtx)), ((const_int_rtx[64])));



      if ((mode_bitsize[(int) (mode)]) <= (8 * 8)
   && ((1 & mode_mask_array[(int) (mode)])
       == (unsigned long long) 1 << ((mode_bitsize[(int) (mode)]) - 1))
   && op1 == const_true_rtx
   && (rtx_class[(int) (((enum rtx_code) (op0)->code))]) == '<'
   && (reversed = reversed_comparison (op0, mode, (((op0)->fld[0]).rtx),
           (((op0)->fld[1]).rtx))))
 return reversed;

      break;

    default:
      fancy_abort ("/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c", 5542, __FUNCTION__);
    }

  return x;
}
# 5561 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static rtx
expand_compound_operation (x)
     rtx x;
{
  unsigned long long pos = 0, len;
  int unsignedp = 0;
  unsigned int modewidth;
  rtx tem;

  switch (((enum rtx_code) (x)->code))
    {
    case ZERO_EXTEND:
      unsignedp = 1;
    case SIGN_EXTEND:
# 5583 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == CONST_INT)
 return x;
# 5595 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if ((mode_size[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) > ((target_flags & 0x02000000) ? 8 : 4))
 return x;

      len = (mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]);



      if (len == 0)
 return x;

      break;

    case ZERO_EXTRACT:
      unsignedp = 1;
    case SIGN_EXTRACT:

      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == CLOBBER)
 return (((x)->fld[0]).rtx);

      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) != CONST_INT
   || ((enum rtx_code) ((((x)->fld[2]).rtx))->code) != CONST_INT
   || ((enum machine_mode) ((((x)->fld[0]).rtx))->mode) == VOIDmode)
 return x;

      len = ((((((x)->fld[1]).rtx))->fld[0]).rtwint);
      pos = ((((((x)->fld[2]).rtx))->fld[0]).rtwint);




      if (len + pos > (mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]))
 do_SUBST(&((((x)->fld[0]).rtx)), (gen_rtx_fmt_e (USE, (((enum machine_mode) (x)->mode)), ((((x)->fld[0]).rtx)))));

      if (0)
 pos = (mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) - len - pos;

      break;

    default:
      return x;
    }



  if (((enum rtx_code) (x)->code) == SIGN_EXTEND
      && ((mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) <= (8 * 8)
   && ((nonzero_bits ((((x)->fld[0]).rtx), ((enum machine_mode) ((((x)->fld[0]).rtx))->mode))
  & ~(((unsigned long long)
        mode_mask_array[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))])
       >> 1))
        == 0)))
    {
      rtx temp = gen_rtx_fmt_e (ZERO_EXTEND, (((enum machine_mode) (x)->mode)), ((((x)->fld[0]).rtx)));
      return expand_compound_operation (temp);
    }


  if (((enum rtx_code) (x)->code) == ZERO_EXTEND)
    {



      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == TRUNCATE
   && ((enum machine_mode) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->mode) == ((enum machine_mode) (x)->mode)
   && (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) <= (8 * 8)
   && (nonzero_bits (((((((x)->fld[0]).rtx))->fld[0]).rtx), ((enum machine_mode) (x)->mode))
       & ~mode_mask_array[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) == 0)
 return ((((((x)->fld[0]).rtx))->fld[0]).rtx);


      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SUBREG
   && ((enum machine_mode) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->mode) == ((enum machine_mode) (x)->mode)
   && subreg_lowpart_p ((((x)->fld[0]).rtx))
   && (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) <= (8 * 8)
   && (nonzero_bits (((((((x)->fld[0]).rtx))->fld[0]).rtx), ((enum machine_mode) (x)->mode))
       & ~mode_mask_array[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) == 0)
 return ((((((x)->fld[0]).rtx))->fld[0]).rtx);





      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == TRUNCATE
   && ((enum machine_mode) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->mode) == ((enum machine_mode) (x)->mode)
   && (rtx_class[(int) (((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code))]) == '<'
   && ((mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))])
       <= (8 * 8))
   && ((long long) 1
       & ~mode_mask_array[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) == 0)
 return ((((((x)->fld[0]).rtx))->fld[0]).rtx);


      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SUBREG
   && ((enum machine_mode) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->mode) == ((enum machine_mode) (x)->mode)
   && subreg_lowpart_p ((((x)->fld[0]).rtx))
   && (rtx_class[(int) (((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code))]) == '<'
   && ((mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))])
       <= (8 * 8))
   && ((long long) 1
       & ~mode_mask_array[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) == 0)
 return ((((((x)->fld[0]).rtx))->fld[0]).rtx);

    }
# 5714 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  modewidth = (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]);
  if (modewidth + len >= pos)
    tem = simplify_shift_const ((rtx) 0, unsignedp ? LSHIFTRT : ASHIFTRT,
    ((enum machine_mode) (x)->mode),
    simplify_shift_const ((rtx) 0, ASHIFT,
            ((enum machine_mode) (x)->mode),
            (((x)->fld[0]).rtx),
            modewidth - pos - len),
    modewidth - len);

  else if (unsignedp && len < (8 * 8))
    tem = simplify_and_const_int ((rtx) 0, ((enum machine_mode) (x)->mode),
      simplify_shift_const ((rtx) 0, LSHIFTRT,
       ((enum machine_mode) (x)->mode),
       (((x)->fld[0]).rtx), pos),
      ((long long) 1 << len) - 1);
  else

    return x;



  if (((enum rtx_code) (tem)->code) == CLOBBER)
    return x;

  return tem;
}
# 5750 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static rtx
expand_field_assignment (x)
     rtx x;
{
  rtx inner;
  rtx pos;
  int len;
  rtx mask;
  enum machine_mode compute_mode;


  while (1)
    {
      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == STRICT_LOW_PART
   && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code) == SUBREG)
 {
   inner = (((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx);
   len = (mode_bitsize[(int) (((enum machine_mode) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->mode))]);
   pos = gen_rtx_CONST_INT (VOIDmode, (long long) (subreg_lsb (((((((x)->fld[0]).rtx))->fld[0]).rtx))));
 }
      else if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ZERO_EXTRACT
        && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT)
 {
   inner = ((((((x)->fld[0]).rtx))->fld[0]).rtx);
   len = (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint);
   pos = ((((((x)->fld[0]).rtx))->fld[2]).rtx);



   if (((enum rtx_code) (pos)->code) == CONST_INT
       && (((pos)->fld[0]).rtwint) + len > (mode_bitsize[(int) (((enum machine_mode) (inner)->mode))]))
     inner = gen_rtx_fmt_e (USE, (((enum machine_mode) ((((x)->fld[0]).rtx))->mode)), (inner));

   if (0)
     {
       if (((enum rtx_code) (pos)->code) == CONST_INT)
  pos = gen_rtx_CONST_INT (VOIDmode, (long long) ((mode_bitsize[(int) (((enum machine_mode) (inner)->mode))]) - len - (((pos)->fld[0]).rtwint)));

       else if (((enum rtx_code) (pos)->code) == MINUS
         && ((enum rtx_code) ((((pos)->fld[1]).rtx))->code) == CONST_INT
         && (((((((pos)->fld[1]).rtx))->fld[0]).rtwint)
      == (mode_bitsize[(int) (((enum machine_mode) (inner)->mode))]) - len))

  pos = (((pos)->fld[0]).rtx);
       else
  pos = gen_binary (MINUS, ((enum machine_mode) (pos)->mode),
      gen_rtx_CONST_INT (VOIDmode, (long long) ((mode_bitsize[(int) (((enum machine_mode) (inner)->mode))]) - len)),

      pos);
     }
 }



      else if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SUBREG

        && nonzero_sign_valid
        && ((((mode_size[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))])
       + (((target_flags & 0x02000000) ? 8 : 4) - 1)) / ((target_flags & 0x02000000) ? 8 : 4))
     == (((mode_size[(int) (((enum machine_mode) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->mode))])
   + (((target_flags & 0x02000000) ? 8 : 4) - 1)) / ((target_flags & 0x02000000) ? 8 : 4))))
 {
   x = gen_rtx_fmt_ee (SET, (VOIDmode), (((((((x)->fld[0]).rtx))->fld[0]).rtx)), (gen_lowpart_for_combine (((enum machine_mode) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->mode), (((x)->fld[1]).rtx))));



   continue;
 }
      else
 break;

      while (((enum rtx_code) (inner)->code) == SUBREG && subreg_lowpart_p (inner))
 inner = (((inner)->fld[0]).rtx);

      compute_mode = ((enum machine_mode) (inner)->mode);


      if (! ((mode_class[(int) (compute_mode)]) == MODE_INT || (mode_class[(int) (compute_mode)]) == MODE_PARTIAL_INT || (mode_class[(int) (compute_mode)]) == MODE_COMPLEX_INT || (mode_class[(int) (compute_mode)]) == MODE_VECTOR_INT))
 {
   enum machine_mode imode;


   if (! ((mode_class[(int) (compute_mode)]) == MODE_FLOAT || (mode_class[(int) (compute_mode)]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (compute_mode)]) == MODE_VECTOR_FLOAT))
     break;


   imode = mode_for_size ((mode_bitsize[(int) (compute_mode)]), MODE_INT, 0);
   if (imode == BLKmode)
     break;

   compute_mode = imode;
   inner = gen_lowpart_for_combine (imode, inner);
 }


      if (len < (8 * 8))
 mask = gen_rtx_CONST_INT (VOIDmode, (long long) (((long long) 1 << len) - 1));
      else
 break;




      x = gen_rtx_fmt_ee (SET, (VOIDmode), (copy_rtx (inner)), (gen_binary (IOR, compute_mode, gen_binary (AND, compute_mode, simplify_gen_unary (NOT, compute_mode, gen_binary (ASHIFT, compute_mode, mask, pos), compute_mode), inner), gen_binary (ASHIFT, compute_mode, gen_binary (AND, compute_mode, gen_lowpart_for_combine (compute_mode, (((x)->fld[1]).rtx)), mask), pos))));
# 5869 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
    }

  return x;
}
# 5901 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static rtx
make_extraction (mode, inner, pos, pos_rtx, len,
   unsignedp, in_dest, in_compare)
     enum machine_mode mode;
     rtx inner;
     long long pos;
     rtx pos_rtx;
     unsigned long long len;
     int unsignedp;
     int in_dest, in_compare;
{



  enum machine_mode is_mode = ((enum machine_mode) (inner)->mode);
  enum machine_mode inner_mode;
  enum machine_mode wanted_inner_mode = byte_mode;
  enum machine_mode wanted_inner_reg_mode = word_mode;
  enum machine_mode pos_mode = word_mode;
  enum machine_mode extraction_mode = word_mode;
  enum machine_mode tmode = mode_for_size (len, MODE_INT, 1);
  int spans_byte = 0;
  rtx new = 0;
  rtx orig_pos_rtx = pos_rtx;
  long long orig_pos;


  if (((enum rtx_code) (inner)->code) == USE)



    spans_byte = 1, inner = (((inner)->fld[0]).rtx);
  else if (((enum rtx_code) (inner)->code) == SUBREG && subreg_lowpart_p (inner))
    {





      if (((enum rtx_code) ((((inner)->fld[0]).rtx))->code) == MEM)
 is_mode = ((enum machine_mode) ((((inner)->fld[0]).rtx))->mode);
      inner = (((inner)->fld[0]).rtx);
    }

  inner_mode = ((enum machine_mode) (inner)->mode);

  if (pos_rtx && ((enum rtx_code) (pos_rtx)->code) == CONST_INT)
    pos = (((pos_rtx)->fld[0]).rtwint), pos_rtx = 0;
# 5963 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (tmode != BLKmode
      && ! (spans_byte && inner_mode != tmode)
      && ((pos_rtx == 0 && (pos % ((target_flags & 0x02000000) ? 64 : 32)) == 0
    && ((enum rtx_code) (inner)->code) != MEM
    && (! in_dest
        || (((enum rtx_code) (inner)->code) == REG
     && have_insn_for (STRICT_LOW_PART, tmode))))
   || (((enum rtx_code) (inner)->code) == MEM && pos_rtx == 0
       && (pos
    % (0 ? get_mode_alignment (tmode)
       : 8)) == 0


       && (mode_bitsize[(int) (inner_mode)]) >= (mode_bitsize[(int) (tmode)])
       && (inner_mode == tmode
    || (! mode_dependent_address_p ((((inner)->fld[0]).rtx))
        && ! ((inner)->volatil))))))
    {







      if (((enum rtx_code) (inner)->code) == MEM)
 {
   long long offset;


   if (0)
     offset = ((mode_bitsize[(int) (is_mode)]) - len - pos) / 8;
   else
     offset = pos / 8;

   new = adjust_address_1 (inner, tmode, offset, 0, 1);
 }
      else if (((enum rtx_code) (inner)->code) == REG)
 {


   if (tmode != inner_mode)
     {
       long long final_word = pos / ((target_flags & 0x02000000) ? 64 : 32);

       if (0
    && (mode_size[(int) (inner_mode)]) > ((target_flags & 0x02000000) ? 8 : 4))
  final_word = (((mode_size[(int) (inner_mode)])
          - (mode_size[(int) (tmode)]))
         / ((target_flags & 0x02000000) ? 8 : 4)) - final_word;

       final_word *= ((target_flags & 0x02000000) ? 8 : 4);
       if (0 &&
    (mode_size[(int) (inner_mode)]) > (mode_size[(int) (tmode)]))
  final_word += ((mode_size[(int) (inner_mode)])
          - (mode_size[(int) (tmode)])) % ((target_flags & 0x02000000) ? 8 : 4);

       new = gen_rtx_SUBREG (tmode, inner, final_word);
     }
   else
     new = inner;
 }
      else
 new = force_to_mode (inner, tmode,
        len >= (8 * 8)
        ? ~(unsigned long long) 0
        : ((unsigned long long) 1 << len) - 1,
        (rtx) 0, 0);




      if (in_dest)
 return (((enum rtx_code) (new)->code) == MEM ? new
  : (((enum rtx_code) (new)->code) != SUBREG
     ? gen_rtx_fmt_e (CLOBBER, (tmode), ((const_int_rtx[64])))
     : gen_rtx_fmt_e (STRICT_LOW_PART, (VOIDmode), (new))));

      if (mode == tmode)
 return new;

      if (((enum rtx_code) (new)->code) == CONST_INT)
 return gen_rtx_CONST_INT (VOIDmode, (long long) (trunc_int_for_mode ((((new)->fld[0]).rtwint), mode)));




      if (flag_expensive_optimizations
   && ((mode_bitsize[(int) (tmode)]) <= (8 * 8)
       && ((nonzero_bits (new, tmode)
     & ~(((unsigned long long)
   mode_mask_array[(int) (tmode)])
         >> 1))
    == 0)))
 {
   rtx temp = gen_rtx_fmt_e (ZERO_EXTEND, (mode), (new));
   rtx temp1 = gen_rtx_fmt_e (SIGN_EXTEND, (mode), (new));



   if (rtx_cost (temp, SET) <= rtx_cost (temp1, SET))
     return temp;
   return temp1;
 }




      return (gen_rtx_fmt_e (unsignedp ? ZERO_EXTEND : SIGN_EXTEND,
        mode, new));
    }




  if (pos_rtx == 0 && pos == 0 && ! in_dest
      && ! in_compare && ! spans_byte && unsignedp)
    return 0;






  if (! spans_byte && ((enum rtx_code) (inner)->code) == MEM
      && ((pos_rtx == 0 && pos + len > (mode_bitsize[(int) (is_mode)]))
   || (pos_rtx != 0 && len != 1)))
    return 0;



  if (in_dest && mode_for_extraction (EP_insv, -1) != MAX_MACHINE_MODE)
    {
      wanted_inner_reg_mode = mode_for_extraction (EP_insv, 0);
      pos_mode = mode_for_extraction (EP_insv, 2);
      extraction_mode = mode_for_extraction (EP_insv, 3);
    }

  if (! in_dest && unsignedp
      && mode_for_extraction (EP_extzv, -1) != MAX_MACHINE_MODE)
    {
      wanted_inner_reg_mode = mode_for_extraction (EP_extzv, 1);
      pos_mode = mode_for_extraction (EP_extzv, 3);
      extraction_mode = mode_for_extraction (EP_extzv, 0);
    }

  if (! in_dest && ! unsignedp
      && mode_for_extraction (EP_extv, -1) != MAX_MACHINE_MODE)
    {
      wanted_inner_reg_mode = mode_for_extraction (EP_extv, 1);
      pos_mode = mode_for_extraction (EP_extv, 3);
      extraction_mode = mode_for_extraction (EP_extv, 0);
    }



  if (mode != VOIDmode
      && (mode_size[(int) (extraction_mode)]) < (mode_size[(int) (mode)]))
    extraction_mode = mode;

  if (pos_rtx && ((enum machine_mode) (pos_rtx)->mode) != VOIDmode
      && (mode_size[(int) (pos_mode)]) < (mode_size[(int) (((enum machine_mode) (pos_rtx)->mode))]))
    pos_mode = ((enum machine_mode) (pos_rtx)->mode);




  if (((enum rtx_code) (inner)->code) != MEM)
    wanted_inner_mode = wanted_inner_reg_mode;
  else if (inner_mode != wanted_inner_mode
    && (mode_dependent_address_p ((((inner)->fld[0]).rtx))
        || ((inner)->volatil)))
    wanted_inner_mode = extraction_mode;

  orig_pos = pos;

  if (0)
    {







      int width = (((enum rtx_code) (inner)->code) == MEM
     ? (mode_bitsize[(int) (is_mode)])
     : (mode_bitsize[(int) (wanted_inner_mode)]));

      if (pos_rtx == 0)
 pos = width - len - pos;
      else
 pos_rtx
   = gen_rtx_fmt_ee (MINUS, (((enum machine_mode) (pos_rtx)->mode)), (gen_rtx_CONST_INT (VOIDmode, (long long) (width - len))), (pos_rtx));


    }




  if (wanted_inner_mode != VOIDmode
      && (mode_size[(int) (wanted_inner_mode)]) < (mode_size[(int) (is_mode)])
      && ((((enum rtx_code) (inner)->code) == MEM
    && (inner_mode == wanted_inner_mode
        || (! mode_dependent_address_p ((((inner)->fld[0]).rtx))
     && ! ((inner)->volatil))))))
    {
      int offset = 0;







      if (0
   && ! spans_byte
   && (mode_size[(int) (inner_mode)]) < (mode_size[(int) (is_mode)]))
 offset -= (mode_size[(int) (is_mode)]) - (mode_size[(int) (inner_mode)]);


      if (pos_rtx == 0)
 {
   offset += pos / 8;
   pos %= (mode_bitsize[(int) (wanted_inner_mode)]);
 }

      if (0 != 0
   && ! spans_byte
   && is_mode != wanted_inner_mode)
 offset = ((mode_size[(int) (is_mode)])
    - (mode_size[(int) (wanted_inner_mode)]) - offset);

      if (offset != 0 || inner_mode != wanted_inner_mode)
 inner = adjust_address_1 (inner, wanted_inner_mode, offset, 0, 1);
    }




  else if (((enum rtx_code) (inner)->code) != MEM)
    {
      if (((enum machine_mode) (inner)->mode) != wanted_inner_mode
   && (pos_rtx != 0
       || orig_pos + len > (mode_bitsize[(int) (wanted_inner_mode)])))
 return 0;

      inner = force_to_mode (inner, wanted_inner_mode,
        pos_rtx
        || len + orig_pos >= (8 * 8)
        ? ~(unsigned long long) 0
        : ((((unsigned long long) 1 << len) - 1)
    << orig_pos),
        (rtx) 0, 0);
    }



  if (pos_rtx != 0
      && (mode_size[(int) (pos_mode)]) > (mode_size[(int) (((enum machine_mode) (pos_rtx)->mode))]))
    {
      rtx temp = gen_rtx_fmt_e (ZERO_EXTEND, (pos_mode), (pos_rtx));





      if (flag_expensive_optimizations
   && ((mode_bitsize[(int) (((enum machine_mode) (pos_rtx)->mode))]) <= (8 * 8)
       && ((nonzero_bits (pos_rtx, ((enum machine_mode) (pos_rtx)->mode))
     & ~(((unsigned long long)
   mode_mask_array[(int) (((enum machine_mode) (pos_rtx)->mode))])
         >> 1))
    == 0)))
 {
   rtx temp1 = gen_rtx_fmt_e (SIGN_EXTEND, (pos_mode), (pos_rtx));



   if (rtx_cost (temp1, SET) < rtx_cost (temp, SET))
     temp = temp1;
 }
      pos_rtx = temp;
    }
  else if (pos_rtx != 0
    && (mode_size[(int) (pos_mode)]) < (mode_size[(int) (((enum machine_mode) (pos_rtx)->mode))]))
    pos_rtx = gen_lowpart_for_combine (pos_mode, pos_rtx);




  if (pos_rtx == 0 && orig_pos_rtx != 0 && (((orig_pos_rtx)->fld[0]).rtwint) == pos)
    pos_rtx = orig_pos_rtx;

  else if (pos_rtx == 0)
    pos_rtx = gen_rtx_CONST_INT (VOIDmode, (long long) (pos));


  new = gen_rtx_fmt_eee (unsignedp ? ZERO_EXTRACT : SIGN_EXTRACT,
    extraction_mode, inner, gen_rtx_CONST_INT (VOIDmode, (long long) (len)), pos_rtx);
  if (! in_dest)
    new = gen_lowpart_for_combine (mode, new);

  return new;
}




static rtx
extract_left_shift (x, count)
     rtx x;
     int count;
{
  enum rtx_code code = ((enum rtx_code) (x)->code);
  enum machine_mode mode = ((enum machine_mode) (x)->mode);
  rtx tem;

  switch (code)
    {
    case ASHIFT:



      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) >= count)
 return simplify_shift_const ((rtx) 0, ASHIFT, mode, (((x)->fld[0]).rtx),
         ((((((x)->fld[1]).rtx))->fld[0]).rtwint) - count);
      break;

    case NEG: case NOT:
      if ((tem = extract_left_shift ((((x)->fld[0]).rtx), count)) != 0)
 return simplify_gen_unary (code, mode, tem, mode);

      break;

    case PLUS: case IOR: case XOR: case AND:


      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
   && (((((((x)->fld[1]).rtx))->fld[0]).rtwint) & ((((long long) 1 << count)) - 1)) == 0
   && (tem = extract_left_shift ((((x)->fld[0]).rtx), count)) != 0)
 return gen_binary (code, mode, tem,
      gen_rtx_CONST_INT (VOIDmode, (long long) (((((((x)->fld[1]).rtx))->fld[0]).rtwint) >> count)));

      break;

    default:
      break;
    }

  return 0;
}
# 6336 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static rtx
make_compound_operation (x, in_code)
     rtx x;
     enum rtx_code in_code;
{
  enum rtx_code code = ((enum rtx_code) (x)->code);
  enum machine_mode mode = ((enum machine_mode) (x)->mode);
  int mode_width = (mode_bitsize[(int) (mode)]);
  rtx rhs, lhs;
  enum rtx_code next_code;
  int i;
  rtx new = 0;
  rtx tem;
  const char *fmt;





  next_code = (code == MEM || code == PLUS || code == MINUS ? MEM
        : ((code == COMPARE || (rtx_class[(int) (code)]) == '<')
    && (((x)->fld[1]).rtx) == (const_int_rtx[64])) ? COMPARE
        : in_code == COMPARE ? SET : in_code);




  switch (code)
    {
    case ASHIFT:


      if (in_code == MEM && ((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) < (8 * 8)
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) >= 0)
 {
   new = make_compound_operation ((((x)->fld[0]).rtx), next_code);
   new = gen_rtx_fmt_ee (MULT, (mode), (new), (gen_rtx_CONST_INT (VOIDmode, (long long) ((long long) 1 << ((((((x)->fld[1]).rtx))->fld[0]).rtwint)))));


 }
      break;

    case AND:


      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) != CONST_INT)
 break;



      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == LSHIFTRT
   && (i = exact_log2_wide ((unsigned long long) (((((((x)->fld[1]).rtx))->fld[0]).rtwint) + 1))) >= 0)
 {
   new = make_compound_operation (((((((x)->fld[0]).rtx))->fld[0]).rtx), next_code);
   new = make_extraction (mode, new, 0, ((((((x)->fld[0]).rtx))->fld[1]).rtx), i, 1,
     0, in_code == COMPARE);
 }


      else if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SUBREG
        && subreg_lowpart_p ((((x)->fld[0]).rtx))
        && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code) == LSHIFTRT
        && (i = exact_log2_wide ((unsigned long long) (((((((x)->fld[1]).rtx))->fld[0]).rtwint) + 1))) >= 0)
 {
   new = make_compound_operation ((((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx),
      next_code);
   new = make_extraction (((enum machine_mode) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->mode), new, 0,
     (((((((((x)->fld[0]).rtx))->fld[0]).rtx))->fld[1]).rtx), i, 1,
     0, in_code == COMPARE);
 }

      else if ((((enum rtx_code) ((((x)->fld[0]).rtx))->code) == XOR
  || ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == IOR)
        && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[0]).rtx))->code) == LSHIFTRT
        && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == LSHIFTRT
        && (i = exact_log2_wide ((unsigned long long) (((((((x)->fld[1]).rtx))->fld[0]).rtwint) + 1))) >= 0)
 {

   new = gen_rtx_fmt_ee (((enum rtx_code) ((((x)->fld[0]).rtx))->code), mode,
    gen_rtx_fmt_ee (AND, (mode), (((((((x)->fld[0]).rtx))->fld[0]).rtx)), ((((x)->fld[1]).rtx))),

    gen_rtx_fmt_ee (AND, (mode), (((((((x)->fld[0]).rtx))->fld[1]).rtx)), ((((x)->fld[1]).rtx))));

   new = make_compound_operation (new, in_code);
 }




      else if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ROTATE
        && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
        && (i = exact_log2_wide ((unsigned long long) (((((((x)->fld[1]).rtx))->fld[0]).rtwint) + 1))) >= 0
        && i <= (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint))
 {
   new = make_compound_operation (((((((x)->fld[0]).rtx))->fld[0]).rtx), next_code);
   new = make_extraction (mode, new,
     ((mode_bitsize[(int) (mode)])
      - (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint)),
     (rtx) 0, i, 1, 0, in_code == COMPARE);
 }




      else if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == LSHIFTRT
        && !have_insn_for (LSHIFTRT, mode)
        && have_insn_for (ASHIFTRT, mode)
        && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
        && (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint) >= 0
        && (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint) < (8 * 8)
        && mode_width <= (8 * 8))
 {
   unsigned long long mask = mode_mask_array[(int) (mode)];

   mask >>= (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint);
   if ((((((((x)->fld[1]).rtx))->fld[0]).rtwint) & ~mask) == 0)
     do_SUBST(&((((x)->fld[0]).rtx)), (gen_rtx_fmt_ee (ASHIFTRT, (mode), (make_compound_operation (((((((x)->fld[0]).rtx))->fld[0]).rtx), next_code)), (((((((x)->fld[0]).rtx))->fld[1]).rtx)))));




 }





      else if ((i = exact_log2_wide ((unsigned long long) (((((((x)->fld[1]).rtx))->fld[0]).rtwint) + 1))) >= 0)
 new = make_extraction (mode,
          make_compound_operation ((((x)->fld[0]).rtx),
       next_code),
          0, (rtx) 0, i, 1, 0, in_code == COMPARE);



      else if (in_code == COMPARE
        && (i = exact_log2_wide ((unsigned long long) (((((((x)->fld[1]).rtx))->fld[0]).rtwint)))) >= 0)
 new = make_extraction (mode,
          make_compound_operation ((((x)->fld[0]).rtx),
       next_code),
          i, (rtx) 0, 1, 1, 0, 1);

      break;

    case LSHIFTRT:


      if (have_insn_for (ASHIFTRT, mode)
   && ! have_insn_for (LSHIFTRT, mode)
   && mode_width <= (8 * 8)
   && (nonzero_bits ((((x)->fld[0]).rtx), mode) & (1 << (mode_width - 1))) == 0)
 {
   new = gen_rtx_fmt_ee (ASHIFTRT, (mode), (make_compound_operation ((((x)->fld[0]).rtx), next_code)), ((((x)->fld[1]).rtx)));



   break;
 }



    case ASHIFTRT:
      lhs = (((x)->fld[0]).rtx);
      rhs = (((x)->fld[1]).rtx);



      if (((enum rtx_code) (rhs)->code) == CONST_INT
   && ((enum rtx_code) (lhs)->code) == ASHIFT
   && ((enum rtx_code) ((((lhs)->fld[1]).rtx))->code) == CONST_INT
   && (((rhs)->fld[0]).rtwint) >= ((((((lhs)->fld[1]).rtx))->fld[0]).rtwint))
 {
   new = make_compound_operation ((((lhs)->fld[0]).rtx), next_code);
   new = make_extraction (mode, new,
     (((rhs)->fld[0]).rtwint) - ((((((lhs)->fld[1]).rtx))->fld[0]).rtwint),
     (rtx) 0, mode_width - (((rhs)->fld[0]).rtwint),
     code == LSHIFTRT, 0, in_code == COMPARE);
   break;
 }






      if ((rtx_class[(int) (((enum rtx_code) (lhs)->code))]) != 'o'
   && ! (((enum rtx_code) (lhs)->code) == SUBREG
  && ((rtx_class[(int) (((enum rtx_code) ((((lhs)->fld[0]).rtx))->code))]) == 'o'))
   && ((enum rtx_code) (rhs)->code) == CONST_INT
   && (((rhs)->fld[0]).rtwint) < (8 * 8)
   && (new = extract_left_shift (lhs, (((rhs)->fld[0]).rtwint))) != 0)
 new = make_extraction (mode, make_compound_operation (new, next_code),
          0, (rtx) 0, mode_width - (((rhs)->fld[0]).rtwint),
          code == LSHIFTRT, 0, in_code == COMPARE);

      break;

    case SUBREG:




      tem = make_compound_operation ((((x)->fld[0]).rtx), in_code);
      if (((enum rtx_code) (tem)->code) != ((enum rtx_code) ((((x)->fld[0]).rtx))->code)
   && (mode_size[(int) (mode)]) < (mode_size[(int) (((enum machine_mode) (tem)->mode))])
   && subreg_lowpart_p (x))
 {
   rtx newer = force_to_mode (tem, mode, ~(long long) 0,
         (rtx) 0, 0);



   if (((enum rtx_code) (newer)->code) != SUBREG)
     newer = make_compound_operation (newer, in_code);

   return newer;
 }





      if ((((enum rtx_code) (tem)->code) == SIGN_EXTEND
    || ((enum rtx_code) (tem)->code) == ZERO_EXTEND)
   && subreg_lowpart_p (x))
 {
   if ((mode_size[(int) (mode)]) > (mode_size[(int) (((enum machine_mode) (tem)->mode))])
       || ((mode_size[(int) (mode)]) >
    (mode_size[(int) (((enum machine_mode) ((((tem)->fld[0]).rtx))->mode))])))
     tem = gen_rtx_fmt_e (((enum rtx_code) (tem)->code), mode, (((tem)->fld[0]).rtx));
   else
     tem = gen_lowpart_for_combine (mode, (((tem)->fld[0]).rtx));
   return tem;
 }
      break;

    default:
      break;
    }

  if (new)
    {
      x = gen_lowpart_for_combine (mode, new);
      code = ((enum rtx_code) (x)->code);
    }


  fmt = (rtx_format[(int) (code)]);
  for (i = 0; i < (rtx_length[(int) (code)]); i++)
    if (fmt[i] == 'e')
      {
 new = make_compound_operation ((((x)->fld[i]).rtx), next_code);
 do_SUBST(&((((x)->fld[i]).rtx)), (new));
      }

  return x;
}
# 6602 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static int
get_pos_from_mask (m, plen)
     unsigned long long m;
     unsigned long long *plen;
{

  int pos = exact_log2_wide ((unsigned long long) (m & -m));
  int len;

  if (pos < 0)
    return -1;



  len = exact_log2_wide ((unsigned long long) ((m >> pos) + 1));

  if (len <= 0)
    return -1;

  *plen = len;
  return pos;
}
# 6641 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static rtx
force_to_mode (x, mode, mask, reg, just_select)
     rtx x;
     enum machine_mode mode;
     unsigned long long mask;
     rtx reg;
     int just_select;
{
  enum rtx_code code = ((enum rtx_code) (x)->code);
  int next_select = just_select || code == XOR || code == NOT || code == NEG;
  enum machine_mode op_mode;
  unsigned long long fuller_mask, nonzero;
  rtx op0, op1, temp;







  if (code == CALL || code == ASM_OPERANDS || code == CLOBBER)
    return x;




  op_mode = (((mode_class[(int) (mode)]) == (mode_class[(int) (((enum machine_mode) (x)->mode))])
       && have_insn_for (code, mode))
      ? mode : ((enum machine_mode) (x)->mode));



  if ((code == LSHIFTRT || code == ASHIFTRT)
      && (mode_bitsize[(int) (mode)]) < (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]))
    op_mode = ((enum machine_mode) (x)->mode);


  if (op_mode)
    mask &= mode_mask_array[(int) (op_mode)];




  if (op_mode)
    fuller_mask = ((mode_bitsize[(int) (op_mode)]) >= (8 * 8)
     ? mode_mask_array[(int) (op_mode)]
     : (((unsigned long long) 1 << (floor_log2_wide ((unsigned long long) (mask)) + 1))
        - 1));
  else
    fuller_mask = ~(long long) 0;


  nonzero = nonzero_bits (x, mode);


  if (! just_select && (nonzero & mask) == 0)
    return (const_int_rtx[64]);



  if (((enum rtx_code) (x)->code) == CONST_INT)
    return gen_int_mode ((((x)->fld[0]).rtwint) & mask, mode);



  if ((mode_size[(int) (((enum machine_mode) (x)->mode))]) < (mode_size[(int) (mode)])
      && (mode_mask_array[(int) (((enum machine_mode) (x)->mode))] & ~mask) == 0)
    return gen_lowpart_for_combine (mode, x);



  if (((enum machine_mode) (x)->mode) == mode && code != SUBREG && (~mask & nonzero) == 0)
    return x;

  switch (code)
    {
    case CLOBBER:


      return x;

    case USE:



      if (! 0
   && (mask & ~mode_mask_array[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) == 0)
 return force_to_mode ((((x)->fld[0]).rtx), mode, mask, reg, next_select);
      break;

    case SIGN_EXTEND:
    case ZERO_EXTEND:
    case ZERO_EXTRACT:
    case SIGN_EXTRACT:
      x = expand_compound_operation (x);
      if (((enum rtx_code) (x)->code) != code)
 return force_to_mode (x, mode, mask, reg, next_select);
      break;

    case REG:
      if (reg != 0 && (rtx_equal_p (get_last_value (reg), x)
         || rtx_equal_p (reg, get_last_value (x))))
 x = reg;
      break;

    case SUBREG:
      if (subreg_lowpart_p (x)



   && (((mode_size[(int) (((enum machine_mode) (x)->mode))])
        < (mode_size[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]))
       || (0 == (mask
   & mode_mask_array[(int) (((enum machine_mode) (x)->mode))]
   & ~mode_mask_array[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]))))
 return force_to_mode ((((x)->fld[0]).rtx), mode, mask, reg, next_select);
      break;

    case AND:




      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT)
 {
   x = simplify_and_const_int (x, op_mode, (((x)->fld[0]).rtx),
          mask & ((((((x)->fld[1]).rtx))->fld[0]).rtwint));





   if (((enum rtx_code) (x)->code) == AND && ((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
       && ((((((((x)->fld[1]).rtx))->fld[0]).rtwint) & mode_mask_array[(int) (((enum machine_mode) (x)->mode))])
    == (long long) mask))
     x = (((x)->fld[0]).rtx);






   if (((enum rtx_code) (x)->code) == AND && ((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
       && mode_mask_array[(int) (((enum machine_mode) (x)->mode))] != mask
       && (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) <= (8 * 8))
     {
       long long cval = (((((((x)->fld[1]).rtx))->fld[0]).rtwint)
        | (mode_mask_array[(int) (((enum machine_mode) (x)->mode))] & ~mask));
       int width = (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]);
       rtx y;



       if (width > 0 && width < (8 * 8)
    && (cval & ((long long) 1 << (width - 1))) != 0)
  cval |= (long long) -1 << width;

       y = gen_binary (AND, ((enum machine_mode) (x)->mode), (((x)->fld[0]).rtx), gen_rtx_CONST_INT (VOIDmode, (long long) (cval)));
       if (rtx_cost (y, SET) < rtx_cost (x, SET))
  x = y;
     }

   break;
 }

      goto binop;

    case PLUS:





      {
 unsigned int width = (mode_bitsize[(int) (mode)]);
 unsigned long long smask = mask;




 if (width < (8 * 8)
     && (smask & ((long long) 1 << (width - 1))) != 0)
   smask |= (long long) -1 << width;

 if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
     && exact_log2_wide ((unsigned long long) (- smask)) >= 0
     && (nonzero_bits ((((x)->fld[0]).rtx), mode) & ~smask) == 0
     && (((((((x)->fld[1]).rtx))->fld[0]).rtwint) & ~smask) != 0)
   return force_to_mode (plus_constant_wide (((((x)->fld[0]).rtx)), (long long) ((((((((x)->fld[1]).rtx))->fld[0]).rtwint) & smask))),

    mode, smask, reg, next_select);
      }



    case MULT:



      mask = fuller_mask;
      goto binop;

    case MINUS:


      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == CONST_INT
   && (((unsigned long long) (((((((x)->fld[0]).rtx))->fld[0]).rtwint)
     & -((((((x)->fld[0]).rtx))->fld[0]).rtwint)))
       > mask))
 {
   x = simplify_gen_unary (NEG, ((enum machine_mode) (x)->mode), (((x)->fld[1]).rtx),
      ((enum machine_mode) (x)->mode));
   return force_to_mode (x, mode, mask, reg, next_select);
 }



      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == CONST_INT
   && ((((((((x)->fld[0]).rtx))->fld[0]).rtwint) | (long long) mask)
       == ((((((x)->fld[0]).rtx))->fld[0]).rtwint)))
 {
   x = simplify_gen_unary (NOT, ((enum machine_mode) (x)->mode),
      (((x)->fld[1]).rtx), ((enum machine_mode) (x)->mode));
   return force_to_mode (x, mode, mask, reg, next_select);
 }

      mask = fuller_mask;
      goto binop;

    case IOR:
    case XOR:





      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == LSHIFTRT
   && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
   && (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint) >= 0
   && (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint) < (8 * 8)
   && ((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
   && (((((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint)
        + floor_log2_wide ((unsigned long long) (((((((x)->fld[1]).rtx))->fld[0]).rtwint))))
       < (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]))
   && (((((((x)->fld[1]).rtx))->fld[0]).rtwint)
       & ~nonzero_bits ((((x)->fld[0]).rtx), ((enum machine_mode) (x)->mode))) == 0)
 {
   temp = gen_rtx_CONST_INT (VOIDmode, (long long) ((((((((x)->fld[1]).rtx))->fld[0]).rtwint) & mask) << (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint)));

   temp = gen_binary (((enum rtx_code) (x)->code), ((enum machine_mode) (x)->mode),
        ((((((x)->fld[0]).rtx))->fld[0]).rtx), temp);
   x = gen_binary (LSHIFTRT, ((enum machine_mode) (x)->mode), temp,
     ((((((x)->fld[0]).rtx))->fld[1]).rtx));
   return force_to_mode (x, mode, mask, reg, next_select);
 }

    binop:



      op0 = gen_lowpart_for_combine (op_mode,
         force_to_mode ((((x)->fld[0]).rtx), mode, mask,
          reg, next_select));
      op1 = gen_lowpart_for_combine (op_mode,
         force_to_mode ((((x)->fld[1]).rtx), mode, mask,
          reg, next_select));

      if (op_mode != ((enum machine_mode) (x)->mode) || op0 != (((x)->fld[0]).rtx) || op1 != (((x)->fld[1]).rtx))
 x = gen_binary (code, op_mode, op0, op1);
      break;

    case ASHIFT:






      if (! (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
      && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) >= 0
      && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) < (mode_bitsize[(int) (mode)]))
   && ! (((enum machine_mode) ((((x)->fld[1]).rtx))->mode) != VOIDmode
  && (nonzero_bits ((((x)->fld[1]).rtx), ((enum machine_mode) ((((x)->fld[1]).rtx))->mode))
      < (unsigned long long) (mode_bitsize[(int) (mode)]))))
 break;




      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) >= 0
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) < (mode_bitsize[(int) (op_mode)])
   && (mode_bitsize[(int) (op_mode)]) <= (8 * 8))
 mask >>= ((((((x)->fld[1]).rtx))->fld[0]).rtwint);
      else
 mask = fuller_mask;

      op0 = gen_lowpart_for_combine (op_mode,
         force_to_mode ((((x)->fld[0]).rtx), op_mode,
          mask, reg, next_select));

      if (op_mode != ((enum machine_mode) (x)->mode) || op0 != (((x)->fld[0]).rtx))
 x = gen_binary (code, op_mode, op0, (((x)->fld[1]).rtx));
      break;

    case LSHIFTRT:




      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) < (8 * 8)
   && (mode_bitsize[(int) (op_mode)]) <= (8 * 8))
 {
   rtx inner = (((x)->fld[0]).rtx);
   unsigned long long inner_mask;


   inner_mask = mask << ((((((x)->fld[1]).rtx))->fld[0]).rtwint);




   if ((mode_bitsize[(int) (op_mode)]) > (8 * 8)
       || (inner_mask & ~mode_mask_array[(int) (op_mode)]) != 0)
     op_mode = ((enum machine_mode) (x)->mode);

   inner = force_to_mode (inner, op_mode, inner_mask, reg, next_select);

   if (((enum machine_mode) (x)->mode) != op_mode || inner != (((x)->fld[0]).rtx))
     x = gen_binary (LSHIFTRT, op_mode, inner, (((x)->fld[1]).rtx));
 }





      if (((enum rtx_code) (x)->code) == LSHIFTRT
   && ((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT


   && ((((((((x)->fld[1]).rtx))->fld[0]).rtwint)
        + num_sign_bit_copies ((((x)->fld[0]).rtx), ((enum machine_mode) ((((x)->fld[0]).rtx))->mode)))
       >= (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]))
   && exact_log2_wide ((unsigned long long) (mask + 1)) >= 0


   && ((((((((x)->fld[1]).rtx))->fld[0]).rtwint) + exact_log2_wide ((unsigned long long) (mask + 1)))
       <= (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]))

   && ((int) num_sign_bit_copies ((((x)->fld[0]).rtx), ((enum machine_mode) ((((x)->fld[0]).rtx))->mode))
       >= exact_log2_wide ((unsigned long long) (mask + 1))))
 x = gen_binary (LSHIFTRT, ((enum machine_mode) (x)->mode), (((x)->fld[0]).rtx),
   gen_rtx_CONST_INT (VOIDmode, (long long) ((mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) - exact_log2_wide ((unsigned long long) (mask + 1)))));


      goto shiftrt;

    case ASHIFTRT:


      if ((mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) <= (8 * 8)
   && (mask == ((unsigned long long) 1
         << ((mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) - 1))))
 return force_to_mode ((((x)->fld[0]).rtx), mode, mask, reg, next_select);
# 7014 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) >= 0
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) < (8 * 8))
 {
   int i = -1;





   if ((mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) > (8 * 8))
     {
       nonzero = ~(long long) 0;






       if ((mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) - ((((((x)->fld[1]).rtx))->fld[0]).rtwint)
    < (8 * 8))
  nonzero >>= ((((((x)->fld[1]).rtx))->fld[0]).rtwint)
       + (8 * 8)
       - (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) ;
     }
   else
     {
       nonzero = mode_mask_array[(int) (((enum machine_mode) (x)->mode))];
       nonzero >>= ((((((x)->fld[1]).rtx))->fld[0]).rtwint);
     }

   if ((mask & ~nonzero) == 0
       || (i = exact_log2_wide ((unsigned long long) (mask))) >= 0)
     {
       x = simplify_shift_const
  (x, LSHIFTRT, ((enum machine_mode) (x)->mode), (((x)->fld[0]).rtx),
   i < 0 ? ((((((x)->fld[1]).rtx))->fld[0]).rtwint)
   : (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) - 1 - i);

       if (((enum rtx_code) (x)->code) != ASHIFTRT)
  return force_to_mode (x, mode, mask, reg, next_select);
     }
 }



      if (mask == 1)
 x = gen_binary (LSHIFTRT, ((enum machine_mode) (x)->mode), (((x)->fld[0]).rtx), (((x)->fld[1]).rtx));

    shiftrt:





      if ((((enum rtx_code) (x)->code) == LSHIFTRT || ((enum rtx_code) (x)->code) == ASHIFTRT)
   && ((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) >= 0
   && (((((((x)->fld[1]).rtx))->fld[0]).rtwint)
       <= (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) - (floor_log2_wide ((unsigned long long) (mask)) + 1))
   && ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == ASHIFT
   && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
   && (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint) == ((((((x)->fld[1]).rtx))->fld[0]).rtwint))
 return force_to_mode (((((((x)->fld[0]).rtx))->fld[0]).rtx), mode, mask,
         reg, next_select);

      break;

    case ROTATE:
    case ROTATERT:




      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) >= 0)
 {
   temp = simplify_binary_operation (code == ROTATE ? ROTATERT : ROTATE,
         ((enum machine_mode) (x)->mode), gen_rtx_CONST_INT (VOIDmode, (long long) (mask)),
         (((x)->fld[1]).rtx));
   if (temp && ((enum rtx_code) (temp)->code) == CONST_INT)
     do_SUBST(&((((x)->fld[0]).rtx)), (force_to_mode ((((x)->fld[0]).rtx), ((enum machine_mode) (x)->mode), (((temp)->fld[0]).rtwint), reg, next_select)));


 }
      break;

    case NEG:


      if (mask == 1)
 return force_to_mode ((((x)->fld[0]).rtx), mode, mask, reg, just_select);




      mask = fuller_mask;
      goto unop;

    case NOT:




      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == LSHIFTRT
   && ((enum rtx_code) (((((((x)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
   && (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint) >= 0
   && ((((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint) + floor_log2_wide ((unsigned long long) (mask))
       < (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]))
   && (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint) < (8 * 8))
 {
   temp = gen_rtx_CONST_INT (VOIDmode, (long long) (mask << (((((((((x)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint)));
   temp = gen_binary (XOR, ((enum machine_mode) (x)->mode), ((((((x)->fld[0]).rtx))->fld[0]).rtx), temp);
   x = gen_binary (LSHIFTRT, ((enum machine_mode) (x)->mode), temp, ((((((x)->fld[0]).rtx))->fld[1]).rtx));

   return force_to_mode (x, mode, mask, reg, next_select);
 }



      mask = fuller_mask;

    unop:
      op0 = gen_lowpart_for_combine (op_mode,
         force_to_mode ((((x)->fld[0]).rtx), mode, mask,
          reg, next_select));
      if (op_mode != ((enum machine_mode) (x)->mode) || op0 != (((x)->fld[0]).rtx))
 x = simplify_gen_unary (code, op_mode, op0, op_mode);
      break;

    case NE:



      if ((mask & ~1) == 0 && (((x)->fld[1]).rtx) == (const_int_rtx[64])
   && exact_log2_wide ((unsigned long long) (nonzero_bits ((((x)->fld[0]).rtx), mode))) >= 0
   && nonzero_bits ((((x)->fld[0]).rtx), mode) == 1)
 return force_to_mode ((((x)->fld[0]).rtx), mode, mask, reg, next_select);

      break;

    case IF_THEN_ELSE:



      do_SUBST(&((((x)->fld[1]).rtx)), (gen_lowpart_for_combine (((enum machine_mode) (x)->mode), force_to_mode ((((x)->fld[1]).rtx), mode, mask, reg, next_select))));



      do_SUBST(&((((x)->fld[2]).rtx)), (gen_lowpart_for_combine (((enum machine_mode) (x)->mode), force_to_mode ((((x)->fld[2]).rtx), mode, mask, reg,next_select))));



      break;

    default:
      break;
    }


  return gen_lowpart_for_combine (mode, x);
}
# 7183 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static rtx
if_then_else_cond (x, ptrue, pfalse)
     rtx x;
     rtx *ptrue, *pfalse;
{
  enum machine_mode mode = ((enum machine_mode) (x)->mode);
  enum rtx_code code = ((enum rtx_code) (x)->code);
  rtx cond0, cond1, true0, true1, false0, false1;
  unsigned long long nz;


  if ((code == NE || code == EQ)
      && ((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) == 0)
    {
      *ptrue = (code == NE) ? const_true_rtx : (const_int_rtx[64]);
      *pfalse = (code == NE) ? (const_int_rtx[64]) : const_true_rtx;
      return (((x)->fld[0]).rtx);
    }



  else if ((rtx_class[(int) (code)]) == '1'
    && (cond0 = if_then_else_cond ((((x)->fld[0]).rtx), &true0, &false0)) != 0)
    {
      *ptrue = simplify_gen_unary (code, mode, true0, ((enum machine_mode) ((((x)->fld[0]).rtx))->mode));
      *pfalse = simplify_gen_unary (code, mode, false0,
        ((enum machine_mode) ((((x)->fld[0]).rtx))->mode));
      return cond0;
    }



  else if (code == COMPARE)
    ;




  else if ((rtx_class[(int) (code)]) == 'c' || (rtx_class[(int) (code)]) == '2'
    || (rtx_class[(int) (code)]) == '<')
    {
      cond0 = if_then_else_cond ((((x)->fld[0]).rtx), &true0, &false0);
      cond1 = if_then_else_cond ((((x)->fld[1]).rtx), &true1, &false1);

      if ((cond0 != 0 || cond1 != 0)
   && ! (cond0 != 0 && cond1 != 0 && ! rtx_equal_p (cond0, cond1)))
 {



   if (cond0 == 0)
     true0 = copy_rtx (true0);
   else if (cond1 == 0)
     true1 = copy_rtx (true1);

   *ptrue = gen_binary (code, mode, true0, true1);
   *pfalse = gen_binary (code, mode, false0, false1);
   return cond0 ? cond0 : cond1;
 }





      if ((1 == 1 || 1 == -1)
   && (code == PLUS || code == IOR || code == XOR || code == MINUS
       || code == UMAX)
   && ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == MULT && ((enum rtx_code) ((((x)->fld[1]).rtx))->code) == MULT)
 {
   rtx op0 = ((((((x)->fld[0]).rtx))->fld[1]).rtx);
   rtx op1 = ((((((x)->fld[1]).rtx))->fld[1]).rtx);

   cond0 = ((((((x)->fld[0]).rtx))->fld[0]).rtx);
   cond1 = ((((((x)->fld[1]).rtx))->fld[0]).rtx);

   if ((rtx_class[(int) (((enum rtx_code) (cond0)->code))]) == '<'
       && (rtx_class[(int) (((enum rtx_code) (cond1)->code))]) == '<'
       && ((((enum rtx_code) (cond0)->code) == combine_reversed_comparison_code (cond1)
     && rtx_equal_p ((((cond0)->fld[0]).rtx), (((cond1)->fld[0]).rtx))
     && rtx_equal_p ((((cond0)->fld[1]).rtx), (((cond1)->fld[1]).rtx)))
    || ((swap_condition (((enum rtx_code) (cond0)->code))
         == combine_reversed_comparison_code (cond1))
        && rtx_equal_p ((((cond0)->fld[0]).rtx), (((cond1)->fld[1]).rtx))
        && rtx_equal_p ((((cond0)->fld[1]).rtx), (((cond1)->fld[0]).rtx))))
       && ! side_effects_p (x))
     {
       *ptrue = gen_binary (MULT, mode, op0, const_true_rtx);
       *pfalse = gen_binary (MULT, mode,
        (code == MINUS
         ? simplify_gen_unary (NEG, mode, op1,
          mode)
         : op1),
        const_true_rtx);
       return cond0;
     }
 }



      if ((1 == 1 || 1 == -1)
   && (code == MULT || code == AND || code == UMIN)
   && ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == MULT && ((enum rtx_code) ((((x)->fld[1]).rtx))->code) == MULT)
 {
   cond0 = ((((((x)->fld[0]).rtx))->fld[0]).rtx);
   cond1 = ((((((x)->fld[1]).rtx))->fld[0]).rtx);

   if ((rtx_class[(int) (((enum rtx_code) (cond0)->code))]) == '<'
       && (rtx_class[(int) (((enum rtx_code) (cond1)->code))]) == '<'
       && ((((enum rtx_code) (cond0)->code) == combine_reversed_comparison_code (cond1)
     && rtx_equal_p ((((cond0)->fld[0]).rtx), (((cond1)->fld[0]).rtx))
     && rtx_equal_p ((((cond0)->fld[1]).rtx), (((cond1)->fld[1]).rtx)))
    || ((swap_condition (((enum rtx_code) (cond0)->code))
         == combine_reversed_comparison_code (cond1))
        && rtx_equal_p ((((cond0)->fld[0]).rtx), (((cond1)->fld[1]).rtx))
        && rtx_equal_p ((((cond0)->fld[1]).rtx), (((cond1)->fld[0]).rtx))))
       && ! side_effects_p (x))
     {
       *ptrue = *pfalse = (const_int_rtx[64]);
       return cond0;
     }
 }
    }

  else if (code == IF_THEN_ELSE)
    {


      cond0 = (((x)->fld[0]).rtx);
      *ptrue = (((x)->fld[1]).rtx), *pfalse = (((x)->fld[2]).rtx);
      if (((enum rtx_code) (cond0)->code) == NE && (((cond0)->fld[1]).rtx) == (const_int_rtx[64]))
 return (((cond0)->fld[0]).rtx);
      else if (((enum rtx_code) (cond0)->code) == EQ && (((cond0)->fld[1]).rtx) == (const_int_rtx[64]))
 {
   *ptrue = (((x)->fld[2]).rtx), *pfalse = (((x)->fld[1]).rtx);
   return (((cond0)->fld[0]).rtx);
 }
      else
 return cond0;
    }



  else if (code == SUBREG
    && 0 != (cond0 = if_then_else_cond ((((x)->fld[0]).rtx),
            &true0, &false0)))
    {
      *ptrue = simplify_gen_subreg (mode, true0,
        ((enum machine_mode) ((((x)->fld[0]).rtx))->mode), (((x)->fld[1]).rtuint));
      *pfalse = simplify_gen_subreg (mode, false0,
         ((enum machine_mode) ((((x)->fld[0]).rtx))->mode), (((x)->fld[1]).rtuint));

      return cond0;
    }



  else if ((((enum rtx_code) (x)->code) == LABEL_REF || ((enum rtx_code) (x)->code) == SYMBOL_REF || ((enum rtx_code) (x)->code) == CONST_INT || ((enum rtx_code) (x)->code) == CONST_DOUBLE || ((enum rtx_code) (x)->code) == CONST || ((enum rtx_code) (x)->code) == HIGH || ((enum rtx_code) (x)->code) == CONST_VECTOR || ((enum rtx_code) (x)->code) == CONSTANT_P_RTX)
    || ((cond0 = get_last_value (x)) != 0 && (((enum rtx_code) (cond0)->code) == LABEL_REF || ((enum rtx_code) (cond0)->code) == SYMBOL_REF || ((enum rtx_code) (cond0)->code) == CONST_INT || ((enum rtx_code) (cond0)->code) == CONST_DOUBLE || ((enum rtx_code) (cond0)->code) == CONST || ((enum rtx_code) (cond0)->code) == HIGH || ((enum rtx_code) (cond0)->code) == CONST_VECTOR || ((enum rtx_code) (cond0)->code) == CONSTANT_P_RTX)))
    ;



  else if (mode == BImode)
    {
      *ptrue = gen_rtx_CONST_INT (VOIDmode, (long long) (1)), *pfalse = (const_int_rtx[64]);
      return x;
    }



  else if (x == (const_int_rtx[64 -1]) || x == (const_int_rtx[64])
    || (mode != VOIDmode
        && num_sign_bit_copies (x, mode) == (mode_bitsize[(int) (mode)])))
    {
      *ptrue = (const_int_rtx[64 -1]), *pfalse = (const_int_rtx[64]);
      return x;
    }


  else if (mode != VOIDmode
    && (mode_bitsize[(int) (mode)]) <= (8 * 8)
    && exact_log2_wide ((unsigned long long) (nz = nonzero_bits (x, mode))) >= 0)
    {
      *ptrue = gen_rtx_CONST_INT (VOIDmode, (long long) (trunc_int_for_mode (nz, mode))), *pfalse = (const_int_rtx[64]);
      return x;
    }


  *ptrue = *pfalse = x;
  return 0;
}
# 7383 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static rtx
known_cond (x, cond, reg, val)
     rtx x;
     enum rtx_code cond;
     rtx reg, val;
{
  enum rtx_code code = ((enum rtx_code) (x)->code);
  rtx temp;
  const char *fmt;
  int i, j;

  if (side_effects_p (x))
    return x;



  if (cond == EQ
      && rtx_equal_p (x, reg)
      && ! ((mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_FLOAT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_VECTOR_FLOAT)
      && ! ((mode_class[(int) (((enum machine_mode) (val)->mode))]) == MODE_FLOAT || (mode_class[(int) (((enum machine_mode) (val)->mode))]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (((enum machine_mode) (val)->mode))]) == MODE_VECTOR_FLOAT))
    return val;

  if (cond == UNEQ && rtx_equal_p (x, reg))
    return val;




  if (code == ABS && rtx_equal_p ((((x)->fld[0]).rtx), reg) && val == (const_int_rtx[64]))
    switch (cond)
      {
      case GE: case GT: case EQ:
 return (((x)->fld[0]).rtx);
      case LT: case LE:
 return simplify_gen_unary (NEG, ((enum machine_mode) ((((x)->fld[0]).rtx))->mode),
       (((x)->fld[0]).rtx),
       ((enum machine_mode) ((((x)->fld[0]).rtx))->mode));
      default:
 break;
      }




  else if ((rtx_class[(int) (code)]) == '<' || (rtx_class[(int) (code)]) == 'c')
    {
      if (rtx_equal_p ((((x)->fld[0]).rtx), val))
 cond = swap_condition (cond), temp = val, val = reg, reg = temp;

      if (rtx_equal_p ((((x)->fld[0]).rtx), reg) && rtx_equal_p ((((x)->fld[1]).rtx), val))
 {
   if ((rtx_class[(int) (code)]) == '<')
     {
       if (comparison_dominates_p (cond, code))
  return const_true_rtx;

       code = combine_reversed_comparison_code (x);
       if (code != UNKNOWN
    && comparison_dominates_p (cond, code))
  return (const_int_rtx[64]);
       else
  return x;
     }
   else if (code == SMAX || code == SMIN
     || code == UMIN || code == UMAX)
     {
       int unsignedp = (code == UMIN || code == UMAX);





       if ((code == SMAX || code == UMAX)
    && ! (cond == EQ || cond == NE))
  cond = reverse_condition (cond);

       switch (cond)
  {
  case GE: case GT:
    return unsignedp ? x : (((x)->fld[1]).rtx);
  case LE: case LT:
    return unsignedp ? x : (((x)->fld[0]).rtx);
  case GEU: case GTU:
    return unsignedp ? (((x)->fld[1]).rtx) : x;
  case LEU: case LTU:
    return unsignedp ? (((x)->fld[0]).rtx) : x;
  default:
    break;
  }
     }
 }
    }
  else if (code == SUBREG)
    {
      enum machine_mode inner_mode = ((enum machine_mode) ((((x)->fld[0]).rtx))->mode);
      rtx new, r = known_cond ((((x)->fld[0]).rtx), cond, reg, val);

      if ((((x)->fld[0]).rtx) != r)
 {


   new = simplify_subreg (((enum machine_mode) (x)->mode), r,
     inner_mode, (((x)->fld[1]).rtuint));
   if (new)
     return new;
   else
     do_SUBST(&((((x)->fld[0]).rtx)), (r));
 }

      return x;
    }






  else if (code == ZERO_EXTEND)
    {
      enum machine_mode inner_mode = ((enum machine_mode) ((((x)->fld[0]).rtx))->mode);
      rtx new, r = known_cond ((((x)->fld[0]).rtx), cond, reg, val);

      if ((((x)->fld[0]).rtx) != r)
 {


   new = simplify_unary_operation (ZERO_EXTEND, ((enum machine_mode) (x)->mode),
       r, inner_mode);
   if (new)
     return new;
   else
     do_SUBST(&((((x)->fld[0]).rtx)), (r));
 }

      return x;
    }

  fmt = (rtx_format[(int) (code)]);
  for (i = (rtx_length[(int) (code)]) - 1; i >= 0; i--)
    {
      if (fmt[i] == 'e')
 do_SUBST(&((((x)->fld[i]).rtx)), (known_cond ((((x)->fld[i]).rtx), cond, reg, val)));
      else if (fmt[i] == 'E')
 for (j = (((((x)->fld[i]).rtvec))->num_elem) - 1; j >= 0; j--)
   do_SUBST(&((((((x)->fld[i]).rtvec))->elem[j])), (known_cond ((((((x)->fld[i]).rtvec))->elem[j]), cond, reg, val)));

    }

  return x;
}




static int
rtx_equal_for_field_assignment_p (x, y)
     rtx x;
     rtx y;
{
  if (x == y || rtx_equal_p (x, y))
    return 1;

  if (x == 0 || y == 0 || ((enum machine_mode) (x)->mode) != ((enum machine_mode) (y)->mode))
    return 0;




  if (((enum rtx_code) (x)->code) == MEM && ((enum rtx_code) (y)->code) == SUBREG
      && ((enum rtx_code) ((((y)->fld[0]).rtx))->code) == MEM
      && rtx_equal_p ((((y)->fld[0]).rtx),
        gen_lowpart_for_combine (((enum machine_mode) ((((y)->fld[0]).rtx))->mode), x)))
    return 1;

  if (((enum rtx_code) (y)->code) == MEM && ((enum rtx_code) (x)->code) == SUBREG
      && ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == MEM
      && rtx_equal_p ((((x)->fld[0]).rtx),
        gen_lowpart_for_combine (((enum machine_mode) ((((x)->fld[0]).rtx))->mode), y)))
    return 1;






  return 0;
}






static rtx
make_field_assignment (x)
     rtx x;
{
  rtx dest = (((x)->fld[0]).rtx);
  rtx src = (((x)->fld[1]).rtx);
  rtx assign;
  rtx rhs, lhs;
  long long c1;
  long long pos;
  unsigned long long len = 0;
  rtx other;
  enum machine_mode mode;






  if (((enum rtx_code) (src)->code) == AND && ((enum rtx_code) ((((src)->fld[0]).rtx))->code) == ROTATE
      && ((enum rtx_code) (((((((src)->fld[0]).rtx))->fld[0]).rtx))->code) == CONST_INT
      && (((((((((src)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtwint) == -2
      && rtx_equal_for_field_assignment_p (dest, (((src)->fld[1]).rtx)))
    {
      assign = make_extraction (VOIDmode, dest, 0, ((((((src)->fld[0]).rtx))->fld[1]).rtx),
    1, 1, 1, 0);
      if (assign != 0)
 return gen_rtx_fmt_ee (SET, (VOIDmode), (assign), ((const_int_rtx[64])));
      return x;
    }

  else if (((enum rtx_code) (src)->code) == AND && ((enum rtx_code) ((((src)->fld[0]).rtx))->code) == SUBREG
    && subreg_lowpart_p ((((src)->fld[0]).rtx))
    && ((mode_size[(int) (((enum machine_mode) ((((src)->fld[0]).rtx))->mode))])
        < (mode_size[(int) (((enum machine_mode) (((((((src)->fld[0]).rtx))->fld[0]).rtx))->mode))]))
    && ((enum rtx_code) (((((((src)->fld[0]).rtx))->fld[0]).rtx))->code) == ROTATE
    && ((((((((((((src)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtwint) == -2
    && rtx_equal_for_field_assignment_p (dest, (((src)->fld[1]).rtx)))
    {
      assign = make_extraction (VOIDmode, dest, 0,
    (((((((((src)->fld[0]).rtx))->fld[0]).rtx))->fld[1]).rtx),
    1, 1, 1, 0);
      if (assign != 0)
 return gen_rtx_fmt_ee (SET, (VOIDmode), (assign), ((const_int_rtx[64])));
      return x;
    }



  else if (((enum rtx_code) (src)->code) == IOR && ((enum rtx_code) ((((src)->fld[0]).rtx))->code) == ASHIFT
    && ((((((src)->fld[0]).rtx))->fld[0]).rtx) == (const_int_rtx[64 +1])
    && rtx_equal_for_field_assignment_p (dest, (((src)->fld[1]).rtx)))
    {
      assign = make_extraction (VOIDmode, dest, 0, ((((((src)->fld[0]).rtx))->fld[1]).rtx),
    1, 1, 1, 0);
      if (assign != 0)
 return gen_rtx_fmt_ee (SET, (VOIDmode), (assign), ((const_int_rtx[64 +1])));
      return x;
    }
# 7644 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (((enum rtx_code) (src)->code) != IOR && ((enum rtx_code) (src)->code) != XOR)
    return x;

  rhs = expand_compound_operation ((((src)->fld[0]).rtx));
  lhs = expand_compound_operation ((((src)->fld[1]).rtx));

  if (((enum rtx_code) (rhs)->code) == AND
      && ((enum rtx_code) ((((rhs)->fld[1]).rtx))->code) == CONST_INT
      && rtx_equal_for_field_assignment_p ((((rhs)->fld[0]).rtx), dest))
    c1 = ((((((rhs)->fld[1]).rtx))->fld[0]).rtwint), other = lhs;
  else if (((enum rtx_code) (lhs)->code) == AND
    && ((enum rtx_code) ((((lhs)->fld[1]).rtx))->code) == CONST_INT
    && rtx_equal_for_field_assignment_p ((((lhs)->fld[0]).rtx), dest))
    c1 = ((((((lhs)->fld[1]).rtx))->fld[0]).rtwint), other = rhs;
  else
    return x;

  pos = get_pos_from_mask ((~c1) & mode_mask_array[(int) (((enum machine_mode) (dest)->mode))], &len);
  if (pos < 0 || pos + len > (mode_bitsize[(int) (((enum machine_mode) (dest)->mode))])
      || (mode_bitsize[(int) (((enum machine_mode) (dest)->mode))]) > (8 * 8)
      || (c1 & nonzero_bits (other, ((enum machine_mode) (dest)->mode))) != 0)
    return x;

  assign = make_extraction (VOIDmode, dest, pos, (rtx) 0, len, 1, 1, 0);
  if (assign == 0)
    return x;



  mode = (((enum rtx_code) (assign)->code) == STRICT_LOW_PART
   ? ((enum machine_mode) ((((assign)->fld[0]).rtx))->mode) : ((enum machine_mode) (assign)->mode));




  src = force_to_mode (simplify_shift_const ((rtx) 0, LSHIFTRT,
          ((enum machine_mode) (src)->mode), other, pos),
         mode,
         (mode_bitsize[(int) (mode)]) >= (8 * 8)
         ? ~(unsigned long long) 0
         : ((unsigned long long) 1 << len) - 1,
         dest, 0);

  return gen_rtx_fmt_ee (SET, (VOIDmode), (assign), (src));
}




static rtx
apply_distributive_law (x)
     rtx x;
{
  enum rtx_code code = ((enum rtx_code) (x)->code);
  rtx lhs, rhs, other;
  rtx tem;
  enum rtx_code inner_code;




  if (((mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_FLOAT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_VECTOR_FLOAT))
    return x;


  if (code != IOR && code != AND && code != XOR
      && code != PLUS && code != MINUS)
    return x;

  lhs = (((x)->fld[0]).rtx), rhs = (((x)->fld[1]).rtx);



  if ((rtx_class[(int) (((enum rtx_code) (lhs)->code))]) == 'o'
      || (rtx_class[(int) (((enum rtx_code) (rhs)->code))]) == 'o')
    return x;

  lhs = expand_compound_operation (lhs);
  rhs = expand_compound_operation (rhs);
  inner_code = ((enum rtx_code) (lhs)->code);
  if (inner_code != ((enum rtx_code) (rhs)->code))
    return x;


  switch (inner_code)
    {
    case LSHIFTRT:
    case ASHIFTRT:
    case AND:
    case IOR:

      if (code == PLUS || code == MINUS)
 return x;
      break;

    case MULT:
      if (code != PLUS && code != MINUS)
 return x;
      break;

    case ASHIFT:

      break;

    case SUBREG:
# 7760 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if (((enum machine_mode) ((((lhs)->fld[0]).rtx))->mode) != ((enum machine_mode) ((((rhs)->fld[0]).rtx))->mode)
   || (((lhs)->fld[1]).rtuint) != (((rhs)->fld[1]).rtuint)
   || ! subreg_lowpart_p (lhs)
   || ((mode_class[(int) (((enum machine_mode) (lhs)->mode))])
       != (mode_class[(int) (((enum machine_mode) ((((lhs)->fld[0]).rtx))->mode))]))
   || ((mode_size[(int) (((enum machine_mode) (lhs)->mode))])
       > (mode_size[(int) (((enum machine_mode) ((((lhs)->fld[0]).rtx))->mode))]))
   || (mode_size[(int) (((enum machine_mode) ((((lhs)->fld[0]).rtx))->mode))]) > ((target_flags & 0x02000000) ? 8 : 4))
 return x;

      tem = gen_binary (code, ((enum machine_mode) ((((lhs)->fld[0]).rtx))->mode),
   (((lhs)->fld[0]).rtx), (((rhs)->fld[0]).rtx));
      return gen_lowpart_for_combine (((enum machine_mode) (x)->mode), tem);

    default:
      return x;
    }





  if ((rtx_class[(int) (inner_code)]) == 'c'
      && rtx_equal_p ((((lhs)->fld[0]).rtx), (((rhs)->fld[0]).rtx)))
    other = (((lhs)->fld[0]).rtx), lhs = (((lhs)->fld[1]).rtx), rhs = (((rhs)->fld[1]).rtx);
  else if ((rtx_class[(int) (inner_code)]) == 'c'
    && rtx_equal_p ((((lhs)->fld[0]).rtx), (((rhs)->fld[1]).rtx)))
    other = (((lhs)->fld[0]).rtx), lhs = (((lhs)->fld[1]).rtx), rhs = (((rhs)->fld[0]).rtx);
  else if ((rtx_class[(int) (inner_code)]) == 'c'
    && rtx_equal_p ((((lhs)->fld[1]).rtx), (((rhs)->fld[0]).rtx)))
    other = (((lhs)->fld[1]).rtx), lhs = (((lhs)->fld[0]).rtx), rhs = (((rhs)->fld[1]).rtx);
  else if (rtx_equal_p ((((lhs)->fld[1]).rtx), (((rhs)->fld[1]).rtx)))
    other = (((lhs)->fld[1]).rtx), lhs = (((lhs)->fld[0]).rtx), rhs = (((rhs)->fld[0]).rtx);
  else
    return x;


  tem = gen_binary (code, ((enum machine_mode) (x)->mode), lhs, rhs);



  if (code == XOR && inner_code == IOR)
    {
      inner_code = AND;
      other = simplify_gen_unary (NOT, ((enum machine_mode) (x)->mode), other, ((enum machine_mode) (x)->mode));
    }




  return gen_binary (inner_code, ((enum machine_mode) (x)->mode),
       apply_distributive_law (tem), other);
}







static rtx
simplify_and_const_int (x, mode, varop, constop)
     rtx x;
     enum machine_mode mode;
     rtx varop;
     unsigned long long constop;
{
  unsigned long long nonzero;
  int i;
# 7837 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  varop = force_to_mode (varop, mode, constop, (rtx) 0, 0);


  if (((enum rtx_code) (varop)->code) == CLOBBER)
    return varop;



  if (((enum rtx_code) (varop)->code) == CONST_INT)
    return gen_rtx_CONST_INT (VOIDmode, (long long) (trunc_int_for_mode ((((varop)->fld[0]).rtwint) & constop, mode)));





  nonzero = nonzero_bits (varop, mode) & mode_mask_array[(int) (mode)];





  constop &= nonzero;


  if (constop == 0)
    return (const_int_rtx[64]);



  if (((enum rtx_code) (varop)->code) == NEG && nonzero_bits ((((varop)->fld[0]).rtx), mode) == 1
      && (i = exact_log2_wide ((unsigned long long) (constop))) >= 0)
    return simplify_shift_const ((rtx) 0, ASHIFT, mode, (((varop)->fld[0]).rtx), i);







  if (((enum rtx_code) (varop)->code) == IOR || ((enum rtx_code) (varop)->code) == XOR)
    return
      gen_lowpart_for_combine
 (mode,
  apply_distributive_law
  (gen_binary (((enum rtx_code) (varop)->code), ((enum machine_mode) (varop)->mode),
        simplify_and_const_int ((rtx) 0, ((enum machine_mode) (varop)->mode),
           (((varop)->fld[0]).rtx), constop),
        simplify_and_const_int ((rtx) 0, ((enum machine_mode) (varop)->mode),
           (((varop)->fld[1]).rtx), constop))));





  if (((enum rtx_code) (varop)->code) == PLUS
      && exact_log2_wide ((unsigned long long) (constop + 1)) >= 0)
    {
      rtx o0, o1;

      o0 = simplify_and_const_int ((rtx) 0, mode, (((varop)->fld[0]).rtx), constop);
      o1 = simplify_and_const_int ((rtx) 0, mode, (((varop)->fld[1]).rtx), constop);
      if (o0 == (const_int_rtx[64]))
 return o1;
      if (o1 == (const_int_rtx[64]))
 return o0;
    }



  if (x && ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SUBREG
      && ((enum machine_mode) ((((x)->fld[0]).rtx))->mode) == mode
      && ((((((x)->fld[0]).rtx))->fld[0]).rtx) == varop)
    varop = (((x)->fld[0]).rtx);
  else
    varop = gen_lowpart_for_combine (mode, varop);


  if (((enum rtx_code) (varop)->code) == CLOBBER)
    return x ? x : varop;


  if (constop == nonzero)
    x = varop;
  else
    {

      constop = trunc_int_for_mode (constop, mode);

      if (x == 0 || ((enum rtx_code) (x)->code) != AND || ((enum machine_mode) (x)->mode) != mode)
 x = gen_binary (AND, mode, varop, gen_rtx_CONST_INT (VOIDmode, (long long) (constop)));

      else
 {
   if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) != CONST_INT
       || (unsigned long long) ((((((x)->fld[1]).rtx))->fld[0]).rtwint) != constop)
     do_SUBST(&((((x)->fld[1]).rtx)), (gen_rtx_CONST_INT (VOIDmode, (long long) (constop))));

   do_SUBST(&((((x)->fld[0]).rtx)), (varop));
 }
    }

  return x;
}
# 7954 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static unsigned long long
nonzero_bits (x, mode)
     rtx x;
     enum machine_mode mode;
{
  unsigned long long nonzero = mode_mask_array[(int) (mode)];
  unsigned long long inner_nz;
  enum rtx_code code;
  unsigned int mode_width = (mode_bitsize[(int) (mode)]);
  rtx tem;


  if (((mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_FLOAT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_VECTOR_FLOAT) || ((mode_class[(int) (mode)]) == MODE_FLOAT || (mode_class[(int) (mode)]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (mode)]) == MODE_VECTOR_FLOAT))
    return nonzero;


  if ((mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) > mode_width)
    {
      mode = ((enum machine_mode) (x)->mode);
      nonzero = mode_mask_array[(int) (mode)];
      mode_width = (mode_bitsize[(int) (mode)]);
    }

  if (mode_width > (8 * 8))


    return nonzero;
# 7990 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (((enum machine_mode) (x)->mode) != VOIDmode && ((enum machine_mode) (x)->mode) != mode
      && (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) <= ((target_flags & 0x02000000) ? 64 : 32)
      && (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) <= (8 * 8)
      && (mode_bitsize[(int) (mode)]) > (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]))
    {
      nonzero &= nonzero_bits (x, ((enum machine_mode) (x)->mode));
      nonzero |= mode_mask_array[(int) (mode)] & ~mode_mask_array[(int) (((enum machine_mode) (x)->mode))];
      return nonzero;
    }


  code = ((enum rtx_code) (x)->code);
  switch (code)
    {
    case REG:
# 8017 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if ((x == (global_rtl[GR_STACK_POINTER])
    || x == (global_rtl[GR_FRAME_POINTER])
    || x == (global_rtl[GR_ARG_POINTER]))
   && (cfun->emit->regno_pointer_align[(((x)->fld[0]).rtuint)]))
 {
   unsigned long long alignment
     = (cfun->emit->regno_pointer_align[(((x)->fld[0]).rtuint)]) / 8;





   if (x == (global_rtl[GR_STACK_POINTER]) && ((!(target_flags & 0x00000800)) && !(target_flags & 0x00001000)))
     alignment = ((((target_flags & 0x02000000) ? (((1) + 7) & (-8)) : (((1) + 1) & (-2)))) < (alignment) ? (((target_flags & 0x02000000) ? (((1) + 7) & (-8)) : (((1) + 1) & (-2)))) : (alignment));


   nonzero &= ~(alignment - 1);
 }






      if (reg_last_set_value[(((x)->fld[0]).rtuint)] != 0
   && (reg_last_set_mode[(((x)->fld[0]).rtuint)] == mode
       || ((mode_class[(int) (reg_last_set_mode[(((x)->fld[0]).rtuint)])]) == MODE_INT
    && (mode_class[(int) (mode)]) == MODE_INT))
   && (reg_last_set_label[(((x)->fld[0]).rtuint)] == label_tick
       || ((((x)->fld[0]).rtuint) >= 53
    && (((reg_n_info)->data.reg[(((x)->fld[0]).rtuint)])->sets) == 1
    && ! bitmap_bit_p ((((basic_block_info)->data.bb[(0)]))->global_live_at_start, (((x)->fld[0]).rtuint))))

   && ((((reg_last_set[(((x)->fld[0]).rtuint)])->fld[0]).rtint) > max_uid_cuid ? insn_cuid (reg_last_set[(((x)->fld[0]).rtuint)]) : uid_cuid[(((reg_last_set[(((x)->fld[0]).rtuint)])->fld[0]).rtint)]) < subst_low_cuid)
 return reg_last_set_nonzero_bits[(((x)->fld[0]).rtuint)] & nonzero;

      tem = get_last_value (x);

      if (tem)
 {
# 8077 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   return nonzero_bits (tem, mode) & nonzero;
 }
      else if (nonzero_sign_valid && reg_nonzero_bits[(((x)->fld[0]).rtuint)])
 {
   unsigned long long mask = reg_nonzero_bits[(((x)->fld[0]).rtuint)];

   if ((mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) < mode_width)

     mask |= mode_mask_array[(int) (mode)] ^ mode_mask_array[(int) (((enum machine_mode) (x)->mode))];
   return nonzero & mask;
 }
      else
 return nonzero;

    case CONST_INT:







      return (((x)->fld[0]).rtwint);

    case MEM:







      break;

    case EQ: case NE:
    case UNEQ: case LTGT:
    case GT: case GTU: case UNGT:
    case LT: case LTU: case UNLT:
    case GE: case GEU: case UNGE:
    case LE: case LEU: case UNLE:
    case UNORDERED: case ORDERED:





      if ((mode_class[(int) (mode)]) == MODE_INT
   && mode_width <= (8 * 8))
 nonzero = 1;
      break;

    case NEG:
# 8137 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if ((mode_size[(int) (((enum machine_mode) (x)->mode))]) < mode_width)
 nonzero |= (mode_mask_array[(int) (mode)] & ~mode_mask_array[(int) (((enum machine_mode) (x)->mode))]);
      break;

    case ABS:







      break;

    case TRUNCATE:
      nonzero &= (nonzero_bits ((((x)->fld[0]).rtx), mode) & mode_mask_array[(int) (mode)]);
      break;

    case ZERO_EXTEND:
      nonzero &= nonzero_bits ((((x)->fld[0]).rtx), mode);
      if (((enum machine_mode) ((((x)->fld[0]).rtx))->mode) != VOIDmode)
 nonzero &= mode_mask_array[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))];
      break;

    case SIGN_EXTEND:



      inner_nz = nonzero_bits ((((x)->fld[0]).rtx), mode);
      if (((enum machine_mode) ((((x)->fld[0]).rtx))->mode) != VOIDmode)
 {
   inner_nz &= mode_mask_array[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))];
   if (inner_nz
       & (((long long) 1
    << ((mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) - 1))))
     inner_nz |= (mode_mask_array[(int) (mode)]
    & ~mode_mask_array[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]);
 }

      nonzero &= inner_nz;
      break;

    case AND:
      nonzero &= (nonzero_bits ((((x)->fld[0]).rtx), mode)
    & nonzero_bits ((((x)->fld[1]).rtx), mode));
      break;

    case XOR: case IOR:
    case UMIN: case UMAX: case SMIN: case SMAX:
      {
 unsigned long long nonzero0 = nonzero_bits ((((x)->fld[0]).rtx), mode);



 if ((nonzero & nonzero0) != nonzero)
   nonzero &= (nonzero0 | nonzero_bits ((((x)->fld[1]).rtx), mode));
      }
      break;

    case PLUS: case MINUS:
    case MULT:
    case DIV: case UDIV:
    case MOD: case UMOD:




      {
 unsigned long long nz0 = nonzero_bits ((((x)->fld[0]).rtx), mode);
 unsigned long long nz1 = nonzero_bits ((((x)->fld[1]).rtx), mode);
 int width0 = floor_log2_wide ((unsigned long long) (nz0)) + 1;
 int width1 = floor_log2_wide ((unsigned long long) (nz1)) + 1;
 int low0 = floor_log2_wide ((unsigned long long) (nz0 & -nz0));
 int low1 = floor_log2_wide ((unsigned long long) (nz1 & -nz1));
 long long op0_maybe_minusp
   = (nz0 & ((long long) 1 << (mode_width - 1)));
 long long op1_maybe_minusp
   = (nz1 & ((long long) 1 << (mode_width - 1)));
 unsigned int result_width = mode_width;
 int result_low = 0;

 switch (code)
   {
   case PLUS:
     result_width = ((width0) > (width1) ? (width0) : (width1)) + 1;
     result_low = ((low0) < (low1) ? (low0) : (low1));
     break;
   case MINUS:
     result_low = ((low0) < (low1) ? (low0) : (low1));
     break;
   case MULT:
     result_width = width0 + width1;
     result_low = low0 + low1;
     break;
   case DIV:
     if (width1 == 0)
       break;
     if (! op0_maybe_minusp && ! op1_maybe_minusp)
       result_width = width0;
     break;
   case UDIV:
     if (width1 == 0)
       break;
     result_width = width0;
     break;
   case MOD:
     if (width1 == 0)
       break;
     if (! op0_maybe_minusp && ! op1_maybe_minusp)
       result_width = ((width0) < (width1) ? (width0) : (width1));
     result_low = ((low0) < (low1) ? (low0) : (low1));
     break;
   case UMOD:
     if (width1 == 0)
       break;
     result_width = ((width0) < (width1) ? (width0) : (width1));
     result_low = ((low0) < (low1) ? (low0) : (low1));
     break;
   default:
     fancy_abort ("/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c", 8256, __FUNCTION__);
   }

 if (result_width < mode_width)
   nonzero &= ((long long) 1 << result_width) - 1;

 if (result_low > 0)
   nonzero &= ~(((long long) 1 << result_low) - 1);
# 8274 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      }
      break;

    case ZERO_EXTRACT:
      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) < (8 * 8))
 nonzero &= ((long long) 1 << ((((((x)->fld[1]).rtx))->fld[0]).rtwint)) - 1;
      break;

    case SUBREG:




      if (((x)->in_struct) && ((x)->unchanging))
 nonzero = (mode_mask_array[(int) (((enum machine_mode) (x)->mode))]
     & nonzero_bits ((((x)->fld[0]).rtx), ((enum machine_mode) (x)->mode)));




      if ((mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) <= ((target_flags & 0x02000000) ? 64 : 32)
   && ((mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))])
       <= (8 * 8)))
 {
   nonzero &= nonzero_bits ((((x)->fld[0]).rtx), mode);
# 8311 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
     {



       if ((mode_size[(int) (((enum machine_mode) (x)->mode))])
    > (mode_size[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]))
  nonzero |= (mode_mask_array[(int) (((enum machine_mode) (x)->mode))]
       & ~mode_mask_array[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]);
     }
 }
      break;

    case ASHIFTRT:
    case LSHIFTRT:
    case ASHIFT:
    case ROTATE:






      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) >= 0
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) < (8 * 8))
 {
   enum machine_mode inner_mode = ((enum machine_mode) (x)->mode);
   unsigned int width = (mode_bitsize[(int) (inner_mode)]);
   int count = ((((((x)->fld[1]).rtx))->fld[0]).rtwint);
   unsigned long long mode_mask = mode_mask_array[(int) (inner_mode)];
   unsigned long long op_nonzero = nonzero_bits ((((x)->fld[0]).rtx), mode);
   unsigned long long inner = op_nonzero & mode_mask;
   unsigned long long outer = 0;

   if (mode_width > width)
     outer = (op_nonzero & nonzero & ~mode_mask);

   if (code == LSHIFTRT)
     inner >>= count;
   else if (code == ASHIFTRT)
     {
       inner >>= count;




       if (inner & ((long long) 1 << (width - 1 - count)))
  inner |= (((long long) 1 << count) - 1) << (width - count);
     }
   else if (code == ASHIFT)
     inner <<= count;
   else
     inner = ((inner << (count % width)
        | (inner >> (width - (count % width)))) & mode_mask);

   nonzero &= (outer | inner);
 }
      break;

    case FFS:

      nonzero = ((long long) 1 << (floor_log2_wide ((unsigned long long) (mode_width)) + 1)) - 1;
      break;

    case IF_THEN_ELSE:
      nonzero &= (nonzero_bits ((((x)->fld[1]).rtx), mode)
    | nonzero_bits ((((x)->fld[2]).rtx), mode));
      break;

    default:
      break;
    }

  return nonzero;
}
# 8395 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static unsigned int
num_sign_bit_copies (x, mode)
     rtx x;
     enum machine_mode mode;
{
  enum rtx_code code = ((enum rtx_code) (x)->code);
  unsigned int bitwidth;
  int num0, num1, result;
  unsigned long long nonzero;
  rtx tem;





  if (mode == VOIDmode)
    mode = ((enum machine_mode) (x)->mode);

  if (mode == VOIDmode || ((mode_class[(int) (mode)]) == MODE_FLOAT || (mode_class[(int) (mode)]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (mode)]) == MODE_VECTOR_FLOAT) || ((mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_FLOAT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_VECTOR_FLOAT))
    return 1;

  bitwidth = (mode_bitsize[(int) (mode)]);


  if (bitwidth < (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]))
    {
      num0 = num_sign_bit_copies (x, ((enum machine_mode) (x)->mode));
      return ((1) > (num0 - (int) ((mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) - bitwidth)) ? (1) : (num0 - (int) ((mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) - bitwidth)));

    }

  if (((enum machine_mode) (x)->mode) != VOIDmode && bitwidth > (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]))
    {




      return 1;
# 8444 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
    }

  switch (code)
    {
    case REG:
# 8458 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if (reg_last_set_value[(((x)->fld[0]).rtuint)] != 0
   && reg_last_set_mode[(((x)->fld[0]).rtuint)] == mode
   && (reg_last_set_label[(((x)->fld[0]).rtuint)] == label_tick
       || ((((x)->fld[0]).rtuint) >= 53
    && (((reg_n_info)->data.reg[(((x)->fld[0]).rtuint)])->sets) == 1
    && ! bitmap_bit_p ((((basic_block_info)->data.bb[(0)]))->global_live_at_start, (((x)->fld[0]).rtuint))))

   && ((((reg_last_set[(((x)->fld[0]).rtuint)])->fld[0]).rtint) > max_uid_cuid ? insn_cuid (reg_last_set[(((x)->fld[0]).rtuint)]) : uid_cuid[(((reg_last_set[(((x)->fld[0]).rtuint)])->fld[0]).rtint)]) < subst_low_cuid)
 return reg_last_set_sign_bit_copies[(((x)->fld[0]).rtuint)];

      tem = get_last_value (x);
      if (tem != 0)
 return num_sign_bit_copies (tem, mode);

      if (nonzero_sign_valid && reg_sign_bit_copies[(((x)->fld[0]).rtuint)] != 0
   && (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) == bitwidth)
 return reg_sign_bit_copies[(((x)->fld[0]).rtuint)];
      break;

    case MEM:






      break;

    case CONST_INT:


      nonzero = (((x)->fld[0]).rtwint) & mode_mask_array[(int) (mode)];
      if (bitwidth <= (8 * 8)
   && (nonzero & ((long long) 1 << (bitwidth - 1))) != 0)
 nonzero = (~nonzero) & mode_mask_array[(int) (mode)];

      return (nonzero == 0 ? bitwidth : bitwidth - floor_log2_wide ((unsigned long long) (nonzero)) - 1);

    case SUBREG:




      if (((x)->in_struct) && ! ((x)->unchanging))
 {
   num0 = num_sign_bit_copies ((((x)->fld[0]).rtx), mode);
   return (((int) bitwidth - (int) (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) + 1) > (num0) ? ((int) bitwidth - (int) (mode_bitsize[(int) (((enum machine_mode) (x)->mode))]) + 1) : (num0));


 }


      if (bitwidth <= (mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]))
 {
   num0 = num_sign_bit_copies ((((x)->fld[0]).rtx), VOIDmode);
   return ((1) > ((num0 - (int) ((mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) - bitwidth))) ? (1) : ((num0 - (int) ((mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) - bitwidth))));


 }
# 8536 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      break;

    case SIGN_EXTRACT:
      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT)
 return ((1) > ((int) bitwidth - ((((((x)->fld[1]).rtx))->fld[0]).rtwint)) ? (1) : ((int) bitwidth - ((((((x)->fld[1]).rtx))->fld[0]).rtwint)));
      break;

    case SIGN_EXTEND:
      return (bitwidth - (mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))])
       + num_sign_bit_copies ((((x)->fld[0]).rtx), VOIDmode));

    case TRUNCATE:

      num0 = num_sign_bit_copies ((((x)->fld[0]).rtx), VOIDmode);
      return ((1) > ((num0 - (int) ((mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) - bitwidth))) ? (1) : ((num0 - (int) ((mode_bitsize[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]) - bitwidth))));


    case NOT:
      return num_sign_bit_copies ((((x)->fld[0]).rtx), mode);

    case ROTATE: case ROTATERT:



      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) >= 0
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) < (int) bitwidth)
 {
   num0 = num_sign_bit_copies ((((x)->fld[0]).rtx), mode);
   return ((1) > (num0 - (code == ROTATE ? ((((((x)->fld[1]).rtx))->fld[0]).rtwint) : (int) bitwidth - ((((((x)->fld[1]).rtx))->fld[0]).rtwint))) ? (1) : (num0 - (code == ROTATE ? ((((((x)->fld[1]).rtx))->fld[0]).rtwint) : (int) bitwidth - ((((((x)->fld[1]).rtx))->fld[0]).rtwint))));

 }
      break;

    case NEG:




      num0 = num_sign_bit_copies ((((x)->fld[0]).rtx), mode);
      if (bitwidth > (8 * 8))
 return num0 > 1 ? num0 - 1 : 1;

      nonzero = nonzero_bits ((((x)->fld[0]).rtx), mode);
      if (nonzero == 1)
 return bitwidth;

      if (num0 > 1
   && (((long long) 1 << (bitwidth - 1)) & nonzero))
 num0--;

      return num0;

    case IOR: case AND: case XOR:
    case SMIN: case SMAX: case UMIN: case UMAX:


      num0 = num_sign_bit_copies ((((x)->fld[0]).rtx), mode);
      num1 = num_sign_bit_copies ((((x)->fld[1]).rtx), mode);
      return ((num0) < (num1) ? (num0) : (num1));

    case PLUS: case MINUS:





      if (code == PLUS && (((x)->fld[1]).rtx) == (const_int_rtx[64 -1])
   && bitwidth <= (8 * 8))
 {
   nonzero = nonzero_bits ((((x)->fld[0]).rtx), mode);
   if ((((long long) 1 << (bitwidth - 1)) & nonzero) == 0)
     return (nonzero == 1 || nonzero == 0 ? bitwidth
      : bitwidth - floor_log2_wide ((unsigned long long) (nonzero)) - 1);
 }

      num0 = num_sign_bit_copies ((((x)->fld[0]).rtx), mode);
      num1 = num_sign_bit_copies ((((x)->fld[1]).rtx), mode);
      result = ((1) > (((num0) < (num1) ? (num0) : (num1)) - 1) ? (1) : (((num0) < (num1) ? (num0) : (num1)) - 1));
# 8627 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      return result;

    case MULT:





      num0 = num_sign_bit_copies ((((x)->fld[0]).rtx), mode);
      num1 = num_sign_bit_copies ((((x)->fld[1]).rtx), mode);

      result = bitwidth - (bitwidth - num0) - (bitwidth - num1);
      if (result > 0
   && (bitwidth > (8 * 8)
       || (((nonzero_bits ((((x)->fld[0]).rtx), mode)
      & ((long long) 1 << (bitwidth - 1))) != 0)
    && ((nonzero_bits ((((x)->fld[1]).rtx), mode)
         & ((long long) 1 << (bitwidth - 1))) != 0))))
 result--;

      return ((1) > (result) ? (1) : (result));

    case UDIV:



      if (bitwidth > (8 * 8))
 return 1;
      else if ((nonzero_bits ((((x)->fld[0]).rtx), mode)
  & ((long long) 1 << (bitwidth - 1))) != 0)
 return 1;
      else
 return num_sign_bit_copies ((((x)->fld[0]).rtx), mode);

    case UMOD:

      return num_sign_bit_copies ((((x)->fld[1]).rtx), mode);

    case DIV:



      result = num_sign_bit_copies ((((x)->fld[0]).rtx), mode);
      if (result > 1
   && (bitwidth > (8 * 8)
       || (nonzero_bits ((((x)->fld[1]).rtx), mode)
    & ((long long) 1 << (bitwidth - 1))) != 0))
 result--;

      return result;

    case MOD:
      result = num_sign_bit_copies ((((x)->fld[1]).rtx), mode);
      if (result > 1
   && (bitwidth > (8 * 8)
       || (nonzero_bits ((((x)->fld[1]).rtx), mode)
    & ((long long) 1 << (bitwidth - 1))) != 0))
 result--;

      return result;

    case ASHIFTRT:


      num0 = num_sign_bit_copies ((((x)->fld[0]).rtx), mode);
      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
   && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) > 0)
 num0 = (((int) bitwidth) < (num0 + ((((((x)->fld[1]).rtx))->fld[0]).rtwint)) ? ((int) bitwidth) : (num0 + ((((((x)->fld[1]).rtx))->fld[0]).rtwint)));

      return num0;

    case ASHIFT:

      if (((enum rtx_code) ((((x)->fld[1]).rtx))->code) != CONST_INT
   || ((((((x)->fld[1]).rtx))->fld[0]).rtwint) < 0
   || ((((((x)->fld[1]).rtx))->fld[0]).rtwint) >= (int) bitwidth)
 return 1;

      num0 = num_sign_bit_copies ((((x)->fld[0]).rtx), mode);
      return ((1) > (num0 - ((((((x)->fld[1]).rtx))->fld[0]).rtwint)) ? (1) : (num0 - ((((((x)->fld[1]).rtx))->fld[0]).rtwint)));

    case IF_THEN_ELSE:
      num0 = num_sign_bit_copies ((((x)->fld[1]).rtx), mode);
      num1 = num_sign_bit_copies ((((x)->fld[2]).rtx), mode);
      return ((num0) < (num1) ? (num0) : (num1));

    case EQ: case NE: case GE: case GT: case LE: case LT:
    case UNEQ: case LTGT: case UNGE: case UNGT: case UNLE: case UNLT:
    case GEU: case GTU: case LEU: case LTU:
    case UNORDERED: case ORDERED:


      nonzero = 1;
      if (bitwidth <= (8 * 8)
   && (nonzero & ((long long) 1 << (bitwidth - 1))) != 0)
 nonzero = (~nonzero) & mode_mask_array[(int) (mode)];

      return (nonzero == 0 ? bitwidth : bitwidth - floor_log2_wide ((unsigned long long) (nonzero)) - 1);
      break;

    default:
      break;
    }






  if (bitwidth > (8 * 8))
    return 1;

  nonzero = nonzero_bits (x, mode);
  return (nonzero & ((long long) 1 << (bitwidth - 1))
   ? 1 : bitwidth - floor_log2_wide ((unsigned long long) (nonzero)) - 1);
}
# 8755 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
unsigned int
extended_count (x, mode, unsignedp)
     rtx x;
     enum machine_mode mode;
     int unsignedp;
{
  if (nonzero_sign_valid == 0)
    return 0;

  return (unsignedp
   ? ((mode_bitsize[(int) (mode)]) <= (8 * 8)
      ? ((mode_bitsize[(int) (mode)]) - 1
  - floor_log2_wide ((unsigned long long) (nonzero_bits (x, mode))))
      : 0)
   : num_sign_bit_copies (x, mode) - 1);
}
# 8793 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static int
merge_outer_ops (pop0, pconst0, op1, const1, mode, pcomp_p)
     enum rtx_code *pop0;
     long long *pconst0;
     enum rtx_code op1;
     long long const1;
     enum machine_mode mode;
     int *pcomp_p;
{
  enum rtx_code op0 = *pop0;
  long long const0 = *pconst0;

  const0 &= mode_mask_array[(int) (mode)];
  const1 &= mode_mask_array[(int) (mode)];


  if (op0 == AND)
    const1 &= const0;




  if (op1 == NIL || op0 == SET)
    return 1;

  else if (op0 == NIL)
    op0 = op1, const0 = const1;

  else if (op0 == op1)
    {
      switch (op0)
 {
 case AND:
   const0 &= const1;
   break;
 case IOR:
   const0 |= const1;
   break;
 case XOR:
   const0 ^= const1;
   break;
 case PLUS:
   const0 += const1;
   break;
 case NEG:
   op0 = NIL;
   break;
 default:
   break;
 }
    }


  else if (op0 == PLUS || op1 == PLUS || op0 == NEG || op1 == NEG)
    return 0;



  else if (const0 != const1)
    return 0;

  else
    switch (op0)
      {
      case IOR:
 if (op1 == AND)

   op0 = SET;
 else

   {;}
 break;

      case XOR:
 if (op1 == AND)

   op0 = AND, *pcomp_p = 1;
 else

   op0 = AND, *pconst0 = ~const0;
 break;

      case AND:
 if (op1 == IOR)

 op0 = SET;
 else

   *pcomp_p = 1;
 break;
      default:
 break;
      }


  const0 &= mode_mask_array[(int) (mode)];
  if (const0 == 0
      && (op0 == IOR || op0 == XOR || op0 == PLUS))
    op0 = NIL;
  else if (const0 == 0 && op0 == AND)
    op0 = SET;
  else if ((unsigned long long) const0 == mode_mask_array[(int) (mode)]
    && op0 == AND)
    op0 = NIL;




  const0 = trunc_int_for_mode (const0, mode);

  *pop0 = op0;
  *pconst0 = const0;

  return 1;
}
# 8917 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static rtx
simplify_shift_const (x, code, result_mode, varop, orig_count)
     rtx x;
     enum rtx_code code;
     enum machine_mode result_mode;
     rtx varop;
     int orig_count;
{
  enum rtx_code orig_code = code;
  unsigned int count;
  int signed_count;
  enum machine_mode mode = result_mode;
  enum machine_mode shift_mode, tmode;
  unsigned int mode_words
    = ((mode_size[(int) (mode)]) + (((target_flags & 0x02000000) ? 8 : 4) - 1)) / ((target_flags & 0x02000000) ? 8 : 4);

  enum rtx_code outer_op = NIL;
  long long outer_const = 0;
  rtx const_rtx;
  int complement_p = 0;
  rtx new;
# 8950 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (orig_count < 0 || orig_count >= (int) (mode_bitsize[(int) (mode)]))
    {
      if (x)
 return x;

      return gen_rtx_fmt_ee (code, mode, varop, gen_rtx_CONST_INT (VOIDmode, (long long) (orig_count)));
    }

  count = orig_count;




  while (count != 0)
    {


      if (((enum rtx_code) (varop)->code) == CLOBBER)
 return varop;



      if (complement_p)
 break;


      if (code == ROTATERT)
 code = ROTATE, count = (mode_bitsize[(int) (result_mode)]) - count;





      shift_mode
 = (code == ASHIFTRT || code == LSHIFTRT || code == ROTATE
    ? result_mode : mode);
# 8997 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if (count > (mode_bitsize[(int) (shift_mode)]) - 1)
 {
   if (code == ASHIFTRT)
     count = (mode_bitsize[(int) (shift_mode)]) - 1;
   else if (code == ROTATE || code == ROTATERT)
     count %= (mode_bitsize[(int) (shift_mode)]);
   else
     {


       varop = (const_int_rtx[64]);
       count = 0;
       break;
     }
 }



      if (code == ASHIFTRT
   && (num_sign_bit_copies (varop, shift_mode)
       == (mode_bitsize[(int) (shift_mode)])))
 {
   count = 0;
   break;
 }






      if (code == ASHIFTRT
   && (count + num_sign_bit_copies (varop, shift_mode)
       >= (mode_bitsize[(int) (shift_mode)])))
 count = (mode_bitsize[(int) (shift_mode)]) - 1;





      if ((mode_bitsize[(int) (shift_mode)]) <= (8 * 8)
   && code == ASHIFTRT
   && ((nonzero_bits (varop, shift_mode)
        & ((long long) 1 << ((mode_bitsize[(int) (shift_mode)]) - 1)))
       == 0))
 code = LSHIFTRT;

      switch (((enum rtx_code) (varop)->code))
 {
 case SIGN_EXTEND:
 case ZERO_EXTEND:
 case SIGN_EXTRACT:
 case ZERO_EXTRACT:
   new = expand_compound_operation (varop);
   if (new != varop)
     {
       varop = new;
       continue;
     }
   break;

 case MEM:



   if ((code == ASHIFTRT || code == LSHIFTRT)
       && ! mode_dependent_address_p ((((varop)->fld[0]).rtx))
       && ! ((varop)->volatil)
       && (tmode = mode_for_size ((mode_bitsize[(int) (mode)]) - count,
      MODE_INT, 1)) != BLKmode)
     {
       new = adjust_address_1 (varop, tmode, 0 ? 0 : count / 8, 0, 1);



       varop = gen_rtx_fmt_e (code == ASHIFTRT ? SIGN_EXTEND
         : ZERO_EXTEND, mode, new);
       count = 0;
       continue;
     }
   break;

 case USE:




   if ((code == ASHIFTRT || code == LSHIFTRT)
       && (tmode = mode_for_size ((mode_bitsize[(int) (mode)]) - count,
      MODE_INT, 1)) != BLKmode
       && tmode == ((enum machine_mode) ((((varop)->fld[0]).rtx))->mode))
     {
       if (0)
  new = (((varop)->fld[0]).rtx);
       else
  {
    new = copy_rtx ((((varop)->fld[0]).rtx));
    do_SUBST(&((((new)->fld[0]).rtx)), (plus_constant_wide (((((new)->fld[0]).rtx)), (long long) (count / 8))));


  }

       varop = gen_rtx_fmt_e (code == ASHIFTRT ? SIGN_EXTEND
         : ZERO_EXTEND, mode, new);
       count = 0;
       continue;
     }
   break;

 case SUBREG:



   if (subreg_lowpart_p (varop)
       && ((mode_size[(int) (((enum machine_mode) ((((varop)->fld[0]).rtx))->mode))])
    > (mode_size[(int) (((enum machine_mode) (varop)->mode))]))
       && ((((mode_size[(int) (((enum machine_mode) ((((varop)->fld[0]).rtx))->mode))])
      + (((target_flags & 0x02000000) ? 8 : 4) - 1)) / ((target_flags & 0x02000000) ? 8 : 4))
    == mode_words))
     {
       varop = (((varop)->fld[0]).rtx);
       if ((mode_size[(int) (((enum machine_mode) (varop)->mode))]) > (mode_size[(int) (mode)]))
  mode = ((enum machine_mode) (varop)->mode);
       continue;
     }
   break;

 case MULT:



   if (((enum rtx_code) ((((varop)->fld[1]).rtx))->code) == CONST_INT
       && exact_log2_wide ((unsigned long long) (((((((varop)->fld[1]).rtx))->fld[0]).rtwint))) >= 0)
     {
       varop
  = gen_binary (ASHIFT, ((enum machine_mode) (varop)->mode), (((varop)->fld[0]).rtx),
         gen_rtx_CONST_INT (VOIDmode, (long long) (exact_log2_wide ((unsigned long long) (((((((varop)->fld[1]).rtx))->fld[0]).rtwint))))));
       continue;
     }
   break;

 case UDIV:

   if (((enum rtx_code) ((((varop)->fld[1]).rtx))->code) == CONST_INT
       && exact_log2_wide ((unsigned long long) (((((((varop)->fld[1]).rtx))->fld[0]).rtwint))) >= 0)
     {
       varop
  = gen_binary (LSHIFTRT, ((enum machine_mode) (varop)->mode), (((varop)->fld[0]).rtx),
         gen_rtx_CONST_INT (VOIDmode, (long long) (exact_log2_wide ((unsigned long long) (((((((varop)->fld[1]).rtx))->fld[0]).rtwint))))));
       continue;
     }
   break;

 case ASHIFTRT:





   if (code == LSHIFTRT && count == (mode_bitsize[(int) (result_mode)]) - 1
       && ((mode_bitsize[(int) (result_mode)])
    >= (mode_bitsize[(int) (((enum machine_mode) (varop)->mode))])))
     {
       varop = (((varop)->fld[0]).rtx);
       continue;
     }



 case LSHIFTRT:
 case ASHIFT:
 case ROTATE:


   if (((enum rtx_code) ((((varop)->fld[1]).rtx))->code) == CONST_INT
       && ((((((varop)->fld[1]).rtx))->fld[0]).rtwint) >= 0
       && ((((((varop)->fld[1]).rtx))->fld[0]).rtwint) < (mode_bitsize[(int) (((enum machine_mode) (varop)->mode))])
       && (mode_bitsize[(int) (result_mode)]) <= (8 * 8)
       && (mode_bitsize[(int) (mode)]) <= (8 * 8))
     {
       enum rtx_code first_code = ((enum rtx_code) (varop)->code);
       unsigned int first_count = ((((((varop)->fld[1]).rtx))->fld[0]).rtwint);
       unsigned long long mask;
       rtx mask_rtx;
# 9189 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
       if (code == ASHIFT && first_code == ASHIFTRT
    && ((mode_bitsize[(int) (result_mode)])
        - (mode_bitsize[(int) (((enum machine_mode) (varop)->mode))])) == count)
  {


    mask = (mode_mask_array[(int) (mode)]
     & ~(((long long) 1 << first_count) - 1));

    varop = simplify_and_const_int ((rtx) 0, result_mode,
        (((varop)->fld[0]).rtx), mask);
    varop = simplify_shift_const ((rtx) 0, ASHIFT, result_mode,
      varop, count);
    count = first_count;
    code = ASHIFTRT;
    continue;
  }
# 9214 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
       if (code == ASHIFTRT && first_code == ASHIFT
    && ((enum machine_mode) (varop)->mode) == shift_mode
    && (num_sign_bit_copies ((((varop)->fld[0]).rtx), shift_mode)
        > first_count))
  {
    varop = (((varop)->fld[0]).rtx);

    signed_count = count - first_count;
    if (signed_count < 0)
      count = -signed_count, code = ASHIFT;
    else
      count = signed_count;

    continue;
  }
# 9245 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
       if (code == first_code)
  {
    if (((enum machine_mode) (varop)->mode) != result_mode
        && (code == ASHIFTRT || code == LSHIFTRT
     || code == ROTATE))
      break;

    count += first_count;
    varop = (((varop)->fld[0]).rtx);
    continue;
  }

       if (code == ASHIFTRT
    || (code == ROTATE && first_code == ASHIFTRT)
    || (mode_bitsize[(int) (mode)]) > (8 * 8)
    || (((enum machine_mode) (varop)->mode) != result_mode
        && (first_code == ASHIFTRT || first_code == LSHIFTRT
     || first_code == ROTATE
     || code == ROTATE)))
  break;





       mask_rtx = gen_rtx_CONST_INT (VOIDmode, (long long) (nonzero_bits (varop, ((enum machine_mode) (varop)->mode))));

       mask_rtx
  = simplify_binary_operation (code, result_mode, mask_rtx,
          gen_rtx_CONST_INT (VOIDmode, (long long) (count)));


       if (mask_rtx == 0
    || ((enum rtx_code) (mask_rtx)->code) != CONST_INT
    || ! merge_outer_ops (&outer_op, &outer_const, AND,
     (((mask_rtx)->fld[0]).rtwint),
     result_mode, &complement_p))
  break;



       signed_count = count;
       if ((code == ASHIFTRT || code == LSHIFTRT)
    == (first_code == ASHIFTRT || first_code == LSHIFTRT))
  signed_count += first_count;
       else
  signed_count -= first_count;





       if (signed_count > 0
    && ((first_code == ROTATE && code == ASHIFT)
        || (first_code == ASHIFTRT && code == LSHIFTRT)))
  code = first_code, count = signed_count;
       else if (signed_count < 0)
  code = first_code, count = -signed_count;
       else
  count = signed_count;

       varop = (((varop)->fld[0]).rtx);
       continue;
     }





   else if (((enum rtx_code) (varop)->code) == code
     && ((enum rtx_code) ((((varop)->fld[1]).rtx))->code) != CONST_INT
     && 0 != (new
       = simplify_binary_operation (code, mode,
        (((varop)->fld[0]).rtx),
        gen_rtx_CONST_INT (VOIDmode, (long long) (count)))))
     {
       varop = gen_rtx_fmt_ee (code, mode, new, (((varop)->fld[1]).rtx));
       count = 0;
       continue;
     }
   break;

 case NOT:

   varop = gen_rtx_fmt_ee (XOR, (mode), ((((varop)->fld[0]).rtx)), (gen_rtx_CONST_INT (VOIDmode, (long long) (mode_mask_array[(int) (mode)]))));

   continue;

 case IOR:
 case AND:
 case XOR:







   if (((enum rtx_code) (varop)->code) == IOR && ((enum rtx_code) ((((varop)->fld[0]).rtx))->code) == PLUS
       && ((((((varop)->fld[0]).rtx))->fld[1]).rtx) == (const_int_rtx[64 -1])
       && (1 == 1 || 1 == -1)
       && (code == LSHIFTRT || code == ASHIFTRT)
       && count == (mode_bitsize[(int) (((enum machine_mode) (varop)->mode))]) - 1
       && rtx_equal_p (((((((varop)->fld[0]).rtx))->fld[0]).rtx), (((varop)->fld[1]).rtx)))
     {
       count = 0;
       varop = gen_rtx_fmt_ee (LE, (((enum machine_mode) (varop)->mode)), ((((varop)->fld[1]).rtx)), ((const_int_rtx[64])));


       if (1 == 1 ? code == ASHIFTRT : code == LSHIFTRT)
  varop = gen_rtx_fmt_e (NEG, (((enum machine_mode) (varop)->mode)), (varop));

       continue;
     }







   if (((enum rtx_code) ((((varop)->fld[1]).rtx))->code) == CONST_INT
       && (new = simplify_binary_operation (code, result_mode,
         (((varop)->fld[1]).rtx),
         gen_rtx_CONST_INT (VOIDmode, (long long) (count)))) != 0
       && ((enum rtx_code) (new)->code) == CONST_INT
       && merge_outer_ops (&outer_op, &outer_const, ((enum rtx_code) (varop)->code),
      (((new)->fld[0]).rtwint), result_mode, &complement_p))
     {
       varop = (((varop)->fld[0]).rtx);
       continue;
     }




   {
     rtx lhs = simplify_shift_const ((rtx) 0, code, shift_mode,
         (((varop)->fld[0]).rtx), count);
     rtx rhs = simplify_shift_const ((rtx) 0, code, shift_mode,
         (((varop)->fld[1]).rtx), count);

     varop = gen_binary (((enum rtx_code) (varop)->code), shift_mode, lhs, rhs);
     varop = apply_distributive_law (varop);

     count = 0;
   }
   break;

 case EQ:




   if (code == LSHIFTRT
       && (((varop)->fld[1]).rtx) == (const_int_rtx[64])
       && ((enum machine_mode) ((((varop)->fld[0]).rtx))->mode) == result_mode
       && count == (mode_bitsize[(int) (result_mode)]) - 1
       && (mode_bitsize[(int) (result_mode)]) <= (8 * 8)
       && ((1
     & ((long long) 1
        < ((mode_bitsize[(int) (result_mode)]) - 1))))
       && nonzero_bits ((((varop)->fld[0]).rtx), result_mode) == 1
       && merge_outer_ops (&outer_op, &outer_const, XOR,
      (long long) 1, result_mode,
      &complement_p))
     {
       varop = (((varop)->fld[0]).rtx);
       count = 0;
       continue;
     }
   break;

 case NEG:


   if (code == LSHIFTRT && count == (mode_bitsize[(int) (result_mode)]) - 1
       && nonzero_bits ((((varop)->fld[0]).rtx), result_mode) == 1)
     {
       varop = (((varop)->fld[0]).rtx);
       count = 0;
       continue;
     }



   if (code == ASHIFT
       && merge_outer_ops (&outer_op, &outer_const, NEG,
      (long long) 0, result_mode,
      &complement_p))
     {
       varop = (((varop)->fld[0]).rtx);
       continue;
     }
   break;

 case PLUS:



   if (code == LSHIFTRT && count == (mode_bitsize[(int) (result_mode)]) - 1
       && (((varop)->fld[1]).rtx) == (const_int_rtx[64 -1])
       && nonzero_bits ((((varop)->fld[0]).rtx), result_mode) == 1
       && merge_outer_ops (&outer_op, &outer_const, XOR,
      (long long) 1, result_mode,
      &complement_p))
     {
       count = 0;
       varop = (((varop)->fld[0]).rtx);
       continue;
     }







   if ((code == ASHIFTRT || code == LSHIFTRT)
       && count < (8 * 8)
       && nonzero_bits ((((varop)->fld[1]).rtx), result_mode) >> count == 0
       && (nonzero_bits ((((varop)->fld[1]).rtx), result_mode)
    & nonzero_bits ((((varop)->fld[0]).rtx), result_mode)) == 0)
     {
       varop = (((varop)->fld[0]).rtx);
       continue;
     }
   else if ((code == ASHIFTRT || code == LSHIFTRT)
     && count < (8 * 8)
     && (mode_bitsize[(int) (result_mode)]) <= (8 * 8)
     && 0 == (nonzero_bits ((((varop)->fld[0]).rtx), result_mode)
       >> count)
     && 0 == (nonzero_bits ((((varop)->fld[0]).rtx), result_mode)
       & nonzero_bits ((((varop)->fld[1]).rtx),
       result_mode)))
     {
       varop = (((varop)->fld[1]).rtx);
       continue;
     }


   if (code == ASHIFT
       && ((enum rtx_code) ((((varop)->fld[1]).rtx))->code) == CONST_INT
       && (new = simplify_binary_operation (ASHIFT, result_mode,
         (((varop)->fld[1]).rtx),
         gen_rtx_CONST_INT (VOIDmode, (long long) (count)))) != 0
       && ((enum rtx_code) (new)->code) == CONST_INT
       && merge_outer_ops (&outer_op, &outer_const, PLUS,
      (((new)->fld[0]).rtwint), result_mode, &complement_p))
     {
       varop = (((varop)->fld[0]).rtx);
       continue;
     }
   break;

 case MINUS:







   if ((1 == 1 || 1 == -1)
       && ((enum rtx_code) ((((varop)->fld[0]).rtx))->code) == ASHIFTRT
       && count == (mode_bitsize[(int) (((enum machine_mode) (varop)->mode))]) - 1
       && (code == LSHIFTRT || code == ASHIFTRT)
       && ((enum rtx_code) (((((((varop)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
       && (((((((((varop)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint) == count
       && rtx_equal_p (((((((varop)->fld[0]).rtx))->fld[0]).rtx), (((varop)->fld[1]).rtx)))
     {
       count = 0;
       varop = gen_rtx_fmt_ee (GT, (((enum machine_mode) (varop)->mode)), ((((varop)->fld[1]).rtx)), ((const_int_rtx[64])));


       if (1 == 1 ? code == ASHIFTRT : code == LSHIFTRT)
  varop = gen_rtx_fmt_e (NEG, (((enum machine_mode) (varop)->mode)), (varop));

       continue;
     }
   break;

 case TRUNCATE:


   if (code == LSHIFTRT
       && ((enum rtx_code) ((((varop)->fld[0]).rtx))->code) == LSHIFTRT
       && ((enum rtx_code) (((((((varop)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
       && ((((((((((varop)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint)
    >= ((mode_bitsize[(int) (((enum machine_mode) ((((varop)->fld[0]).rtx))->mode))])
        - (mode_bitsize[(int) (((enum machine_mode) (varop)->mode))]))))
     {
       rtx varop_inner = (((varop)->fld[0]).rtx);

       varop_inner
  = gen_rtx_fmt_ee (LSHIFTRT, (((enum machine_mode) (varop_inner)->mode)), ((((varop_inner)->fld[0]).rtx)), (gen_rtx_CONST_INT (VOIDmode, (long long) (count + ((((((varop_inner)->fld[1]).rtx))->fld[0]).rtwint)))));



       varop = gen_rtx_fmt_e (TRUNCATE, (((enum machine_mode) (varop)->mode)), (varop_inner));
       count = 0;
       continue;
     }
   break;

 default:
   break;
 }

      break;
    }






  shift_mode
    = (code == ASHIFTRT || code == LSHIFTRT || code == ROTATE
       ? result_mode : mode);
# 9575 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (x && (rtx_class[(int) (((enum rtx_code) (x)->code))]) == '2'
      && ((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT
      && ((((((x)->fld[1]).rtx))->fld[0]).rtwint) == count)
    const_rtx = (((x)->fld[1]).rtx);
  else
    const_rtx = gen_rtx_CONST_INT (VOIDmode, (long long) (count));

  if (x && ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == SUBREG
      && ((enum machine_mode) ((((x)->fld[0]).rtx))->mode) == shift_mode
      && ((((((x)->fld[0]).rtx))->fld[0]).rtx) == varop)
    varop = (((x)->fld[0]).rtx);
  else if (((enum machine_mode) (varop)->mode) != shift_mode)
    varop = gen_lowpart_for_combine (shift_mode, varop);


  if (((enum rtx_code) (varop)->code) == CLOBBER)
    return x ? x : varop;

  new = simplify_binary_operation (code, shift_mode, varop, const_rtx);
  if (new != 0)
    x = new;
  else
    x = gen_rtx_fmt_ee (code, shift_mode, varop, const_rtx);






  if (outer_op != NIL && ((enum rtx_code) (x)->code) == code
      && ((enum rtx_code) ((((x)->fld[1]).rtx))->code) == CONST_INT)
    x = simplify_shift_const (x, code, shift_mode, (((x)->fld[0]).rtx),
         ((((((x)->fld[1]).rtx))->fld[0]).rtwint));



  if (orig_code == LSHIFTRT && result_mode != shift_mode)
    x = simplify_and_const_int ((rtx) 0, shift_mode, x,
    mode_mask_array[(int) (result_mode)] >> orig_count);


  x = gen_lowpart_for_combine (result_mode, x);



  if (complement_p)
    x =simplify_gen_unary (NOT, result_mode, x, result_mode);

  if (outer_op != NIL)
    {
      if ((mode_bitsize[(int) (result_mode)]) < (8 * 8))
 outer_const = trunc_int_for_mode (outer_const, result_mode);

      if (outer_op == AND)
 x = simplify_and_const_int ((rtx) 0, result_mode, x, outer_const);
      else if (outer_op == SET)


 x = gen_rtx_CONST_INT (VOIDmode, (long long) (outer_const));
      else if ((rtx_class[(int) (outer_op)]) == '1')
 x = simplify_gen_unary (outer_op, result_mode, x, result_mode);
      else
 x = gen_binary (outer_op, result_mode, x, gen_rtx_CONST_INT (VOIDmode, (long long) (outer_const)));
    }

  return x;
}
# 9656 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static int
recog_for_combine (pnewpat, insn, pnotes)
     rtx *pnewpat;
     rtx insn;
     rtx *pnotes;
{
  rtx pat = *pnewpat;
  int insn_code_number;
  int num_clobbers_to_add = 0;
  int i;
  rtx notes = 0;
  rtx dummy_insn;




  if (((enum rtx_code) (pat)->code) == PARALLEL)
    for (i = (((((pat)->fld[0]).rtvec))->num_elem) - 1; i >= 0; i--)
      if (((enum rtx_code) ((((((pat)->fld[0]).rtvec))->elem[i]))->code) == CLOBBER
   && ((((((((pat)->fld[0]).rtvec))->elem[i]))->fld[0]).rtx) == (const_int_rtx[64]))
 return -1;



  dummy_insn = shallow_copy_rtx (insn);
  (((dummy_insn)->fld[3]).rtx) = pat;
  (((dummy_insn)->fld[6]).rtx) = 0;

  insn_code_number = recog (pat, dummy_insn, &num_clobbers_to_add);






  if (insn_code_number < 0 && ! check_asm_operands (pat)
      && ((enum rtx_code) (pat)->code) == PARALLEL)
    {
      int pos;

      for (pos = 0, i = 0; i < (((((pat)->fld[0]).rtvec))->num_elem); i++)
 if (((enum rtx_code) ((((((pat)->fld[0]).rtvec))->elem[i]))->code) != CLOBBER)
   {
     if (i != pos)
       do_SUBST(&((((((pat)->fld[0]).rtvec))->elem[pos])), ((((((pat)->fld[0]).rtvec))->elem[i])));
     pos++;
   }

      do_SUBST_INT((unsigned int *)&((((((pat)->fld[0]).rtvec))->num_elem)), (pos));

      if (pos == 1)
 pat = (((((pat)->fld[0]).rtvec))->elem[0]);

      (((dummy_insn)->fld[3]).rtx) = pat;
      insn_code_number = recog (pat, dummy_insn, &num_clobbers_to_add);
    }


  if (insn_code_number < 0 && ((enum rtx_code) (pat)->code) == SET && set_noop_p (pat))
    insn_code_number = 2147483647, num_clobbers_to_add = 0;



  if (num_clobbers_to_add)
    {
      rtx newpat = gen_rtx_fmt_E (PARALLEL, (VOIDmode), (rtvec_alloc (((enum rtx_code) (pat)->code) == PARALLEL ? ((((((pat)->fld[0]).rtvec))->num_elem) + num_clobbers_to_add) : num_clobbers_to_add + 1)));





      if (((enum rtx_code) (pat)->code) == PARALLEL)
 for (i = 0; i < (((((pat)->fld[0]).rtvec))->num_elem); i++)
   (((((newpat)->fld[0]).rtvec))->elem[i]) = (((((pat)->fld[0]).rtvec))->elem[i]);
      else
 (((((newpat)->fld[0]).rtvec))->elem[0]) = pat;

      add_clobbers (newpat, insn_code_number);

      for (i = (((((newpat)->fld[0]).rtvec))->num_elem) - num_clobbers_to_add;
    i < (((((newpat)->fld[0]).rtvec))->num_elem); i++)
 {
   if (((enum rtx_code) (((((((((newpat)->fld[0]).rtvec))->elem[i]))->fld[0]).rtx))->code) == REG
       && ! reg_dead_at_p (((((((((newpat)->fld[0]).rtvec))->elem[i]))->fld[0]).rtx), insn))
     return -1;
   notes = gen_rtx_fmt_ee (EXPR_LIST, (REG_UNUSED), (((((((((newpat)->fld[0]).rtvec))->elem[i]))->fld[0]).rtx)), (notes));

 }
      pat = newpat;
    }

  *pnewpat = pat;
  *pnotes = notes;

  return insn_code_number;
}
# 9764 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static rtx
gen_lowpart_for_combine (mode, x)
     enum machine_mode mode;
     rtx x;
{
  rtx result;

  if (((enum machine_mode) (x)->mode) == mode)
    return x;




  if ((mode_size[(int) (mode)]) > ((target_flags & 0x02000000) ? 8 : 4)
      && ! ((((enum machine_mode) (x)->mode) == VOIDmode
      && (((enum rtx_code) (x)->code) == CONST_INT
   || ((enum rtx_code) (x)->code) == CONST_DOUBLE))
     || (mode_size[(int) (((enum machine_mode) (x)->mode))]) == (mode_size[(int) (mode)])))
    return gen_rtx_fmt_e (CLOBBER, (((enum machine_mode) (x)->mode)), ((const_int_rtx[64])));




  if (((enum rtx_code) (x)->code) == SUBREG && ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == MEM)
    {
      x = (((x)->fld[0]).rtx);
      if (((enum machine_mode) (x)->mode) == mode)
 return x;
    }

  result = gen_lowpart_common (mode, x);
# 9805 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (result)
    return result;

  if (((enum rtx_code) (x)->code) == MEM)
    {
      int offset = 0;



      if (((x)->volatil) || mode_dependent_address_p ((((x)->fld[0]).rtx)))
 return gen_rtx_fmt_e (CLOBBER, (((enum machine_mode) (x)->mode)), ((const_int_rtx[64])));




      if ((mode_size[(int) (((enum machine_mode) (x)->mode))]) < (mode_size[(int) (mode)]))
 return gen_rtx_SUBREG (mode, x, 0);

      if (0)
 offset = ((((mode_size[(int) (((enum machine_mode) (x)->mode))])) > (((target_flags & 0x02000000) ? 8 : 4)) ? ((mode_size[(int) (((enum machine_mode) (x)->mode))])) : (((target_flags & 0x02000000) ? 8 : 4)))
    - (((mode_size[(int) (mode)])) > (((target_flags & 0x02000000) ? 8 : 4)) ? ((mode_size[(int) (mode)])) : (((target_flags & 0x02000000) ? 8 : 4))));

      if (0)
 {


   offset -= (((((target_flags & 0x02000000) ? 8 : 4)) < ((mode_size[(int) (mode)])) ? (((target_flags & 0x02000000) ? 8 : 4)) : ((mode_size[(int) (mode)])))
       - ((((target_flags & 0x02000000) ? 8 : 4)) < ((mode_size[(int) (((enum machine_mode) (x)->mode))])) ? (((target_flags & 0x02000000) ? 8 : 4)) : ((mode_size[(int) (((enum machine_mode) (x)->mode))]))));
 }

      return adjust_address_1 (x, mode, offset, 0, 1);
    }



  else if ((rtx_class[(int) (((enum rtx_code) (x)->code))]) == '<')
    return gen_rtx_fmt_ee (((enum rtx_code) (x)->code), mode, (((x)->fld[0]).rtx), (((x)->fld[1]).rtx));




  else
    {
      int offset = 0;
      rtx res;




      if (((enum machine_mode) (x)->mode) == VOIDmode)
 return gen_rtx_fmt_e (CLOBBER, (((enum machine_mode) (x)->mode)), ((const_int_rtx[64])));

      offset = subreg_lowpart_offset (mode, ((enum machine_mode) (x)->mode));
      res = simplify_gen_subreg (mode, x, ((enum machine_mode) (x)->mode), offset);
      if (res)
 return res;
      return gen_rtx_fmt_e (CLOBBER, (((enum machine_mode) (x)->mode)), ((const_int_rtx[64])));
    }
}




static rtx
gen_binary (code, mode, op0, op1)
     enum rtx_code code;
     enum machine_mode mode;
     rtx op0, op1;
{
  rtx result;
  rtx tem;

  if ((rtx_class[(int) (code)]) == 'c'
      && swap_commutative_operands_p (op0, op1))
    tem = op0, op0 = op1, op1 = tem;

  if ((rtx_class[(int) (code)]) == '<')
    {
      enum machine_mode op_mode = ((enum machine_mode) (op0)->mode);



      if (((enum rtx_code) (op0)->code) == COMPARE && op1 == (const_int_rtx[64]))
 {
   op1 = (((op0)->fld[1]).rtx);
   op0 = (((op0)->fld[0]).rtx);
   op_mode = ((enum machine_mode) (op0)->mode);
 }

      if (op_mode == VOIDmode)
 op_mode = ((enum machine_mode) (op1)->mode);
      result = simplify_relational_operation (code, op_mode, op0, op1);
    }
  else
    result = simplify_binary_operation (code, mode, op0, op1);

  if (result)
    return result;


  if ((rtx_class[(int) (code)]) == 'c'
      && swap_commutative_operands_p (op0, op1))
    return gen_rtx_fmt_ee (code, mode, op1, op0);



  else if (code == AND && ((enum rtx_code) (op1)->code) == CONST_INT
    && (mode_bitsize[(int) (mode)]) <= (8 * 8)
    && (nonzero_bits (op0, mode) & ~(((op1)->fld[0]).rtwint)) == 0)
    return op0;

  return gen_rtx_fmt_ee (code, mode, op0, op1);
}
# 9930 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static enum rtx_code
simplify_comparison (code, pop0, pop1)
     enum rtx_code code;
     rtx *pop0;
     rtx *pop1;
{
  rtx op0 = *pop0;
  rtx op1 = *pop1;
  rtx tem, tem1;
  int i;
  enum machine_mode mode, tmode;


  while (1)
    {



      if (code != GTU && code != GEU && code != LTU && code != LEU
   && ((enum rtx_code) (op0)->code) == ASHIFTRT && ((enum rtx_code) (op1)->code) == ASHIFTRT
   && ((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == ASHIFT
   && ((enum rtx_code) ((((op1)->fld[0]).rtx))->code) == ASHIFT
   && ((enum rtx_code) (((((((op0)->fld[0]).rtx))->fld[0]).rtx))->code) == SUBREG
   && ((enum rtx_code) (((((((op1)->fld[0]).rtx))->fld[0]).rtx))->code) == SUBREG
   && (((enum machine_mode) ((((((((((op0)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx))->mode)
       == ((enum machine_mode) ((((((((((op1)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx))->mode))
   && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
   && ((enum rtx_code) ((((op1)->fld[1]).rtx))->code) == CONST_INT
   && ((enum rtx_code) (((((((op0)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
   && ((enum rtx_code) (((((((op1)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
   && ((((((op0)->fld[1]).rtx))->fld[0]).rtwint) == ((((((op1)->fld[1]).rtx))->fld[0]).rtwint)
   && ((((((op0)->fld[1]).rtx))->fld[0]).rtwint) == (((((((((op0)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint)
   && ((((((op0)->fld[1]).rtx))->fld[0]).rtwint) == (((((((((op1)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint)
   && (((((((op0)->fld[1]).rtx))->fld[0]).rtwint)
       == ((mode_bitsize[(int) (((enum machine_mode) (op0)->mode))])
    - ((mode_bitsize[(int) (((enum machine_mode) ((((((((((op0)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx))->mode))])))))

 {
   op0 = (((((((((op0)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx);
   op1 = (((((((((op1)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx);
 }






      if (((enum rtx_code) (op0)->code) == ((enum rtx_code) (op1)->code)
   && (mode_bitsize[(int) (((enum machine_mode) (op0)->mode))]) <= (8 * 8)
   && ((((enum rtx_code) (op0)->code) == ROTATE && (code == NE || code == EQ))
       || ((((enum rtx_code) (op0)->code) == LSHIFTRT || ((enum rtx_code) (op0)->code) == ASHIFT)
    && (code != GT && code != LT && code != GE && code != LE))
       || (((enum rtx_code) (op0)->code) == ASHIFTRT
    && (code != GTU && code != LTU
        && code != GEU && code != LEU)))
   && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
   && ((((((op0)->fld[1]).rtx))->fld[0]).rtwint) >= 0
   && ((((((op0)->fld[1]).rtx))->fld[0]).rtwint) < (8 * 8)
   && (((op0)->fld[1]).rtx) == (((op1)->fld[1]).rtx))
 {
   enum machine_mode mode = ((enum machine_mode) (op0)->mode);
   unsigned long long mask = mode_mask_array[(int) (mode)];
   int shift_count = ((((((op0)->fld[1]).rtx))->fld[0]).rtwint);

   if (((enum rtx_code) (op0)->code) == LSHIFTRT || ((enum rtx_code) (op0)->code) == ASHIFTRT)
     mask &= (mask >> shift_count) << shift_count;
   else if (((enum rtx_code) (op0)->code) == ASHIFT)
     mask = (mask & (mask << shift_count)) >> shift_count;

   if ((nonzero_bits ((((op0)->fld[0]).rtx), mode) & ~mask) == 0
       && (nonzero_bits ((((op1)->fld[0]).rtx), mode) & ~mask) == 0)
     op0 = (((op0)->fld[0]).rtx), op1 = (((op1)->fld[0]).rtx);
   else
     break;
 }
# 10019 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      else if (((enum rtx_code) (op0)->code) == AND && ((enum rtx_code) (op1)->code) == AND
        && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
        && ((enum rtx_code) ((((op1)->fld[1]).rtx))->code) == CONST_INT)
 {
   rtx inner_op0 = (((op0)->fld[0]).rtx);
   rtx inner_op1 = (((op1)->fld[0]).rtx);
   long long c0 = ((((((op0)->fld[1]).rtx))->fld[0]).rtwint);
   long long c1 = ((((((op1)->fld[1]).rtx))->fld[0]).rtwint);
   int changed = 0;

   if (((enum rtx_code) (inner_op0)->code) == SUBREG && ((enum rtx_code) (inner_op1)->code) == SUBREG
       && ((mode_size[(int) (((enum machine_mode) (inner_op0)->mode))])
    > (mode_size[(int) (((enum machine_mode) ((((inner_op0)->fld[0]).rtx))->mode))]))
       && (((enum machine_mode) ((((inner_op0)->fld[0]).rtx))->mode)
    == ((enum machine_mode) ((((inner_op1)->fld[0]).rtx))->mode))
       && ((mode_bitsize[(int) (((enum machine_mode) ((((inner_op0)->fld[0]).rtx))->mode))])
    <= (8 * 8))
       && (0 == ((~c0) & nonzero_bits ((((inner_op0)->fld[0]).rtx),
          ((enum machine_mode) ((((inner_op0)->fld[0]).rtx))->mode))))
       && (0 == ((~c1) & nonzero_bits ((((inner_op1)->fld[0]).rtx),
          ((enum machine_mode) ((((inner_op1)->fld[0]).rtx))->mode)))))
     {
       op0 = (((inner_op0)->fld[0]).rtx);
       op1 = (((inner_op1)->fld[0]).rtx);



       code = unsigned_condition (code);

       changed = 1;
     }

   else if (c0 == c1)
     for (tmode = class_narrowest_mode[(int) ((mode_class[(int) (((enum machine_mode) (op0)->mode))]))];

   tmode != ((enum machine_mode) (op0)->mode); tmode = ((enum machine_mode)mode_wider_mode[(int) (tmode)]))
       if ((unsigned long long) c0 == mode_mask_array[(int) (tmode)])
  {
    op0 = gen_lowpart_for_combine (tmode, inner_op0);
    op1 = gen_lowpart_for_combine (tmode, inner_op1);
    code = unsigned_condition (code);
    changed = 1;
    break;
  }

   if (! changed)
     break;
 }




      else if ((((enum rtx_code) (op0)->code) == NOT && ((enum rtx_code) (op1)->code) == NOT)
        || (((enum rtx_code) (op0)->code) == NEG && ((enum rtx_code) (op1)->code) == NEG
     && (code == EQ || code == NE)))
 op0 = (((op0)->fld[0]).rtx), op1 = (((op1)->fld[0]).rtx), code = swap_condition (code);

      else
 break;
    }




  if (swap_commutative_operands_p (op0, op1))
    {
      tem = op0, op0 = op1, op1 = tem;
      code = swap_condition (code);
    }






  while (((enum rtx_code) (op1)->code) == CONST_INT)
    {
      enum machine_mode mode = ((enum machine_mode) (op0)->mode);
      unsigned int mode_width = (mode_bitsize[(int) (mode)]);
      unsigned long long mask = mode_mask_array[(int) (mode)];
      int equality_comparison_p;
      int sign_bit_comparison_p;
      int unsigned_comparison_p;
      long long const_op;






      if ((mode_class[(int) (mode)]) != MODE_INT
   && ! (mode == VOIDmode
  && (((enum rtx_code) (op0)->code) == COMPARE
      || (rtx_class[(int) (((enum rtx_code) (op0)->code))]) == '<')))
 break;



      const_op = trunc_int_for_mode ((((op1)->fld[0]).rtwint), mode);
      op1 = gen_rtx_CONST_INT (VOIDmode, (long long) (const_op));





      if (const_op
   && (code == EQ || code == NE || code == GE || code == GEU
       || code == LT || code == LTU)
   && mode_width <= (8 * 8)
   && exact_log2_wide ((unsigned long long) (const_op)) >= 0
   && nonzero_bits (op0, mode) == (unsigned long long) const_op)
 {
   code = (code == EQ || code == GE || code == GEU ? NE : EQ);
   op1 = (const_int_rtx[64]), const_op = 0;
 }




      if (const_op == -1
   && (code == EQ || code == NE || code == GT || code == LE
       || code == GEU || code == LTU)
   && num_sign_bit_copies (op0, mode) == mode_width)
 {
   code = (code == EQ || code == LE || code == GEU ? NE : EQ);
   op1 = (const_int_rtx[64]), const_op = 0;
 }





      switch (code)
 {
 case LT:

   if (const_op > 0)
     {
       const_op -= 1;
       op1 = gen_rtx_CONST_INT (VOIDmode, (long long) (const_op));
       code = LE;

     }
   else
     break;

 case LE:

   if (const_op < 0)
     {
       const_op += 1;
       op1 = gen_rtx_CONST_INT (VOIDmode, (long long) (const_op));
       code = LT;
     }



   else if (const_op == 0
     && mode_width <= (8 * 8)
     && (nonzero_bits (op0, mode)
         & ((long long) 1 << (mode_width - 1))) == 0)
     code = EQ;
   break;

 case GE:

   if (const_op > 0)
     {
       const_op -= 1;
       op1 = gen_rtx_CONST_INT (VOIDmode, (long long) (const_op));
       code = GT;

     }
   else
     break;

 case GT:

   if (const_op < 0)
     {
       const_op += 1;
       op1 = gen_rtx_CONST_INT (VOIDmode, (long long) (const_op));
       code = GE;
     }



   else if (const_op == 0
     && mode_width <= (8 * 8)
     && (nonzero_bits (op0, mode)
         & ((long long) 1 << (mode_width - 1))) == 0)
     code = NE;
   break;

 case LTU:

   if (const_op > 0)
     {
       const_op -= 1;
       op1 = gen_rtx_CONST_INT (VOIDmode, (long long) (const_op));
       code = LEU;

     }


   else if ((mode_width <= (8 * 8))
     && (const_op == (long long) 1 << (mode_width - 1)))
     {
       const_op = 0, op1 = (const_int_rtx[64]);
       code = GE;
       break;
     }
   else
     break;

 case LEU:

   if (const_op == 0)
     code = EQ;


   else if ((mode_width <= (8 * 8))
     && (const_op == ((long long) 1 << (mode_width - 1)) - 1))
     {
       const_op = 0, op1 = (const_int_rtx[64]);
       code = GE;
     }
   break;

 case GEU:

   if (const_op > 1)
     {
       const_op -= 1;
       op1 = gen_rtx_CONST_INT (VOIDmode, (long long) (const_op));
       code = GTU;

     }


   else if ((mode_width <= (8 * 8))
     && (const_op == (long long) 1 << (mode_width - 1)))
     {
       const_op = 0, op1 = (const_int_rtx[64]);
       code = LT;
       break;
     }
   else
     break;

 case GTU:

   if (const_op == 0)
     code = NE;


   else if ((mode_width <= (8 * 8))
      && (const_op == ((long long) 1 << (mode_width - 1)) - 1))
     {
       const_op = 0, op1 = (const_int_rtx[64]);
       code = LT;
     }
   break;

 default:
   break;
 }



      equality_comparison_p = (code == EQ || code == NE);
      sign_bit_comparison_p = ((code == LT || code == GE) && const_op == 0);
      unsigned_comparison_p = (code == LTU || code == LEU || code == GTU
          || code == GEU);



      if (sign_bit_comparison_p
   && (mode_bitsize[(int) (mode)]) <= (8 * 8))
 op0 = force_to_mode (op0, mode,
        ((long long) 1
         << ((mode_bitsize[(int) (mode)]) - 1)),
        (rtx) 0, 0);





      switch (((enum rtx_code) (op0)->code))
 {
 case ZERO_EXTRACT:





   if (((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == CONST_INT
       && (((op0)->fld[1]).rtx) == (const_int_rtx[64 +1])
       && equality_comparison_p && const_op == 0
       && (i = exact_log2_wide ((unsigned long long) (((((((op0)->fld[0]).rtx))->fld[0]).rtwint)))) >= 0)
     {
       if (0)
  {
    enum machine_mode new_mode
      = mode_for_extraction (EP_extzv, 1);
    if (new_mode == MAX_MACHINE_MODE)
      i = ((target_flags & 0x02000000) ? 64 : 32) - 1 - i;
    else
      {
        mode = new_mode;
        i = ((mode_bitsize[(int) (mode)]) - 1 - i);
      }
  }

       op0 = (((op0)->fld[2]).rtx);
       op1 = gen_rtx_CONST_INT (VOIDmode, (long long) (i));
       const_op = i;


       code = reverse_condition (code);
       continue;
     }



 case SIGN_EXTRACT:
   tem = expand_compound_operation (op0);
   if (tem != op0)
     {
       op0 = tem;
       continue;
     }
   break;

 case NOT:

   if (equality_comparison_p
       && (tem = simplify_unary_operation (NOT, mode, op1, mode)) != 0)
     {
       op0 = (((op0)->fld[0]).rtx);
       op1 = tem;
       continue;
     }



   if (sign_bit_comparison_p)
     {
       op0 = (((op0)->fld[0]).rtx);
       code = (code == GE ? LT : GE);
       continue;
     }
   break;

 case NEG:

   if (equality_comparison_p
       && (tem = simplify_unary_operation (NEG, mode, op1, mode)) != 0)
     {
       op0 = (((op0)->fld[0]).rtx);
       op1 = tem;
       continue;
     }


   if (const_op != 0)
     break;




   if (sign_bit_comparison_p
       && (((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == ABS
    || (mode_width <= (8 * 8)
        && (nonzero_bits ((((op0)->fld[0]).rtx), mode)
     & ((long long) 1 << (mode_width - 1))) == 0)))
     {
       op0 = (((op0)->fld[0]).rtx);
       code = (code == LT ? NE : EQ);
       continue;
     }



   if (num_sign_bit_copies (op0, mode) >= 2)
     {
       op0 = (((op0)->fld[0]).rtx);
       code = swap_condition (code);
       continue;
     }
   break;

 case ROTATE:


   if (equality_comparison_p && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
       && (tem = simplify_binary_operation (ROTATERT, mode,
         op1, (((op0)->fld[1]).rtx))) != 0)
     {
       op0 = (((op0)->fld[0]).rtx);
       op1 = tem;
       continue;
     }




   if (const_op == 0 && sign_bit_comparison_p
       && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
       && mode_width <= (8 * 8))
     {
       op0 = simplify_and_const_int ((rtx) 0, mode, (((op0)->fld[0]).rtx),
         ((long long) 1
          << (mode_width - 1
       - ((((((op0)->fld[1]).rtx))->fld[0]).rtwint))));
       code = (code == LT ? NE : EQ);
       continue;
     }



 case ABS:

   if (const_op == 0 && equality_comparison_p)
     {
       op0 = (((op0)->fld[0]).rtx);
       continue;
     }
   break;

 case SIGN_EXTEND:




   if (! unsigned_comparison_p
       && ((mode_bitsize[(int) (((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))])
    <= (8 * 8))
       && ((unsigned long long) const_op
    < (((unsigned long long) 1
        << ((mode_bitsize[(int) (((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))]) - 1)))))
     {
       op0 = (((op0)->fld[0]).rtx);
       continue;
     }
   break;

 case SUBREG:
# 10476 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   if (mode_width <= (8 * 8)
       && subreg_lowpart_p (op0)
       && ((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == PLUS
       && ((enum rtx_code) (((((((op0)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
       && (((((((((op0)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint) < 0
       && (-(((((((((op0)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint)
    < (long long) (mode_mask_array[(int) (mode)] / 2))
       && (unsigned long long) const_op < mode_mask_array[(int) (mode)] / 2
       && (0 == (nonzero_bits (((((((op0)->fld[0]).rtx))->fld[0]).rtx),
          ((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))
   & ~mode_mask_array[(int) (mode)])
    || (num_sign_bit_copies (((((((op0)->fld[0]).rtx))->fld[0]).rtx),
        ((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))
        > ((mode_bitsize[(int) (((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))])
    - (mode_bitsize[(int) (mode)])))))
     {
       op0 = (((op0)->fld[0]).rtx);
       continue;
     }



   if (subreg_lowpart_p (op0)
       && (mode_bitsize[(int) (((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))]) < mode_width)
                        ;
   else
     break;



 case ZERO_EXTEND:
   if ((unsigned_comparison_p || equality_comparison_p)
       && ((mode_bitsize[(int) (((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))])
    <= (8 * 8))
       && ((unsigned long long) const_op
    < mode_mask_array[(int) (((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))]))
     {
       op0 = (((op0)->fld[0]).rtx);
       continue;
     }
   break;

 case PLUS:



   if (equality_comparison_p
       && 0 != (tem = simplify_binary_operation (MINUS, mode,
       op1, (((op0)->fld[1]).rtx))))
     {
       op0 = (((op0)->fld[0]).rtx);
       op1 = tem;
       continue;
     }


   if (const_op == 0 && (((op0)->fld[1]).rtx) == (const_int_rtx[64 -1])
       && ((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == ABS && sign_bit_comparison_p)
     {
       op0 = ((((((op0)->fld[0]).rtx))->fld[0]).rtx);
       code = (code == LT ? EQ : NE);
       continue;
     }
   break;

 case MINUS:
# 10551 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   if (equality_comparison_p
       && 0 != (tem = simplify_binary_operation (PLUS, mode,
       (((op0)->fld[1]).rtx), op1)))
     {
       op0 = (((op0)->fld[0]).rtx);
       op1 = tem;
       continue;
     }

   if (equality_comparison_p
       && 0 != (tem = simplify_binary_operation (MINUS, mode,
       (((op0)->fld[0]).rtx), op1)))
     {
       op0 = (((op0)->fld[1]).rtx);
       op1 = tem;
       continue;
     }



   if (sign_bit_comparison_p && ((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == ASHIFTRT
       && ((enum rtx_code) (((((((op0)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
       && (((((((((op0)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint) == mode_width - 1
       && rtx_equal_p (((((((op0)->fld[0]).rtx))->fld[0]).rtx), (((op0)->fld[1]).rtx)))
     {
       op0 = (((op0)->fld[1]).rtx);
       code = (code == GE ? LE : GT);
       continue;
     }
   break;

 case XOR:


   if (equality_comparison_p
       && 0 != (tem = simplify_binary_operation (XOR, mode,
       (((op0)->fld[1]).rtx), op1)))
     {
       op0 = (((op0)->fld[0]).rtx);
       op1 = tem;
       continue;
     }
   break;

 case EQ: case NE:
 case UNEQ: case LTGT:
 case LT: case LTU: case UNLT: case LE: case LEU: case UNLE:
 case GT: case GTU: case UNGT: case GE: case GEU: case UNGE:
        case UNORDERED: case ORDERED:


   if (const_op != 0



       || (mode_class[(int) (((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))]) == MODE_CC)
     break;


   if (((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == COMPARE)
     tem = ((((((op0)->fld[0]).rtx))->fld[0]).rtx), tem1 = ((((((op0)->fld[0]).rtx))->fld[1]).rtx);
   else
     tem = (((op0)->fld[0]).rtx), tem1 = (((op0)->fld[1]).rtx);



   if (code == NE || code == EQ
       || ((mode_bitsize[(int) (((enum machine_mode) (op0)->mode))]) <= (8 * 8)
    && (mode_class[(int) (((enum machine_mode) (op0)->mode))]) == MODE_INT
    && (1
        & (((long long) 1
     << ((mode_bitsize[(int) (((enum machine_mode) (op0)->mode))]) - 1))))
    && (code == LT || code == GE)))
     {
       enum rtx_code new_code;
       if (code == LT || code == NE)
  new_code = ((enum rtx_code) (op0)->code);
       else
  new_code = combine_reversed_comparison_code (op0);

       if (new_code != UNKNOWN)
  {
    code = new_code;
    op0 = tem;
    op1 = tem1;
    continue;
  }
     }
   break;

 case IOR:


   if (sign_bit_comparison_p && ((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == PLUS
       && ((((((op0)->fld[0]).rtx))->fld[1]).rtx) == (const_int_rtx[64 -1])
       && rtx_equal_p (((((((op0)->fld[0]).rtx))->fld[0]).rtx), (((op0)->fld[1]).rtx)))
     {
       op0 = (((op0)->fld[1]).rtx);
       code = (code == GE ? GT : LE);
       continue;
     }
   break;

 case AND:


   if (const_op == 0 && equality_comparison_p
       && ((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == ASHIFT
       && ((((((op0)->fld[0]).rtx))->fld[0]).rtx) == (const_int_rtx[64 +1]))
     {
       op0 = simplify_and_const_int
  (op0, mode, gen_rtx_fmt_ee (LSHIFTRT, (mode), ((((op0)->fld[1]).rtx)), (((((((op0)->fld[0]).rtx))->fld[1]).rtx))),


   (long long) 1);
       continue;
     }




   if (const_op == 0 && equality_comparison_p
       && mode_width <= (8 * 8)
       && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
       && ((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == LSHIFTRT
       && ((enum rtx_code) (((((((op0)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
       && (((((((((op0)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint) >= 0
       && (((((((((op0)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint) < (8 * 8))
     {
       mask = ((((((((op0)->fld[1]).rtx))->fld[0]).rtwint) & mode_mask_array[(int) (mode)])
        << (((((((((op0)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint));
       if ((~1 & mask) == 0
    && ((rtx_class[(int) (((enum rtx_code) (((((((op0)->fld[0]).rtx))->fld[0]).rtx))->code))]) == '<'
        || ((tem = get_last_value (((((((op0)->fld[0]).rtx))->fld[0]).rtx))) != 0
     && (rtx_class[(int) (((enum rtx_code) (tem)->code))]) == '<')))
  {
    op0 = ((((((op0)->fld[0]).rtx))->fld[0]).rtx);
    continue;
  }
     }




   if (equality_comparison_p
       && const_op == 0
       && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
       && mode_width <= (8 * 8)
       && ((((((((op0)->fld[1]).rtx))->fld[0]).rtwint) & mode_mask_array[(int) (mode)])
    == (unsigned long long) 1 << (mode_width - 1)))
     {
       op0 = (((op0)->fld[0]).rtx);
       code = (code == EQ ? GE : LT);
       continue;
     }





   if ((equality_comparison_p || unsigned_comparison_p)
       && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
       && (i = exact_log2_wide ((unsigned long long) ((((((((op0)->fld[1]).rtx))->fld[0]).rtwint) & mode_mask_array[(int) (mode)]) + 1))) >= 0


       && const_op >> i == 0
       && (tmode = mode_for_size (i, MODE_INT, 1)) != BLKmode)
     {
       op0 = gen_lowpart_for_combine (tmode, (((op0)->fld[0]).rtx));
       continue;
     }





   if (((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == SUBREG
       && (0






    || ((mode_width
         <= ((mode_bitsize[(int) (((enum machine_mode) (((((((op0)->fld[0]).rtx))->fld[0]).rtx))->mode))])))

        && subreg_lowpart_p ((((op0)->fld[0]).rtx))))







       && ((mode_size[(int) (((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))])
    <= (mode_size[(int) (((enum machine_mode) (((((((op0)->fld[0]).rtx))->fld[0]).rtx))->mode))]))

       && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
       && mode_width <= (8 * 8)
       && ((mode_bitsize[(int) (((enum machine_mode) (((((((op0)->fld[0]).rtx))->fld[0]).rtx))->mode))])
    <= (8 * 8))
       && (((((((op0)->fld[1]).rtx))->fld[0]).rtwint) & ~mask) == 0
       && 0 == (~mode_mask_array[(int) (((enum machine_mode) (((((((op0)->fld[0]).rtx))->fld[0]).rtx))->mode))]
         & ((((((op0)->fld[1]).rtx))->fld[0]).rtwint))
       && (unsigned long long) ((((((op0)->fld[1]).rtx))->fld[0]).rtwint) != mask
       && ((unsigned long long) ((((((op0)->fld[1]).rtx))->fld[0]).rtwint)
    != mode_mask_array[(int) (((enum machine_mode) (((((((op0)->fld[0]).rtx))->fld[0]).rtx))->mode))]))

     {
       op0
  = gen_lowpart_for_combine
    (mode,
     gen_binary (AND, ((enum machine_mode) (((((((op0)->fld[0]).rtx))->fld[0]).rtx))->mode),
          ((((((op0)->fld[0]).rtx))->fld[0]).rtx), (((op0)->fld[1]).rtx)));
       continue;
     }



   if (const_op == 0 && equality_comparison_p
       && (((op0)->fld[1]).rtx) == (const_int_rtx[64 +1])
       && ((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == LSHIFTRT
       && ((enum rtx_code) (((((((op0)->fld[0]).rtx))->fld[0]).rtx))->code) == NOT)
     {
       op0 = simplify_and_const_int
  (op0, mode,
   gen_rtx_fmt_ee (LSHIFTRT, (mode), ((((((((((op0)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx)), (((((((op0)->fld[0]).rtx))->fld[1]).rtx))),

   (long long) 1);
       code = (code == NE ? EQ : NE);
       continue;
     }
   break;

 case ASHIFT:





   if (((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
       && ((((((op0)->fld[1]).rtx))->fld[0]).rtwint) >= 0
       && ((((((((op0)->fld[1]).rtx))->fld[0]).rtwint) + ! equality_comparison_p)
    < (8 * 8))
       && ((const_op
     & (((long long) 1 << ((((((op0)->fld[1]).rtx))->fld[0]).rtwint)) - 1)) == 0)
       && mode_width <= (8 * 8)
       && (nonzero_bits ((((op0)->fld[0]).rtx), mode)
    & ~(mask >> (((((((op0)->fld[1]).rtx))->fld[0]).rtwint)
          + ! equality_comparison_p))) == 0)
     {


       unsigned long long temp = const_op & mode_mask_array[(int) (mode)];

       temp >>= ((((((op0)->fld[1]).rtx))->fld[0]).rtwint);
       op1 = gen_rtx_CONST_INT (VOIDmode, (long long) (trunc_int_for_mode (temp, mode)));
       op0 = (((op0)->fld[0]).rtx);
       continue;
     }



   if (sign_bit_comparison_p && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
       && mode_width <= (8 * 8))
     {
       op0 = simplify_and_const_int ((rtx) 0, mode, (((op0)->fld[0]).rtx),
         ((long long) 1
          << (mode_width - 1
       - ((((((op0)->fld[1]).rtx))->fld[0]).rtwint))));
       code = (code == LT ? NE : EQ);
       continue;
     }




   if (const_op == 0 && equality_comparison_p
       && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
       && ((((((op0)->fld[1]).rtx))->fld[0]).rtwint) == mode_width - 1)
     {
       op0 = simplify_and_const_int ((rtx) 0, mode, (((op0)->fld[0]).rtx),
         (long long) 1);
       continue;
     }
   break;

 case ASHIFTRT:


   if (equality_comparison_p && const_op == 0
       && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT)
     {
       op0 = simplify_shift_const ((rtx) 0, LSHIFTRT, mode,
       (((op0)->fld[0]).rtx),
       ((((((op0)->fld[1]).rtx))->fld[0]).rtwint));
       continue;
     }



   if (! unsigned_comparison_p
       && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
       && ((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == ASHIFT
       && (((op0)->fld[1]).rtx) == ((((((op0)->fld[0]).rtx))->fld[1]).rtx)
       && (tmode = mode_for_size (mode_width - ((((((op0)->fld[1]).rtx))->fld[0]).rtwint),
      MODE_INT, 1)) != BLKmode
       && (((unsigned long long) const_op
     + (mode_mask_array[(int) (tmode)] >> 1) + 1)
    <= mode_mask_array[(int) (tmode)]))
     {
       op0 = gen_lowpart_for_combine (tmode, ((((((op0)->fld[0]).rtx))->fld[0]).rtx));
       continue;
     }




   if (! unsigned_comparison_p
       && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
       && ((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == PLUS
       && ((enum rtx_code) (((((((op0)->fld[0]).rtx))->fld[1]).rtx))->code) == CONST_INT
       && ((enum rtx_code) (((((((op0)->fld[0]).rtx))->fld[0]).rtx))->code) == ASHIFT
       && (((op0)->fld[1]).rtx) == (((((((((op0)->fld[0]).rtx))->fld[0]).rtx))->fld[1]).rtx)
       && (tmode = mode_for_size (mode_width - ((((((op0)->fld[1]).rtx))->fld[0]).rtwint),
      MODE_INT, 1)) != BLKmode
       && (((unsigned long long) const_op
     + (mode_mask_array[(int) (tmode)] >> 1) + 1)
    <= mode_mask_array[(int) (tmode)]))
     {
       rtx inner = (((((((((op0)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtx);
       rtx add_const = ((((((op0)->fld[0]).rtx))->fld[1]).rtx);
       rtx new_const = gen_binary (ASHIFTRT, ((enum machine_mode) (op0)->mode), add_const,
       (((op0)->fld[1]).rtx));

       op0 = gen_binary (PLUS, tmode,
    gen_lowpart_for_combine (tmode, inner),
    new_const);
       continue;
     }


 case LSHIFTRT:




   if (((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
       && ((((((op0)->fld[1]).rtx))->fld[0]).rtwint) >= 0
       && ((((((op0)->fld[1]).rtx))->fld[0]).rtwint) < (8 * 8)
       && mode_width <= (8 * 8)
       && (nonzero_bits ((((op0)->fld[0]).rtx), mode)
    & (((long long) 1 << ((((((op0)->fld[1]).rtx))->fld[0]).rtwint)) - 1)) == 0
       && (((unsigned long long) const_op
     + (((enum rtx_code) (op0)->code) != LSHIFTRT
        ? ((mode_mask_array[(int) (mode)] >> ((((((op0)->fld[1]).rtx))->fld[0]).rtwint) >> 1)
    + 1)
        : 0))
    <= mode_mask_array[(int) (mode)] >> ((((((op0)->fld[1]).rtx))->fld[0]).rtwint)))
     {


       if (((enum rtx_code) (op0)->code) == LSHIFTRT)
  code = unsigned_condition (code);

       const_op <<= ((((((op0)->fld[1]).rtx))->fld[0]).rtwint);
       op1 = gen_rtx_CONST_INT (VOIDmode, (long long) (const_op));
       op0 = (((op0)->fld[0]).rtx);
       continue;
     }



   if (const_op == 0
       && (equality_comparison_p || sign_bit_comparison_p)
       && ((enum rtx_code) ((((op0)->fld[1]).rtx))->code) == CONST_INT
       && ((((((op0)->fld[1]).rtx))->fld[0]).rtwint) == mode_width - 1)
     {
       op0 = (((op0)->fld[0]).rtx);
       code = (code == NE || code == GT ? LT : GE);
       continue;
     }
   break;

 default:
   break;
 }

      break;
    }
# 10965 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  op0 = make_compound_operation (op0, op1 == (const_int_rtx[64]) ? COMPARE : SET);
  op1 = make_compound_operation (op1, SET);

  if (((enum rtx_code) (op0)->code) == SUBREG && subreg_lowpart_p (op0)


      && ((enum rtx_code) ((((op0)->fld[0]).rtx))->code) == REG
      && (mode_class[(int) (((enum machine_mode) (op0)->mode))]) == MODE_INT
      && (mode_class[(int) (((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))]) == MODE_INT
      && (code == NE || code == EQ))
    {
      if ((mode_size[(int) (((enum machine_mode) (op0)->mode))])
   > (mode_size[(int) (((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))]))
 {
   op0 = (((op0)->fld[0]).rtx);
   op1 = gen_lowpart_for_combine (((enum machine_mode) (op0)->mode), op1);
 }
      else if (((mode_bitsize[(int) (((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))])
  <= (8 * 8))
        && (nonzero_bits ((((op0)->fld[0]).rtx),
     ((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))
     & ~mode_mask_array[(int) (((enum machine_mode) (op0)->mode))]) == 0)
 {
   tem = gen_lowpart_for_combine (((enum machine_mode) ((((op0)->fld[0]).rtx))->mode), op1);

   if ((nonzero_bits (tem, ((enum machine_mode) ((((op0)->fld[0]).rtx))->mode))
        & ~mode_mask_array[(int) (((enum machine_mode) (op0)->mode))]) == 0)
     op0 = (((op0)->fld[0]).rtx), op1 = tem;
 }
    }







  mode = ((enum machine_mode) (op0)->mode);
  if (mode != VOIDmode && (mode_class[(int) (mode)]) == MODE_INT
      && (mode_size[(int) (mode)]) < ((target_flags & 0x02000000) ? 8 : 4)
      && ! have_insn_for (COMPARE, mode))
    for (tmode = ((enum machine_mode)mode_wider_mode[(int) (mode)]);
  (tmode != VOIDmode
   && (mode_bitsize[(int) (tmode)]) <= (8 * 8));
  tmode = ((enum machine_mode)mode_wider_mode[(int) (tmode)]))
      if (have_insn_for (COMPARE, tmode))
 {
   int zero_extended;





   zero_extended = ((code == EQ || code == NE
       || code == GEU || code == GTU
       || code == LEU || code == LTU)
      && (nonzero_bits (op0, tmode)
          & ~mode_mask_array[(int) (mode)]) == 0
      && ((((enum rtx_code) (op1)->code) == CONST_INT
    || (nonzero_bits (op1, tmode)
        & ~mode_mask_array[(int) (mode)]) == 0)));

   if (zero_extended
       || ((num_sign_bit_copies (op0, tmode)
     > (mode_bitsize[(int) (tmode)]) - (mode_bitsize[(int) (mode)]))
    && (num_sign_bit_copies (op1, tmode)
        > (mode_bitsize[(int) (tmode)]) - (mode_bitsize[(int) (mode)]))))
     {


       if (((enum rtx_code) (op0)->code) == AND
    && !have_insn_for (AND, mode))
  op0 = gen_binary (AND, tmode,
      gen_lowpart_for_combine (tmode,
          (((op0)->fld[0]).rtx)),
      gen_lowpart_for_combine (tmode,
          (((op0)->fld[1]).rtx)));

       op0 = gen_lowpart_for_combine (tmode, op0);
       if (zero_extended && ((enum rtx_code) (op1)->code) == CONST_INT)
  op1 = gen_rtx_CONST_INT (VOIDmode, (long long) ((((op1)->fld[0]).rtwint) & mode_mask_array[(int) (mode)]));
       op1 = gen_lowpart_for_combine (tmode, op1);
       break;
     }




   if (op1 == (const_int_rtx[64]) && (code == LT || code == GE)
       && (mode_bitsize[(int) (mode)]) <= (8 * 8))
     {
       op0 = gen_binary (AND, tmode,
    gen_lowpart_for_combine (tmode, op0),
    gen_rtx_CONST_INT (VOIDmode, (long long) ((long long) 1 << ((mode_bitsize[(int) (mode)]) - 1))));

       code = (code == LT) ? NE : EQ;
       break;
     }
 }







  *pop0 = op0;
  *pop1 = op1;

  return code;
}



static enum rtx_code
combine_reversed_comparison_code (exp)
     rtx exp;
{
  enum rtx_code code1 = reversed_comparison_code (exp, ((void*)0));
  rtx x;

  if (code1 != UNKNOWN
      || (mode_class[(int) (((enum machine_mode) ((((exp)->fld[0]).rtx))->mode))]) != MODE_CC)
    return code1;


  x = get_last_value ((((exp)->fld[0]).rtx));
  if (!x || ((enum rtx_code) (x)->code) != COMPARE)
    return UNKNOWN;
  return reversed_comparison_code_parts (((enum rtx_code) (exp)->code),
      (((x)->fld[0]).rtx), (((x)->fld[1]).rtx), ((void*)0));
}


static rtx
reversed_comparison (exp, mode, op0, op1)
     rtx exp, op0, op1;
     enum machine_mode mode;
{
  enum rtx_code reversed_code = combine_reversed_comparison_code (exp);
  if (reversed_code == UNKNOWN)
    return (rtx) 0;
  else
    return gen_binary (reversed_code, mode, op0, op1);
}





static void
update_table_tick (x)
     rtx x;
{
  enum rtx_code code = ((enum rtx_code) (x)->code);
  const char *fmt = (rtx_format[(int) (code)]);
  int i;

  if (code == REG)
    {
      unsigned int regno = (((x)->fld[0]).rtuint);
      unsigned int endregno
 = regno + (regno < 53
     ? (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (x)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (x)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (x)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4)))) : 1);
      unsigned int r;

      for (r = regno; r < endregno; r++)
 reg_last_set_table_tick[r] = label_tick;

      return;
    }

  for (i = (rtx_length[(int) (code)]) - 1; i >= 0; i--)


    if (fmt[i] == 'e')
      update_table_tick ((((x)->fld[i]).rtx));
}






static void
record_value_for_reg (reg, insn, value)
     rtx reg;
     rtx insn;
     rtx value;
{
  unsigned int regno = (((reg)->fld[0]).rtuint);
  unsigned int endregno
    = regno + (regno < 53
        ? (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (reg)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (reg)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (reg)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (reg)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (reg)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4)))) : 1);
  unsigned int i;



  if (value && insn && reg_overlap_mentioned_p (reg, value))
    {
      rtx tem;



      subst_low_cuid = ((((insn)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (insn) : uid_cuid[(((insn)->fld[0]).rtint)]);
      tem = get_last_value (reg);





      if (tem)
 {
   if (((rtx_class[(int) (((enum rtx_code) (tem)->code))]) == '2'
        || (rtx_class[(int) (((enum rtx_code) (tem)->code))]) == 'c')
       && ((enum rtx_code) ((((tem)->fld[0]).rtx))->code) == CLOBBER
       && ((enum rtx_code) ((((tem)->fld[1]).rtx))->code) == CLOBBER)
     tem = (((tem)->fld[0]).rtx);

   value = replace_rtx (copy_rtx (value), reg, tem);
 }
    }





  for (i = regno; i < endregno; i++)
    {
      if (insn)
 reg_last_set[i] = insn;

      reg_last_set_value[i] = 0;
      reg_last_set_mode[i] = 0;
      reg_last_set_nonzero_bits[i] = 0;
      reg_last_set_sign_bit_copies[i] = 0;
      reg_last_death[i] = 0;
    }


  if (value)
    update_table_tick (value);
# 11215 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  for (i = regno; i < endregno; i++)
    {
      reg_last_set_label[i] = label_tick;
      if (value && reg_last_set_table_tick[i] == label_tick)
 reg_last_set_invalid[i] = 1;
      else
 reg_last_set_invalid[i] = 0;
    }




  if (value && ! get_last_value_validate (&value, insn,
       reg_last_set_label[regno], 0))
    {
      value = copy_rtx (value);
      if (! get_last_value_validate (&value, insn,
         reg_last_set_label[regno], 1))
 value = 0;
    }




  reg_last_set_value[regno] = value;

  if (value)
    {
      enum machine_mode mode = ((enum machine_mode) (reg)->mode);
      subst_low_cuid = ((((insn)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (insn) : uid_cuid[(((insn)->fld[0]).rtint)]);
      reg_last_set_mode[regno] = mode;
      if ((mode_class[(int) (mode)]) == MODE_INT
   && (mode_bitsize[(int) (mode)]) <= (8 * 8))
 mode = nonzero_bits_mode;
      reg_last_set_nonzero_bits[regno] = nonzero_bits (value, mode);
      reg_last_set_sign_bit_copies[regno]
 = num_sign_bit_copies (value, ((enum machine_mode) (reg)->mode));
    }
}





static void
record_dead_and_set_regs_1 (dest, setter, data)
     rtx dest, setter;
     void *data;
{
  rtx record_dead_insn = (rtx) data;

  if (((enum rtx_code) (dest)->code) == SUBREG)
    dest = (((dest)->fld[0]).rtx);

  if (((enum rtx_code) (dest)->code) == REG)
    {



      if (((enum rtx_code) (setter)->code) == SET && dest == (((setter)->fld[0]).rtx))
 record_value_for_reg (dest, record_dead_insn, (((setter)->fld[1]).rtx));
      else if (((enum rtx_code) (setter)->code) == SET
        && ((enum rtx_code) ((((setter)->fld[0]).rtx))->code) == SUBREG
        && ((((((setter)->fld[0]).rtx))->fld[0]).rtx) == dest
        && (mode_bitsize[(int) (((enum machine_mode) (dest)->mode))]) <= ((target_flags & 0x02000000) ? 64 : 32)
        && subreg_lowpart_p ((((setter)->fld[0]).rtx)))
 record_value_for_reg (dest, record_dead_insn,
         gen_lowpart_for_combine (((enum machine_mode) (dest)->mode),
             (((setter)->fld[1]).rtx)));
      else
 record_value_for_reg (dest, record_dead_insn, (rtx) 0);
    }
  else if (((enum rtx_code) (dest)->code) == MEM

    && ! push_operand (dest, ((enum machine_mode) (dest)->mode)))
    mem_last_set = ((((record_dead_insn)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (record_dead_insn) : uid_cuid[(((record_dead_insn)->fld[0]).rtint)]);
}
# 11303 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static void
record_dead_and_set_regs (insn)
     rtx insn;
{
  rtx link;
  unsigned int i;

  for (link = (((insn)->fld[6]).rtx); link; link = (((link)->fld[1]).rtx))
    {
      if (((enum reg_note) ((enum machine_mode) (link)->mode)) == REG_DEAD
   && ((enum rtx_code) ((((link)->fld[0]).rtx))->code) == REG)
 {
   unsigned int regno = ((((((link)->fld[0]).rtx))->fld[0]).rtuint);
   unsigned int endregno
     = regno + (regno < 53
         ? (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) ((((link)->fld[0]).rtx))->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) ((((link)->fld[0]).rtx))->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) ((((link)->fld[0]).rtx))->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) ((((link)->fld[0]).rtx))->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) ((((link)->fld[0]).rtx))->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))))
         : 1);

   for (i = regno; i < endregno; i++)
     reg_last_death[i] = insn;
 }
      else if (((enum reg_note) ((enum machine_mode) (link)->mode)) == REG_INC)
 record_value_for_reg ((((link)->fld[0]).rtx), insn, (rtx) 0);
    }

  if (((enum rtx_code) (insn)->code) == CALL_INSN)
    {
      for (i = 0; i < 53; i++)
 if (((regs_invalidated_by_call) & (((HARD_REG_ELT_TYPE) (1)) << (i))))
   {
     reg_last_set_value[i] = 0;
     reg_last_set_mode[i] = 0;
     reg_last_set_nonzero_bits[i] = 0;
     reg_last_set_sign_bit_copies[i] = 0;
     reg_last_death[i] = 0;
   }

      last_call_cuid = mem_last_set = ((((insn)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (insn) : uid_cuid[(((insn)->fld[0]).rtint)]);






      return;
    }

  note_stores ((((insn)->fld[3]).rtx), record_dead_and_set_regs_1, insn);
}
# 11362 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static void
record_promoted_value (insn, subreg)
     rtx insn;
     rtx subreg;
{
  rtx links, set;
  unsigned int regno = ((((((subreg)->fld[0]).rtx))->fld[0]).rtuint);
  enum machine_mode mode = ((enum machine_mode) (subreg)->mode);

  if ((mode_bitsize[(int) (mode)]) > (8 * 8))
    return;

  for (links = (((insn)->fld[5]).rtx); links;)
    {
      insn = (((links)->fld[0]).rtx);
      set = (((rtx_class[(int) (((enum rtx_code) (insn)->code))]) == 'i') ? (((enum rtx_code) ((((insn)->fld[3]).rtx))->code) == SET ? (((insn)->fld[3]).rtx) : single_set_2 (insn, (((insn)->fld[3]).rtx))) : (rtx) 0);

      if (! set || ((enum rtx_code) ((((set)->fld[0]).rtx))->code) != REG
   || ((((((set)->fld[0]).rtx))->fld[0]).rtuint) != regno
   || ((enum machine_mode) ((((set)->fld[0]).rtx))->mode) != ((enum machine_mode) ((((subreg)->fld[0]).rtx))->mode))
 {
   links = (((links)->fld[1]).rtx);
   continue;
 }

      if (reg_last_set[regno] == insn)
 {
   if (((subreg)->unchanging))
     reg_last_set_nonzero_bits[regno] &= mode_mask_array[(int) (mode)];
 }

      if (((enum rtx_code) ((((set)->fld[1]).rtx))->code) == REG)
 {
   regno = ((((((set)->fld[1]).rtx))->fld[0]).rtuint);
   links = (((insn)->fld[5]).rtx);
 }
      else
 break;
    }
}




static void
check_promoted_subreg (insn, x)
     rtx insn;
     rtx x;
{
  if (((enum rtx_code) (x)->code) == SUBREG && ((x)->in_struct)
      && ((enum rtx_code) ((((x)->fld[0]).rtx))->code) == REG)
    record_promoted_value (insn, x);
  else
    {
      const char *format = (rtx_format[(int) (((enum rtx_code) (x)->code))]);
      int i, j;

      for (i = 0; i < (rtx_length[(int) (((enum rtx_code) (x)->code))]); i++)
 switch (format[i])
   {
   case 'e':
     check_promoted_subreg (insn, (((x)->fld[i]).rtx));
     break;
   case 'V':
   case 'E':
     if ((((x)->fld[i]).rtvec) != 0)
       for (j = 0; j < (((((x)->fld[i]).rtvec))->num_elem); j++)
  check_promoted_subreg (insn, (((((x)->fld[i]).rtvec))->elem[j]));
     break;
   }
    }
}
# 11445 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static int
get_last_value_validate (loc, insn, tick, replace)
     rtx *loc;
     rtx insn;
     int tick;
     int replace;
{
  rtx x = *loc;
  const char *fmt = (rtx_format[(int) (((enum rtx_code) (x)->code))]);
  int len = (rtx_length[(int) (((enum rtx_code) (x)->code))]);
  int i;

  if (((enum rtx_code) (x)->code) == REG)
    {
      unsigned int regno = (((x)->fld[0]).rtuint);
      unsigned int endregno
 = regno + (regno < 53
     ? (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (x)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (x)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (x)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4)))) : 1);
      unsigned int j;

      for (j = regno; j < endregno; j++)
 if (reg_last_set_invalid[j]


     || (! (regno >= 53
     && (((reg_n_info)->data.reg[regno])->sets) == 1
     && (! bitmap_bit_p ((((basic_block_info)->data.bb[(0)]))->global_live_at_start, regno)))

  && reg_last_set_label[j] > tick))
   {
     if (replace)
       *loc = gen_rtx_fmt_e (CLOBBER, (((enum machine_mode) (x)->mode)), ((const_int_rtx[64])));
     return replace;
   }

      return 1;
    }



  else if (((enum rtx_code) (x)->code) == MEM && ! ((x)->unchanging)
    && ((((insn)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (insn) : uid_cuid[(((insn)->fld[0]).rtint)]) <= mem_last_set)
    {
      if (replace)
 *loc = gen_rtx_fmt_e (CLOBBER, (((enum machine_mode) (x)->mode)), ((const_int_rtx[64])));
      return replace;
    }

  for (i = 0; i < len; i++)
    if ((fmt[i] == 'e'
  && get_last_value_validate (&(((x)->fld[i]).rtx), insn, tick, replace) == 0)

 || fmt[i] == 'E')
      return 0;


  return 1;
}





static rtx
get_last_value (x)
     rtx x;
{
  unsigned int regno;
  rtx value;




  if (((enum rtx_code) (x)->code) == SUBREG
      && subreg_lowpart_p (x)
      && ((mode_size[(int) (((enum machine_mode) (x)->mode))])
   <= (mode_size[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))]))
      && (value = get_last_value ((((x)->fld[0]).rtx))) != 0)
    return gen_lowpart_for_combine (((enum machine_mode) (x)->mode), value);

  if (((enum rtx_code) (x)->code) != REG)
    return 0;

  regno = (((x)->fld[0]).rtuint);
  value = reg_last_set_value[regno];
# 11541 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
  if (value == 0
      || (reg_last_set_label[regno] != label_tick
   && (regno < 53
       || (((reg_n_info)->data.reg[regno])->sets) != 1
       || (bitmap_bit_p ((((basic_block_info)->data.bb[(0)]))->global_live_at_start, regno)))))

    return 0;



  if (((((reg_last_set[regno])->fld[0]).rtint) > max_uid_cuid ? insn_cuid (reg_last_set[regno]) : uid_cuid[(((reg_last_set[regno])->fld[0]).rtint)]) >= subst_low_cuid)
    return 0;


  if (get_last_value_validate (&value, reg_last_set[regno],
          reg_last_set_label[regno], 0))
    return value;




  value = copy_rtx (value);
  if (get_last_value_validate (&value, reg_last_set[regno],
          reg_last_set_label[regno], 1))
    return value;

  return 0;
}




static int
use_crosses_set_p (x, from_cuid)
     rtx x;
     int from_cuid;
{
  const char *fmt;
  int i;
  enum rtx_code code = ((enum rtx_code) (x)->code);

  if (code == REG)
    {
      unsigned int regno = (((x)->fld[0]).rtuint);
      unsigned endreg = regno + (regno < 53
     ? (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (x)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (x)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (x)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4)))) : 1);




      if (regno == 7 && ((!(target_flags & 0x00000800)) && !(target_flags & 0x00001000)))
 return 1;

      for (; regno < endreg; regno++)
 if (reg_last_set[regno]
     && ((((reg_last_set[regno])->fld[0]).rtint) > max_uid_cuid ? insn_cuid (reg_last_set[regno]) : uid_cuid[(((reg_last_set[regno])->fld[0]).rtint)]) > from_cuid)
   return 1;
      return 0;
    }

  if (code == MEM && mem_last_set > from_cuid)
    return 1;

  fmt = (rtx_format[(int) (code)]);

  for (i = (rtx_length[(int) (code)]) - 1; i >= 0; i--)
    {
      if (fmt[i] == 'E')
 {
   int j;
   for (j = (((((x)->fld[i]).rtvec))->num_elem) - 1; j >= 0; j--)
     if (use_crosses_set_p ((((((x)->fld[i]).rtvec))->elem[j]), from_cuid))
       return 1;
 }
      else if (fmt[i] == 'e'
        && use_crosses_set_p ((((x)->fld[i]).rtx), from_cuid))
 return 1;
    }
  return 0;
}




static unsigned int reg_dead_regno, reg_dead_endregno;
static int reg_dead_flag;






static void
reg_dead_at_p_1 (dest, x, data)
     rtx dest;
     rtx x;
     void *data __attribute__ ((__unused__));
{
  unsigned int regno, endregno;

  if (((enum rtx_code) (dest)->code) != REG)
    return;

  regno = (((dest)->fld[0]).rtuint);
  endregno = regno + (regno < 53
        ? (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (dest)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (dest)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (dest)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (dest)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (dest)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4)))) : 1);

  if (reg_dead_endregno > regno && reg_dead_regno < endregno)
    reg_dead_flag = (((enum rtx_code) (x)->code) == CLOBBER) ? 1 : -1;
}
# 11660 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static int
reg_dead_at_p (reg, insn)
     rtx reg;
     rtx insn;
{
  int block;
  unsigned int i;


  reg_dead_regno = (((reg)->fld[0]).rtuint);
  reg_dead_endregno = reg_dead_regno + (reg_dead_regno < 53
     ? (((reg_dead_regno) >= 8 && (reg_dead_regno) <= (8 + 7)) || (((reg_dead_regno) >= (20 + 1) && (reg_dead_regno) <= ((20 + 1) + 7)) || ((reg_dead_regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (reg_dead_regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((reg_dead_regno) >= (((20 + 1) + 7) + 1) && (reg_dead_regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (reg)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (reg)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (reg)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (reg)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (reg)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))))

     : 1);

  reg_dead_flag = 0;


  if (reg_dead_regno < 53)
    {
      for (i = reg_dead_regno; i < reg_dead_endregno; i++)
 if (((newpat_used_regs) & (((HARD_REG_ELT_TYPE) (1)) << (i))))
   return 0;
    }



  for (; insn && ((enum rtx_code) (insn)->code) != CODE_LABEL && ((enum rtx_code) (insn)->code) != BARRIER;
       insn = prev_nonnote_insn (insn))
    {
      note_stores ((((insn)->fld[3]).rtx), reg_dead_at_p_1, ((void*)0));
      if (reg_dead_flag)
 return reg_dead_flag == 1 ? 1 : 0;

      if (find_regno_note (insn, REG_DEAD, reg_dead_regno))
 return 1;
    }


  if (insn == 0)
    block = 0;
  else
    {
      for (block = 0; block < n_basic_blocks; block++)
 if (insn == ((((basic_block_info)->data.bb[(block)]))->head))
   break;

      if (block == n_basic_blocks)
 return 0;
    }

  for (i = reg_dead_regno; i < reg_dead_endregno; i++)
    if (bitmap_bit_p ((((basic_block_info)->data.bb[(block)]))->global_live_at_start, i))
      return 0;

  return 1;
}




static void
mark_used_regs_combine (x)
     rtx x;
{
  enum rtx_code code = ((enum rtx_code) (x)->code);
  unsigned int regno;
  int i;

  switch (code)
    {
    case LABEL_REF:
    case SYMBOL_REF:
    case CONST_INT:
    case CONST:
    case CONST_DOUBLE:
    case CONST_VECTOR:
    case PC:
    case ADDR_VEC:
    case ADDR_DIFF_VEC:
    case ASM_INPUT:





      return;

    case CLOBBER:


      if (((enum rtx_code) ((((x)->fld[0]).rtx))->code) == MEM)
 mark_used_regs_combine (((((((x)->fld[0]).rtx))->fld[0]).rtx));
      return;

    case REG:
      regno = (((x)->fld[0]).rtuint);


      if (regno < 53)
 {
   unsigned int endregno, r;


   if (regno == 7

       || regno == 6


       || (regno == 16 && fixed_regs[regno])

       || regno == 20)
     return;

   endregno = regno + (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (x)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (x)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (x)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));
   for (r = regno; r < endregno; r++)
     ((newpat_used_regs) |= ((HARD_REG_ELT_TYPE) (1)) << (r));
 }
      return;

    case SET:
      {


 rtx testreg = (((x)->fld[0]).rtx);

 while (((enum rtx_code) (testreg)->code) == SUBREG
        || ((enum rtx_code) (testreg)->code) == ZERO_EXTRACT
        || ((enum rtx_code) (testreg)->code) == SIGN_EXTRACT
        || ((enum rtx_code) (testreg)->code) == STRICT_LOW_PART)
   testreg = (((testreg)->fld[0]).rtx);

 if (((enum rtx_code) (testreg)->code) == MEM)
   mark_used_regs_combine ((((testreg)->fld[0]).rtx));

 mark_used_regs_combine ((((x)->fld[1]).rtx));
      }
      return;

    default:
      break;
    }



  {
    const char *fmt = (rtx_format[(int) (code)]);

    for (i = (rtx_length[(int) (code)]) - 1; i >= 0; i--)
      {
 if (fmt[i] == 'e')
   mark_used_regs_combine ((((x)->fld[i]).rtx));
 else if (fmt[i] == 'E')
   {
     int j;

     for (j = 0; j < (((((x)->fld[i]).rtvec))->num_elem); j++)
       mark_used_regs_combine ((((((x)->fld[i]).rtvec))->elem[j]));
   }
      }
  }
}





rtx
remove_death (regno, insn)
     unsigned int regno;
     rtx insn;
{
  rtx note = find_regno_note (insn, REG_DEAD, regno);

  if (note)
    {
      (((reg_n_info)->data.reg[regno])->deaths)--;
      remove_note (insn, note);
    }

  return note;
}
# 11853 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static void
move_deaths (x, maybe_kill_insn, from_cuid, to_insn, pnotes)
     rtx x;
     rtx maybe_kill_insn;
     int from_cuid;
     rtx to_insn;
     rtx *pnotes;
{
  const char *fmt;
  int len, i;
  enum rtx_code code = ((enum rtx_code) (x)->code);

  if (code == REG)
    {
      unsigned int regno = (((x)->fld[0]).rtuint);
      rtx where_dead = reg_last_death[regno];
      rtx before_dead, after_dead;


      if (maybe_kill_insn && reg_set_p (x, maybe_kill_insn)
   && ! reg_referenced_p (x, maybe_kill_insn))
 return;



      before_dead = where_dead;
      while (before_dead && (((before_dead)->fld[0]).rtint) > max_uid_cuid)
 before_dead = (((before_dead)->fld[1]).rtx);

      after_dead = where_dead;
      while (after_dead && (((after_dead)->fld[0]).rtint) > max_uid_cuid)
 after_dead = (((after_dead)->fld[2]).rtx);

      if (before_dead && after_dead
   && ((((before_dead)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (before_dead) : uid_cuid[(((before_dead)->fld[0]).rtint)]) >= from_cuid
   && (((((after_dead)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (after_dead) : uid_cuid[(((after_dead)->fld[0]).rtint)]) < ((((to_insn)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (to_insn) : uid_cuid[(((to_insn)->fld[0]).rtint)])
       || (where_dead != after_dead
    && ((((after_dead)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (after_dead) : uid_cuid[(((after_dead)->fld[0]).rtint)]) == ((((to_insn)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (to_insn) : uid_cuid[(((to_insn)->fld[0]).rtint)]))))
 {
   rtx note = remove_death (regno, where_dead);
# 11903 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   if (note != 0 && regno < 53
       && ((mode_size[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))])
    > (mode_size[(int) (((enum machine_mode) (x)->mode))])))
     {
       unsigned int deadregno = ((((((note)->fld[0]).rtx))->fld[0]).rtuint);
       unsigned int deadend
  = (deadregno + (((deadregno) >= 8 && (deadregno) <= (8 + 7)) || (((deadregno) >= (20 + 1) && (deadregno) <= ((20 + 1) + 7)) || ((deadregno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (deadregno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((deadregno) >= (((20 + 1) + 7) + 1) && (deadregno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) ((((note)->fld[0]).rtx))->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) ((((note)->fld[0]).rtx))->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4)))));

       unsigned int ourend
  = regno + (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (x)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (x)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (x)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));
       unsigned int i;

       for (i = deadregno; i < deadend; i++)
  if (i < regno || i >= ourend)
    (((where_dead)->fld[6]).rtx)
      = gen_rtx_fmt_ee (EXPR_LIST, (REG_DEAD), (gen_rtx_REG (reg_raw_mode[i], i)), ((((where_dead)->fld[6]).rtx)));


     }






   else if ((note == 0
      || (note != 0
   && ((mode_size[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))])
       < (mode_size[(int) (((enum machine_mode) (x)->mode))]))))
     && regno < 53
     && (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (x)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (x)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (x)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4)))) > 1)
     {
       unsigned int ourend
  = regno + (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (x)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (x)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (x)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));
       unsigned int i, offset;
       rtx oldnotes = 0;

       if (note)
  offset = (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) ((((note)->fld[0]).rtx))->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) ((((note)->fld[0]).rtx))->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));
       else
  offset = 1;

       for (i = regno + offset; i < ourend; i++)
  move_deaths (gen_rtx_REG (reg_raw_mode[i], i),
        maybe_kill_insn, from_cuid, to_insn, &oldnotes);
     }

   if (note != 0 && ((enum machine_mode) ((((note)->fld[0]).rtx))->mode) == ((enum machine_mode) (x)->mode))
     {
       (((note)->fld[1]).rtx) = *pnotes;
       *pnotes = note;
     }
   else
     *pnotes = gen_rtx_fmt_ee (EXPR_LIST, (REG_DEAD), (x), (*pnotes));

   (((reg_n_info)->data.reg[regno])->deaths)++;
 }

      return;
    }

  else if (((enum rtx_code) (x)->code) == SET)
    {
      rtx dest = (((x)->fld[0]).rtx);

      move_deaths ((((x)->fld[1]).rtx), maybe_kill_insn, from_cuid, to_insn, pnotes);







      if (((enum rtx_code) (dest)->code) == ZERO_EXTRACT
   || ((enum rtx_code) (dest)->code) == STRICT_LOW_PART
   || (((enum rtx_code) (dest)->code) == SUBREG
       && ((((mode_size[(int) (((enum machine_mode) (dest)->mode))])
      + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))
    == (((mode_size[(int) (((enum machine_mode) ((((dest)->fld[0]).rtx))->mode))])
         + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4)))))
 {
   move_deaths (dest, maybe_kill_insn, from_cuid, to_insn, pnotes);
   return;
 }



      if (((enum rtx_code) (dest)->code) == SUBREG)
 dest = (((dest)->fld[0]).rtx);





      if (((enum rtx_code) (dest)->code) == MEM)
 move_deaths ((((dest)->fld[0]).rtx), maybe_kill_insn, from_cuid,
       to_insn, pnotes);
      return;
    }

  else if (((enum rtx_code) (x)->code) == CLOBBER)
    return;

  len = (rtx_length[(int) (code)]);
  fmt = (rtx_format[(int) (code)]);

  for (i = 0; i < len; i++)
    {
      if (fmt[i] == 'E')
 {
   int j;
   for (j = (((((x)->fld[i]).rtvec))->num_elem) - 1; j >= 0; j--)
     move_deaths ((((((x)->fld[i]).rtvec))->elem[j]), maybe_kill_insn, from_cuid,
    to_insn, pnotes);
 }
      else if (fmt[i] == 'e')
 move_deaths ((((x)->fld[i]).rtx), maybe_kill_insn, from_cuid, to_insn, pnotes);
    }
}




static int
reg_bitfield_target_p (x, body)
     rtx x;
     rtx body;
{
  int i;

  if (((enum rtx_code) (body)->code) == SET)
    {
      rtx dest = (((body)->fld[0]).rtx);
      rtx target;
      unsigned int regno, tregno, endregno, endtregno;

      if (((enum rtx_code) (dest)->code) == ZERO_EXTRACT)
 target = (((dest)->fld[0]).rtx);
      else if (((enum rtx_code) (dest)->code) == STRICT_LOW_PART)
 target = ((((((dest)->fld[0]).rtx))->fld[0]).rtx);
      else
 return 0;

      if (((enum rtx_code) (target)->code) == SUBREG)
 target = (((target)->fld[0]).rtx);

      if (((enum rtx_code) (target)->code) != REG)
 return 0;

      tregno = (((target)->fld[0]).rtuint), regno = (((x)->fld[0]).rtuint);
      if (tregno >= 53 || regno >= 53)
 return target == x;

      endtregno = tregno + (((tregno) >= 8 && (tregno) <= (8 + 7)) || (((tregno) >= (20 + 1) && (tregno) <= ((20 + 1) + 7)) || ((tregno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (tregno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((tregno) >= (((20 + 1) + 7) + 1) && (tregno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (target)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (target)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (target)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (target)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (target)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));
      endregno = regno + (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) (x)->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) (x)->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) (x)->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) (x)->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));

      return endregno > tregno && regno < endtregno;
    }

  else if (((enum rtx_code) (body)->code) == PARALLEL)
    for (i = (((((body)->fld[0]).rtvec))->num_elem) - 1; i >= 0; i--)
      if (reg_bitfield_target_p (x, (((((body)->fld[0]).rtvec))->elem[i])))
 return 1;

  return 0;
}
# 12081 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
static void
distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
     rtx notes;
     rtx from_insn;
     rtx i3, i2;
     rtx elim_i2, elim_i1;
{
  rtx note, next_note;
  rtx tem;

  for (note = notes; note; note = next_note)
    {
      rtx place = 0, place2 = 0;



      if ((((note)->fld[0]).rtx) && ((enum rtx_code) ((((note)->fld[0]).rtx))->code) == REG
   && ((((((note)->fld[0]).rtx))->fld[0]).rtuint) >= 53)
 (((note)->fld[0]).rtx) = (cfun->emit->x_regno_reg_rtx)[((((((note)->fld[0]).rtx))->fld[0]).rtuint)];

      next_note = (((note)->fld[1]).rtx);
      switch (((enum reg_note) ((enum machine_mode) (note)->mode)))
 {
 case REG_BR_PROB:
 case REG_BR_PRED:
 case REG_EXEC_COUNT:



   place = i3;
   break;

 case REG_VTABLE_REF:


   place = i3;
   break;

 case REG_NON_LOCAL_GOTO:
   if (((enum rtx_code) (i3)->code) == JUMP_INSN)
     place = i3;
   else if (i2 && ((enum rtx_code) (i2)->code) == JUMP_INSN)
     place = i2;
   else
     fancy_abort ("/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c", 12125, __FUNCTION__);
   break;

 case REG_EH_REGION:

   if (((enum rtx_code) (i3)->code) == CALL_INSN)
     place = i3;
   else if (i2 && ((enum rtx_code) (i2)->code) == CALL_INSN)
     place = i2;
   else if (flag_non_call_exceptions)
     {
       if (may_trap_p (i3))
  place = i3;
       else if (i2 && may_trap_p (i2))
  place = i2;



     }
   else
     fancy_abort ("/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c", 12145, __FUNCTION__);
   break;

 case REG_NORETURN:
 case REG_SETJMP:


   if (((enum rtx_code) (i3)->code) == CALL_INSN)
     place = i3;
   else if (i2 && ((enum rtx_code) (i2)->code) == CALL_INSN)
     place = i2;
   else
     fancy_abort ("/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c", 12157, __FUNCTION__);
   break;

 case REG_UNUSED:
# 12178 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   if (reg_set_p ((((note)->fld[0]).rtx), (((i3)->fld[3]).rtx)))
     {
       if (from_insn != i3)
  break;

       if (! (((enum rtx_code) ((((note)->fld[0]).rtx))->code) == REG
       ? find_regno_note (i3, REG_UNUSED, ((((((note)->fld[0]).rtx))->fld[0]).rtuint))
       : find_reg_note (i3, REG_UNUSED, (((note)->fld[0]).rtx))))
  place = i3;
     }



   else if (reg_referenced_p ((((note)->fld[0]).rtx), (((i3)->fld[3]).rtx))
     && ! (((enum rtx_code) ((((note)->fld[0]).rtx))->code) == REG
    ? find_regno_note (i3, REG_DEAD,
         ((((((note)->fld[0]).rtx))->fld[0]).rtuint))
    : find_reg_note (i3, REG_DEAD, (((note)->fld[0]).rtx))))
     {
       ((note)->mode = (enum machine_mode) ((enum machine_mode) (REG_DEAD)));
       place = i3;
     }
   break;

 case REG_EQUAL:
 case REG_EQUIV:
 case REG_NOALIAS:
# 12216 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   if (from_insn == i3
       && ((((note)->fld[0]).rtx) == 0 || (((enum rtx_code) ((((note)->fld[0]).rtx))->code) == LABEL_REF || ((enum rtx_code) ((((note)->fld[0]).rtx))->code) == SYMBOL_REF || ((enum rtx_code) ((((note)->fld[0]).rtx))->code) == CONST_INT || ((enum rtx_code) ((((note)->fld[0]).rtx))->code) == CONST_DOUBLE || ((enum rtx_code) ((((note)->fld[0]).rtx))->code) == CONST || ((enum rtx_code) ((((note)->fld[0]).rtx))->code) == HIGH || ((enum rtx_code) ((((note)->fld[0]).rtx))->code) == CONST_VECTOR || ((enum rtx_code) ((((note)->fld[0]).rtx))->code) == CONSTANT_P_RTX)))
     place = i3;
   break;

 case REG_INC:
 case REG_NO_CONFLICT:


   if (reg_mentioned_p ((((note)->fld[0]).rtx), (((i3)->fld[3]).rtx)))
     place = i3;

   if (i2 && reg_mentioned_p ((((note)->fld[0]).rtx), (((i2)->fld[3]).rtx)))
     {
       if (place)
  place2 = i2;
       else
  place = i2;
     }
   break;

 case REG_LABEL:




   if (reg_mentioned_p ((((note)->fld[0]).rtx), (((i3)->fld[3]).rtx))
       || ((tem = find_reg_note (i3, REG_EQUAL, (rtx) 0))
    && ((enum rtx_code) ((((tem)->fld[0]).rtx))->code) == LABEL_REF
    && ((((((tem)->fld[0]).rtx))->fld[0]).rtx) == (((note)->fld[0]).rtx)))
     place = i3;

   if (i2
       && (reg_mentioned_p ((((note)->fld[0]).rtx), (((i2)->fld[3]).rtx))
    || ((tem = find_reg_note (i2, REG_EQUAL, (rtx) 0))
        && ((enum rtx_code) ((((tem)->fld[0]).rtx))->code) == LABEL_REF
        && ((((((tem)->fld[0]).rtx))->fld[0]).rtx) == (((note)->fld[0]).rtx))))
     {
       if (place)
  place2 = i2;
       else
  place = i2;
     }



   if (place && ((enum rtx_code) (place)->code) == JUMP_INSN && (((place)->fld[7]).rtx))
     {
       if ((((place)->fld[7]).rtx) != (((note)->fld[0]).rtx))
  fancy_abort ("/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c", 12265, __FUNCTION__);
       if (((enum rtx_code) ((((place)->fld[7]).rtx))->code) == CODE_LABEL)
  ((((((place)->fld[7]).rtx))->fld[3]).rtint)--;
       place = 0;
     }
   if (place2 && ((enum rtx_code) (place2)->code) == JUMP_INSN && (((place2)->fld[7]).rtx))
     {
       if ((((place2)->fld[7]).rtx) != (((note)->fld[0]).rtx))
  fancy_abort ("/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c", 12273, __FUNCTION__);
       if (((enum rtx_code) ((((place2)->fld[7]).rtx))->code) == CODE_LABEL)
  ((((((place2)->fld[7]).rtx))->fld[3]).rtint)--;
       place2 = 0;
     }
   break;

 case REG_NONNEG:
 case REG_WAS_0:




   break;

 case REG_RETVAL:



   if (((enum rtx_code) (from_insn)->code) != NOTE)
     place = from_insn;
   else
     {
       tem = find_reg_note ((((note)->fld[0]).rtx), REG_LIBCALL, (rtx) 0);
       place = prev_real_insn (from_insn);
       if (tem && place)
  (((tem)->fld[0]).rtx) = place;


       else if ((((note)->fld[0]).rtx) == from_insn)
  tem = place = 0;
     }
   break;

 case REG_LIBCALL:

   if (((enum rtx_code) (from_insn)->code) != NOTE)
     place = from_insn;
   else
     {
       tem = find_reg_note ((((note)->fld[0]).rtx), REG_RETVAL, (rtx) 0);
       place = next_real_insn (from_insn);
       if (tem && place)
  (((tem)->fld[0]).rtx) = place;


       else if ((((note)->fld[0]).rtx) == from_insn)
  tem = place = 0;
     }
   break;

 case REG_DEAD:
# 12339 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   if (from_insn
       && ((enum rtx_code) (from_insn)->code) == CALL_INSN
       && find_reg_fusage (from_insn, USE, (((note)->fld[0]).rtx)))
     place = from_insn;
   else if (reg_referenced_p ((((note)->fld[0]).rtx), (((i3)->fld[3]).rtx)))
     place = i3;
   else if (i2 != 0 && next_nonnote_insn (i2) == i3
     && reg_referenced_p ((((note)->fld[0]).rtx), (((i2)->fld[3]).rtx)))
     place = i2;

   if (rtx_equal_p ((((note)->fld[0]).rtx), elim_i2)
       || rtx_equal_p ((((note)->fld[0]).rtx), elim_i1))
     break;

   if (place == 0)
     {
       basic_block bb = (((basic_block_info)->data.bb[(this_basic_block)]));

       for (tem = (((i3)->fld[1]).rtx); place == 0; tem = (((tem)->fld[1]).rtx))
  {
    if (! ((rtx_class[(int) (((enum rtx_code) (tem)->code))]) == 'i'))
      {
        if (tem == bb->head)
   break;
        continue;
      }




    if (reg_set_p ((((note)->fld[0]).rtx), (((tem)->fld[3]).rtx)))
      {
        rtx set = (((rtx_class[(int) (((enum rtx_code) (tem)->code))]) == 'i') ? (((enum rtx_code) ((((tem)->fld[3]).rtx))->code) == SET ? (((tem)->fld[3]).rtx) : single_set_2 (tem, (((tem)->fld[3]).rtx))) : (rtx) 0);
        rtx inner_dest = 0;




        if (set != 0)
   for (inner_dest = (((set)->fld[0]).rtx);
        (((enum rtx_code) (inner_dest)->code) == STRICT_LOW_PART
         || ((enum rtx_code) (inner_dest)->code) == SUBREG
         || ((enum rtx_code) (inner_dest)->code) == ZERO_EXTRACT);
        inner_dest = (((inner_dest)->fld[0]).rtx))
     ;
# 12393 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
        if (set != 0 && ! side_effects_p ((((set)->fld[1]).rtx))
     && rtx_equal_p ((((note)->fld[0]).rtx), inner_dest)





     )
   {





     (((tem)->fld[3]).rtx) = (global_rtl[GR_PC]);

     distribute_notes ((((tem)->fld[6]).rtx), tem, tem,
         (rtx) 0, (rtx) 0, (rtx) 0);
     distribute_links ((((tem)->fld[5]).rtx));

     ((tem)->code = (enum rtx_code) (NOTE));
     (((tem)->fld[4]).rtint) = NOTE_INSN_DELETED;
     (((tem)->fld[3]).rtstr) = 0;
# 12434 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
   }



        else if (reg_referenced_p ((((note)->fld[0]).rtx),
       (((tem)->fld[3]).rtx)))
   {
     place = tem;

     if (! find_regno_note (tem, REG_UNUSED,
       ((((((note)->fld[0]).rtx))->fld[0]).rtuint)))
       (((tem)->fld[6]).rtx)
         = gen_rtx_fmt_ee (EXPR_LIST, (REG_UNUSED), ((((note)->fld[0]).rtx)), ((((tem)->fld[6]).rtx)));

   }
        else
   {
     ((note)->mode = (enum machine_mode) ((enum machine_mode) (REG_UNUSED)));



     if (! find_regno_note (tem, REG_UNUSED,
       ((((((note)->fld[0]).rtx))->fld[0]).rtuint)))
       place = tem;
     break;
   }
      }
    else if (reg_referenced_p ((((note)->fld[0]).rtx), (((tem)->fld[3]).rtx))
      || (((enum rtx_code) (tem)->code) == CALL_INSN
          && find_reg_fusage (tem, USE, (((note)->fld[0]).rtx))))
      {
        place = tem;







        if (i2 && (((place)->fld[0]).rtint) <= max_uid_cuid
     && ((((place)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (place) : uid_cuid[(((place)->fld[0]).rtint)]) > ((((i2)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i2) : uid_cuid[(((i2)->fld[0]).rtint)])
     && from_insn
     && ((((from_insn)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (from_insn) : uid_cuid[(((from_insn)->fld[0]).rtint)]) > ((((i2)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (i2) : uid_cuid[(((i2)->fld[0]).rtint)])
     && reg_referenced_p ((((note)->fld[0]).rtx), (((i2)->fld[3]).rtx)))
   {
     rtx links = (((place)->fld[5]).rtx);
     (((place)->fld[5]).rtx) = 0;
     distribute_links (links);
   }
        break;
      }

    if (tem == bb->head)
      break;
  }






       if (((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_DEAD && place == 0
    && bitmap_bit_p (bb->global_live_at_start, ((((((note)->fld[0]).rtx))->fld[0]).rtuint)))

  {
    ((refresh_blocks)->elms [(this_basic_block) / ((unsigned) (8 * 8))] |= (unsigned long long) 1 << (this_basic_block) % ((unsigned) (8 * 8)));
    need_refresh = 1;
  }
     }







   if (place && ((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_DEAD)
     {
       unsigned int regno = ((((((note)->fld[0]).rtx))->fld[0]).rtuint);




       if (noop_move_p (place))
  {
    ((refresh_blocks)->elms [(this_basic_block) / ((unsigned) (8 * 8))] |= (unsigned long long) 1 << (this_basic_block) % ((unsigned) (8 * 8)));
    need_refresh = 1;
  }

       if (dead_or_set_p (place, (((note)->fld[0]).rtx))
    || reg_bitfield_target_p ((((note)->fld[0]).rtx), (((place)->fld[3]).rtx)))
  {



    if (reg_last_death[regno] != place)
      reg_last_death[regno] = 0;
    place = 0;
  }
       else
  reg_last_death[regno] = place;
# 12545 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
       if (place && regno < 53
    && (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) ((((note)->fld[0]).rtx))->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) ((((note)->fld[0]).rtx))->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4)))) > 1)
  {
    unsigned int endregno
      = regno + (((regno) >= 8 && (regno) <= (8 + 7)) || (((regno) >= (20 + 1) && (regno) <= ((20 + 1) + 7)) || ((regno) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (regno) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((regno) >= (((20 + 1) + 7) + 1) && (regno) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((((enum machine_mode) ((((note)->fld[0]).rtx))->mode)) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (((enum machine_mode) ((((note)->fld[0]).rtx))->mode)) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4))));

    int all_used = 1;
    unsigned int i;

    for (i = regno; i < endregno; i++)
      if ((! refers_to_regno_p (i, i + 1, (((place)->fld[3]).rtx), 0)
    && ! find_regno_fusage (place, USE, i))
   || dead_or_set_regno_p (place, i))
        all_used = 0;

    if (! all_used)
      {



        for (i = regno; i < endregno;
      i += (((i) >= 8 && (i) <= (8 + 7)) || (((i) >= (20 + 1) && (i) <= ((20 + 1) + 7)) || ((i) >= (((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) && (i) <= ((((((((20 + 1) + 7) + 1) + 7) + 1) + 7) + 1) + 7))) || ((i) >= (((20 + 1) + 7) + 1) && (i) <= ((((20 + 1) + 7) + 1) + 7)) ? (((mode_class[(int) (reg_raw_mode[i])]) == MODE_COMPLEX_INT || (mode_class[(int) (reg_raw_mode[i])]) == MODE_COMPLEX_FLOAT) ? 2 : 1) : ((reg_raw_mode[i]) == TFmode ? ((target_flags & 0x02000000) ? 2 : 3) : (reg_raw_mode[i]) == TCmode ? ((target_flags & 0x02000000) ? 4 : 6) : (((mode_size[(int) (reg_raw_mode[i])]) + ((target_flags & 0x02000000) ? 8 : 4) - 1) / ((target_flags & 0x02000000) ? 8 : 4)))))
   {
     rtx piece = gen_rtx_REG (reg_raw_mode[i], i);
     basic_block bb = (((basic_block_info)->data.bb[(this_basic_block)]));

     if (! dead_or_set_p (place, piece)
         && ! reg_bitfield_target_p (piece,
         (((place)->fld[3]).rtx)))
       {
         rtx new_note
    = gen_rtx_fmt_ee (EXPR_LIST, (REG_DEAD), (piece), ((rtx) 0));

         distribute_notes (new_note, place, place,
      (rtx) 0, (rtx) 0, (rtx) 0);
       }
     else if (! refers_to_regno_p (i, i + 1,
       (((place)->fld[3]).rtx), 0)
       && ! find_regno_fusage (place, USE, i))
       for (tem = (((place)->fld[1]).rtx); ;
     tem = (((tem)->fld[1]).rtx))
         {
    if (! ((rtx_class[(int) (((enum rtx_code) (tem)->code))]) == 'i'))
      {
        if (tem == bb->head)
          {
     ((refresh_blocks)->elms [(this_basic_block) / ((unsigned) (8 * 8))] |= (unsigned long long) 1 << (this_basic_block) % ((unsigned) (8 * 8)));

     need_refresh = 1;
     break;
          }
        continue;
      }
    if (dead_or_set_p (tem, piece)
        || reg_bitfield_target_p (piece,
             (((tem)->fld[3]).rtx)))
      {
        (((tem)->fld[6]).rtx)
          = gen_rtx_fmt_ee (EXPR_LIST, (REG_UNUSED), (piece), ((((tem)->fld[6]).rtx)));

        break;
      }
         }

   }

        place = 0;
      }
  }
     }
   break;

 default:


   fancy_abort ("/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c", 12620, __FUNCTION__);
 }

      if (place)
 {
   (((note)->fld[1]).rtx) = (((place)->fld[6]).rtx);
   (((place)->fld[6]).rtx) = note;
 }
      else if ((((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_DEAD
  || ((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_UNUSED)
        && ((enum rtx_code) ((((note)->fld[0]).rtx))->code) == REG)
 (((reg_n_info)->data.reg[((((((note)->fld[0]).rtx))->fld[0]).rtuint)])->deaths)--;

      if (place2)
 {
   if ((((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_DEAD
        || ((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_UNUSED)
       && ((enum rtx_code) ((((note)->fld[0]).rtx))->code) == REG)
     (((reg_n_info)->data.reg[((((((note)->fld[0]).rtx))->fld[0]).rtuint)])->deaths)++;

   (((place2)->fld[6]).rtx) = gen_rtx_fmt_ee (((enum rtx_code) (note)->code),
            ((enum reg_note) ((enum machine_mode) (note)->mode)),
            (((note)->fld[0]).rtx),
            (((place2)->fld[6]).rtx));
 }
    }
}





static void
distribute_links (links)
     rtx links;
{
  rtx link, next_link;

  for (link = links; link; link = next_link)
    {
      rtx place = 0;
      rtx insn;
      rtx set, reg;

      next_link = (((link)->fld[1]).rtx);
# 12677 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      if (((enum rtx_code) ((((link)->fld[0]).rtx))->code) == NOTE
   || (set = (((rtx_class[(int) (((enum rtx_code) ((((link)->fld[0]).rtx))->code))]) == 'i') ? (((enum rtx_code) (((((((link)->fld[0]).rtx))->fld[3]).rtx))->code) == SET ? ((((((link)->fld[0]).rtx))->fld[3]).rtx) : single_set_2 ((((link)->fld[0]).rtx), ((((((link)->fld[0]).rtx))->fld[3]).rtx))) : (rtx) 0)) == 0)
 continue;

      reg = (((set)->fld[0]).rtx);
      while (((enum rtx_code) (reg)->code) == SUBREG || ((enum rtx_code) (reg)->code) == ZERO_EXTRACT
      || ((enum rtx_code) (reg)->code) == SIGN_EXTRACT
      || ((enum rtx_code) (reg)->code) == STRICT_LOW_PART)
 reg = (((reg)->fld[0]).rtx);
# 12696 "/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c"
      for (insn = ((((((link)->fld[0]).rtx))->fld[2]).rtx);
    (insn && (this_basic_block == n_basic_blocks - 1
       || ((((basic_block_info)->data.bb[(this_basic_block + 1)]))->head) != insn));
    insn = (((insn)->fld[2]).rtx))
 if (((rtx_class[(int) (((enum rtx_code) (insn)->code))]) == 'i') && reg_overlap_mentioned_p (reg, (((insn)->fld[3]).rtx)))
   {
     if (reg_referenced_p (reg, (((insn)->fld[3]).rtx)))
       place = insn;
     break;
   }
 else if (((enum rtx_code) (insn)->code) == CALL_INSN
   && find_reg_fusage (insn, USE, reg))
   {
     place = insn;
     break;
   }




      if (place)
 {
   rtx link2;

   for (link2 = (((place)->fld[5]).rtx); link2; link2 = (((link2)->fld[1]).rtx))
     if ((((link2)->fld[0]).rtx) == (((link)->fld[0]).rtx))
       break;

   if (link2 == 0)
     {
       (((link)->fld[1]).rtx) = (((place)->fld[5]).rtx);
       (((place)->fld[5]).rtx) = link;



       if (added_links_insn == 0
    || ((((added_links_insn)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (added_links_insn) : uid_cuid[(((added_links_insn)->fld[0]).rtint)]) > ((((place)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (place) : uid_cuid[(((place)->fld[0]).rtint)]))
  added_links_insn = place;
     }
 }
    }
}



static int
insn_cuid (insn)
     rtx insn;
{
  while (insn != 0 && (((insn)->fld[0]).rtint) > max_uid_cuid
  && ((enum rtx_code) (insn)->code) == INSN && ((enum rtx_code) ((((insn)->fld[3]).rtx))->code) == USE)
    insn = (((insn)->fld[2]).rtx);

  if ((((insn)->fld[0]).rtint) > max_uid_cuid)
    fancy_abort ("/Users/ddunbar/compiler-group/test-suite-externals/trunk/lnt-compile-suite-src/403.gcc/combine.c", 12750, __FUNCTION__);

  return ((((insn)->fld[0]).rtint) > max_uid_cuid ? insn_cuid (insn) : uid_cuid[(((insn)->fld[0]).rtint)]);
}

void
dump_combine_stats (file)
     FILE *file;
{
  fnotice
    (file,
     ";; Combiner statistics: %d attempts, %d substitutions (%d requiring new space),\n;; %d successes.\n\n",
     combine_attempts, combine_merges, combine_extras, combine_successes);
}

void
dump_combine_total_stats (file)
     FILE *file;
{
  fnotice
    (file,
     "\n;; Combiner totals: %d attempts, %d substitutions (%d requiring new space),\n;; %d successes.\n",
     total_attempts, total_merges, total_extras, total_successes);
}