public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug bootstrap/14162] New: Fail to bootstrap gcc-3.3.3 on an old Sparcstation 10
@ 2004-02-16 16:30 gcc-bugzilla at gcc dot gnu dot org
  2004-02-16 16:36 ` [Bug bootstrap/14162] " pinskia at gcc dot gnu dot org
  0 siblings, 1 reply; 2+ messages in thread
From: gcc-bugzilla at gcc dot gnu dot org @ 2004-02-16 16:30 UTC (permalink / raw)
  To: gcc-bugs

% make bootsrap
........
stage1/xgcc -Bstage1/ -B/opt/local/sparc-sun-solaris2.9/bin/ -c   -g -O2 -DIN_GCC   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -pedantic -Wno-long-long   -DHAVE_CONFIG_H    -I. -I. -I/opt/local/src/gcc-3.3.3/gcc -I/opt/local/src/gcc-3.3.3/gcc/. -I/opt/local/src/gcc-3.3.3/gcc/config -I/opt/local/src/gcc-3.3.3/gcc/../include /opt/local/src/gcc-3.3.3/gcc/reload.c -o reload.o
/opt/local/src/gcc-3.3.3/gcc/reload.c: In function `find_reloads':
/opt/local/src/gcc-3.3.3/gcc/reload.c:4393: internal compiler error: Segmentation Fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
make[5]: *** [reload.o] Error 1
make[5]: Leaving directory `/home/hk/proj/sunpkg/gcc/build-3.3.3-SunOS-5.9-sparc/gcc'
make[4]: *** [stage2_build] Error 2
make[4]: Leaving directory `/home/hk/proj/sunpkg/gcc/build-3.3.3-SunOS-5.9-sparc/gcc'
make[3]: *** [bootstrap] Error 2
make[3]: Leaving directory `/home/hk/proj/sunpkg/gcc/build-3.3.3-SunOS-5.9-sparc

Environment:
System: SunOS xxx 5.9 Generic_112233-08 sun4m sparc SUNW,SPARCstation-10
Architecture: sun4
host: sparc-sun-solaris2.9
build: sparc-sun-solaris2.9
target: sparc-sun-solaris2.9
configured with: /opt/local/src/gcc-3.3.3/configure --prefix=/opt/local --enable-languages=c,c++

How-To-Repeat:
% pwd
/some/build/directory
% /opt/local/src/gcc-3.3.3/configure --prefix=/opt/local --enable-languages=c,c++
% make bootstrap

# 1 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
# 89 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
# 1 "config.h" 1

# 1 "auto-host.h" 1
# 3 "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 "/opt/local/src/gcc-3.3.3/include/ansidecl.h" 1
# 18 "config.h" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/biarch64.h" 1
# 19 "config.h" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc.h" 1
# 82 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc.h"
enum cmodel {
  CM_32,
  CM_MEDLOW,
  CM_MEDMID,
  CM_MEDANY,
  CM_EMBMEDANY
};


extern const char *sparc_cmodel_string;

extern enum cmodel sparc_cmodel;
# 382 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc.h"
extern int target_flags;
# 606 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc.h"
enum processor_type {
  PROCESSOR_V7,
  PROCESSOR_CYPRESS,
  PROCESSOR_V8,
  PROCESSOR_SUPERSPARC,
  PROCESSOR_SPARCLITE,
  PROCESSOR_F930,
  PROCESSOR_F934,
  PROCESSOR_HYPERSPARC,
  PROCESSOR_SPARCLITE86X,
  PROCESSOR_SPARCLET,
  PROCESSOR_TSC701,
  PROCESSOR_V9,
  PROCESSOR_ULTRASPARC,
  PROCESSOR_ULTRASPARC3
};


extern enum processor_type sparc_cpu;
# 645 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc.h"
struct sparc_cpu_select
{
  const char *string;
  const char *const name;
  const int set_tune_p;
  const int set_arch_p;
};

extern struct sparc_cpu_select sparc_select[];
# 1028 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc.h"
extern const int *hard_regno_mode_classes;
extern int sparc_mode_class[];
# 1208 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc.h"
enum reg_class { NO_REGS, FPCC_REGS, I64_REGS, GENERAL_REGS, FP_REGS,
                 EXTRA_FP_REGS, GENERAL_OR_FP_REGS, GENERAL_OR_EXTRA_FP_REGS,
                 ALL_REGS, LIM_REG_CLASSES };
# 1241 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc.h"
extern enum reg_class sparc_regno_reg_class[102];
# 1324 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc.h"
extern char sparc_leaf_regs[];


extern char leaf_reg_remap[];
# 1727 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc.h"
struct sparc_args {
  int words;
  int prototype_p;
  int libcall_p;
};
# 1816 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc.h"
extern rtx sparc_compare_op0;
extern rtx sparc_compare_op1;
# 1845 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc.h"
extern char sparc_hard_reg_printed[8];
# 20 "config.h" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/config/dbxelf.h" 1
# 21 "config.h" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/config/elfos.h" 1
# 22 "config.h" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/config/svr4.h" 1
# 23 "config.h" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sysv4.h" 1
# 24 "config.h" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/config/sol2.h" 1
# 25 "config.h" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sol2.h" 1
# 26 "config.h" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sol2-bi.h" 1
# 27 "config.h" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/defaults.h" 1
# 28 "config.h" 2





# 1 "insn-constants.h" 1
# 34 "config.h" 2
# 1 "insn-flags.h" 1
# 239 "insn-flags.h"
extern rtx gen_get_pc (rtx, rtx, rtx);
extern rtx gen_movsi_lo_sum_pic (rtx, rtx, rtx);
extern rtx gen_movsi_high_pic (rtx, rtx);
extern rtx gen_movdi_lo_sum_pic (rtx, rtx, rtx);
extern rtx gen_movdi_high_pic (rtx, rtx);
extern rtx gen_seth44 (rtx, rtx);
extern rtx gen_setm44 (rtx, rtx, rtx);
extern rtx gen_setl44 (rtx, rtx, rtx);
extern rtx gen_sethh (rtx, rtx);
extern rtx gen_setlm (rtx, rtx);
extern rtx gen_sethm (rtx, rtx, rtx);
extern rtx gen_setlo (rtx, rtx, rtx);
extern rtx gen_embmedany_sethi (rtx, rtx);
extern rtx gen_embmedany_losum (rtx, rtx, rtx);
extern rtx gen_embmedany_brsum (rtx, rtx);
extern rtx gen_embmedany_textuhi (rtx, rtx);
extern rtx gen_embmedany_texthi (rtx, rtx);
extern rtx gen_embmedany_textulo (rtx, rtx, rtx);
extern rtx gen_embmedany_textlo (rtx, rtx, rtx);
extern rtx gen_movdf_cc_sp64 (rtx, rtx, rtx, rtx, rtx);
extern rtx gen_movdf_cc_reg_sp64 (rtx, rtx, rtx, rtx, rtx);
extern rtx gen_extendsfdf2 (rtx, rtx);
extern rtx gen_truncdfsf2 (rtx, rtx);
extern rtx gen_floatsisf2 (rtx, rtx);
extern rtx gen_floatsidf2 (rtx, rtx);
extern rtx gen_floatdisf2 (rtx, rtx);
extern rtx gen_floatdidf2 (rtx, rtx);
extern rtx gen_fix_truncsfsi2 (rtx, rtx);
extern rtx gen_fix_truncdfsi2 (rtx, rtx);
extern rtx gen_fix_truncsfdi2 (rtx, rtx);
extern rtx gen_fix_truncdfdi2 (rtx, rtx);
extern rtx gen_adddi3_insn_sp32 (rtx, rtx, rtx);
extern rtx gen_addx (rtx, rtx, rtx);
extern rtx gen_subx (rtx, rtx, rtx);
extern rtx gen_addsi3 (rtx, rtx, rtx);
extern rtx gen_subsi3 (rtx, rtx, rtx);
extern rtx gen_cmp_minus_cc_set (rtx, rtx, rtx);
extern rtx gen_mulsi3 (rtx, rtx, rtx);
extern rtx gen_muldi3_v8plus (rtx, rtx, rtx);
extern rtx gen_mulsidi3_v8plus (rtx, rtx, rtx);
extern rtx gen_const_mulsidi3_v8plus (rtx, rtx, rtx);
extern rtx gen_const_mulsidi3_sp32 (rtx, rtx, rtx);
extern rtx gen_const_mulsidi3_sp64 (rtx, rtx, rtx);
extern rtx gen_smulsi3_highpart_v8plus (rtx, rtx, rtx, rtx);
extern rtx gen_const_smulsi3_highpart_v8plus (rtx, rtx, rtx, rtx);
extern rtx gen_const_smulsi3_highpart (rtx, rtx, rtx);
extern rtx gen_umulsidi3_v8plus (rtx, rtx, rtx);
extern rtx gen_const_umulsidi3_sp32 (rtx, rtx, rtx);
extern rtx gen_const_umulsidi3_sp64 (rtx, rtx, rtx);
extern rtx gen_const_umulsidi3_v8plus (rtx, rtx, rtx);
extern rtx gen_umulsi3_highpart_v8plus (rtx, rtx, rtx, rtx);
extern rtx gen_const_umulsi3_highpart_v8plus (rtx, rtx, rtx, rtx);
extern rtx gen_const_umulsi3_highpart (rtx, rtx, rtx);
extern rtx gen_divsi3_sp32 (rtx, rtx, rtx);
extern rtx gen_divsi3_sp64 (rtx, rtx, rtx, rtx);
extern rtx gen_divdi3 (rtx, rtx, rtx);
extern rtx gen_udivsi3_sp32 (rtx, rtx, rtx);
extern rtx gen_udivsi3_sp64 (rtx, rtx, rtx);
extern rtx gen_udivdi3 (rtx, rtx, rtx);
extern rtx gen_andsi3 (rtx, rtx, rtx);
extern rtx gen_iorsi3 (rtx, rtx, rtx);
extern rtx gen_xorsi3 (rtx, rtx, rtx);
extern rtx gen_negsi2 (rtx, rtx);
extern rtx gen_one_cmplsi2 (rtx, rtx);
extern rtx gen_adddf3 (rtx, rtx, rtx);
extern rtx gen_addsf3 (rtx, rtx, rtx);
extern rtx gen_subdf3 (rtx, rtx, rtx);
extern rtx gen_subsf3 (rtx, rtx, rtx);
extern rtx gen_muldf3 (rtx, rtx, rtx);
extern rtx gen_mulsf3 (rtx, rtx, rtx);
extern rtx gen_divdf3 (rtx, rtx, rtx);
extern rtx gen_divsf3 (rtx, rtx, rtx);
extern rtx gen_negsf2 (rtx, rtx);
extern rtx gen_abssf2 (rtx, rtx);
extern rtx gen_sqrtdf2 (rtx, rtx);
extern rtx gen_sqrtsf2 (rtx, rtx);
extern rtx gen_ashlsi3 (rtx, rtx, rtx);
extern rtx gen_ashldi3_v8plus (rtx, rtx, rtx);
extern rtx gen_ashrsi3 (rtx, rtx, rtx);
extern rtx gen_ashrdi3_v8plus (rtx, rtx, rtx);
extern rtx gen_lshrsi3 (rtx, rtx, rtx);
extern rtx gen_lshrdi3_v8plus (rtx, rtx, rtx);
extern rtx gen_jump (rtx);
extern rtx gen_blockage (void);
extern rtx gen_update_return (rtx, rtx);
extern rtx gen_nop (void);
extern rtx gen_flush_register_windows (void);
extern rtx gen_goto_handler_and_restore (rtx);
extern rtx gen_do_builtin_setjmp_setup (void);
extern rtx gen_flush (rtx);
extern rtx gen_flushdi (rtx);
extern rtx gen_ffssi2 (rtx, rtx);
extern rtx gen_prefetch_64 (rtx, rtx, rtx);
extern rtx gen_prefetch_32 (rtx, rtx, rtx);
extern rtx gen_trap (void);
extern rtx gen_cmpsi (rtx, rtx);
extern rtx gen_cmpdi (rtx, rtx);
extern rtx gen_cmpsf (rtx, rtx);
extern rtx gen_cmpdf (rtx, rtx);
extern rtx gen_cmptf (rtx, rtx);
extern rtx gen_seqsi_special (rtx, rtx, rtx);
extern rtx gen_seqdi_special (rtx, rtx, rtx);
extern rtx gen_snesi_special (rtx, rtx, rtx);
extern rtx gen_snedi_special (rtx, rtx, rtx);
extern rtx gen_seqdi_special_trunc (rtx, rtx, rtx);
extern rtx gen_snedi_special_trunc (rtx, rtx, rtx);
extern rtx gen_seqsi_special_extend (rtx, rtx, rtx);
extern rtx gen_snesi_special_extend (rtx, rtx, rtx);
extern rtx gen_seq (rtx);
extern rtx gen_sne (rtx);
extern rtx gen_sgt (rtx);
extern rtx gen_slt (rtx);
extern rtx gen_sge (rtx);
extern rtx gen_sle (rtx);
extern rtx gen_sgtu (rtx);
extern rtx gen_sltu (rtx);
extern rtx gen_sgeu (rtx);
extern rtx gen_sleu (rtx);
extern rtx gen_beq (rtx);
extern rtx gen_bne (rtx);
extern rtx gen_bgt (rtx);
extern rtx gen_bgtu (rtx);
extern rtx gen_blt (rtx);
extern rtx gen_bltu (rtx);
extern rtx gen_bge (rtx);
extern rtx gen_bgeu (rtx);
extern rtx gen_ble (rtx);
extern rtx gen_bleu (rtx);
extern rtx gen_bunordered (rtx);
extern rtx gen_bordered (rtx);
extern rtx gen_bungt (rtx);
extern rtx gen_bunlt (rtx);
extern rtx gen_buneq (rtx);
extern rtx gen_bunge (rtx);
extern rtx gen_bunle (rtx);
extern rtx gen_bltgt (rtx);
extern rtx gen_movqi (rtx, rtx);
extern rtx gen_movhi (rtx, rtx);
extern rtx gen_movsi (rtx, rtx);
extern rtx gen_movsi_pic_label_ref (rtx, rtx);
extern rtx gen_movdi (rtx, rtx);
extern rtx gen_movdi_pic_label_ref (rtx, rtx);
extern rtx gen_reload_indi (rtx, rtx, rtx);
extern rtx gen_reload_outdi (rtx, rtx, rtx);
extern rtx gen_movsf (rtx, rtx);
extern rtx gen_movdf (rtx, rtx);
extern rtx gen_movtf (rtx, rtx);
extern rtx gen_movqicc (rtx, rtx, rtx, rtx);
extern rtx gen_movhicc (rtx, rtx, rtx, rtx);
extern rtx gen_movsicc (rtx, rtx, rtx, rtx);
extern rtx gen_movdicc (rtx, rtx, rtx, rtx);
extern rtx gen_movsfcc (rtx, rtx, rtx, rtx);
extern rtx gen_movdfcc (rtx, rtx, rtx, rtx);
extern rtx gen_movtfcc (rtx, rtx, rtx, rtx);
extern rtx gen_zero_extendhisi2 (rtx, rtx);
extern rtx gen_zero_extendqihi2 (rtx, rtx);
extern rtx gen_zero_extendqisi2 (rtx, rtx);
extern rtx gen_zero_extendqidi2 (rtx, rtx);
extern rtx gen_zero_extendhidi2 (rtx, rtx);
extern rtx gen_zero_extendsidi2 (rtx, rtx);
extern rtx gen_extendhisi2 (rtx, rtx);
extern rtx gen_extendqihi2 (rtx, rtx);
extern rtx gen_extendqisi2 (rtx, rtx);
extern rtx gen_extendqidi2 (rtx, rtx);
extern rtx gen_extendhidi2 (rtx, rtx);
extern rtx gen_extendsidi2 (rtx, rtx);
extern rtx gen_extendsftf2 (rtx, rtx);
extern rtx gen_extenddftf2 (rtx, rtx);
extern rtx gen_trunctfsf2 (rtx, rtx);
extern rtx gen_trunctfdf2 (rtx, rtx);
extern rtx gen_floatsitf2 (rtx, rtx);
extern rtx gen_floatunssitf2 (rtx, rtx);
extern rtx gen_floatunsdisf2 (rtx, rtx);
extern rtx gen_floatunsdidf2 (rtx, rtx);
extern rtx gen_floatditf2 (rtx, rtx);
extern rtx gen_floatunsditf2 (rtx, rtx);
extern rtx gen_fix_trunctfsi2 (rtx, rtx);
extern rtx gen_fixuns_trunctfsi2 (rtx, rtx);
extern rtx gen_fix_trunctfdi2 (rtx, rtx);
extern rtx gen_fixuns_trunctfdi2 (rtx, rtx);
extern rtx gen_adddi3 (rtx, rtx, rtx);
extern rtx gen_subdi3 (rtx, rtx, rtx);
extern rtx gen_muldi3 (rtx, rtx, rtx);
extern rtx gen_mulsidi3 (rtx, rtx, rtx);
extern rtx gen_smulsi3_highpart (rtx, rtx, rtx);
extern rtx gen_umulsidi3 (rtx, rtx, rtx);
extern rtx gen_umulsi3_highpart (rtx, rtx, rtx);
extern rtx gen_divsi3 (rtx, rtx, rtx);
extern rtx gen_udivsi3 (rtx, rtx, rtx);
extern rtx gen_anddi3 (rtx, rtx, rtx);
extern rtx gen_iordi3 (rtx, rtx, rtx);
extern rtx gen_xordi3 (rtx, rtx, rtx);
extern rtx gen_negdi2 (rtx, rtx);
extern rtx gen_one_cmpldi2 (rtx, rtx);
extern rtx gen_addtf3 (rtx, rtx, rtx);
extern rtx gen_subtf3 (rtx, rtx, rtx);
extern rtx gen_multf3 (rtx, rtx, rtx);
extern rtx gen_divtf3 (rtx, rtx, rtx);
extern rtx gen_negtf2 (rtx, rtx);
extern rtx gen_negdf2 (rtx, rtx);
extern rtx gen_abstf2 (rtx, rtx);
extern rtx gen_absdf2 (rtx, rtx);
extern rtx gen_sqrttf2 (rtx, rtx);
extern rtx gen_ashldi3 (rtx, rtx, rtx);
extern rtx gen_ashrdi3 (rtx, rtx, rtx);
extern rtx gen_lshrdi3 (rtx, rtx, rtx);
extern rtx gen_tablejump (rtx, rtx);

extern rtx gen_call (rtx, rtx, rtx, rtx);

extern rtx gen_call_value (rtx, rtx, rtx, rtx, rtx);
extern rtx gen_untyped_call (rtx, rtx, rtx);

extern rtx gen_sibcall (rtx);

extern rtx gen_sibcall_value (rtx, rtx);
extern rtx gen_sibcall_epilogue (void);
extern rtx gen_untyped_return (rtx, rtx);
extern rtx gen_indirect_jump (rtx);
extern rtx gen_nonlocal_goto (rtx, rtx, rtx, rtx);
extern rtx gen_builtin_setjmp_setup (rtx);
extern rtx gen_setjmp (void);
extern rtx gen_setjmp_32 (void);
extern rtx gen_setjmp_64 (void);
extern rtx gen_prefetch (rtx, rtx, rtx);
extern rtx gen_prologue (void);
extern rtx gen_exception_receiver (void);
extern rtx gen_builtin_setjmp_receiver (rtx);
extern rtx gen_conditional_trap (rtx, rtx);
# 35 "config.h" 2
# 90 "/opt/local/src/gcc-3.3.3/gcc/reload.c" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/system.h" 1
# 28 "/opt/local/src/gcc-3.3.3/gcc/system.h"
# 1 "include/stdarg.h" 1 3 4
# 43 "include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 85 "include/stdarg.h" 3 4
typedef __gnuc_va_list va_list;
# 29 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2
# 42 "/opt/local/src/gcc-3.3.3/gcc/system.h"
# 1 "include/stddef.h" 1 3 4
# 151 "include/stddef.h" 3 4
typedef int ptrdiff_t;
# 213 "include/stddef.h" 3 4
typedef unsigned int size_t;
# 325 "include/stddef.h" 3 4
typedef long int wchar_t;
# 43 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2


# 1 "include/stdio.h" 1 3 4
# 34 "include/stdio.h" 3 4
#pragma ident "@(#)stdio.h	1.79	01/04/16 SMI" 

# 1 "/usr/include/iso/stdio_iso.h" 1 3 4
# 32 "/usr/include/iso/stdio_iso.h" 3 4
#pragma ident "@(#)stdio_iso.h	1.2	99/10/25 SMI"


# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 13 "/usr/include/sys/feature_tests.h" 3 4
#pragma ident "@(#)feature_tests.h	1.18	99/07/26 SMI"

# 1 "/usr/include/sys/isa_defs.h" 1 3 4
# 9 "/usr/include/sys/isa_defs.h" 3 4
#pragma ident "@(#)isa_defs.h	1.20	99/05/04 SMI"
# 16 "/usr/include/sys/feature_tests.h" 2 3 4
# 36 "/usr/include/iso/stdio_iso.h" 2 3 4
# 1 "/usr/include/sys/va_list.h" 1 3 4
# 9 "/usr/include/sys/va_list.h" 3 4
#pragma ident "@(#)va_list.h	1.13	01/02/08 SMI"
# 26 "/usr/include/sys/va_list.h" 3 4
typedef void *__va_list;
# 37 "/usr/include/iso/stdio_iso.h" 2 3 4
# 1 "include/stdio_tag.h" 1 3 4
# 18 "include/stdio_tag.h" 3 4
#pragma ident "@(#)stdio_tag.h	1.3	98/04/20 SMI"
# 30 "include/stdio_tag.h" 3 4
typedef struct __FILE __FILE;
# 38 "/usr/include/iso/stdio_iso.h" 2 3 4
# 1 "/usr/include/stdio_impl.h" 1 3 4
# 9 "/usr/include/stdio_impl.h" 3 4
#pragma ident "@(#)stdio_impl.h	1.13	01/11/16 SMI"
# 22 "/usr/include/stdio_impl.h" 3 4
typedef int ssize_t;
# 38 "/usr/include/stdio_impl.h" 3 4
struct __FILE
{




        ssize_t _cnt;
        unsigned char *_ptr;

        unsigned char *_base;
        unsigned char _flag;
        unsigned char _file;
        unsigned __orientation:2;
        unsigned __ionolock:1;
        unsigned __seekable:1;
        unsigned __filler:4;
};
# 39 "/usr/include/iso/stdio_iso.h" 2 3 4
# 59 "/usr/include/iso/stdio_iso.h" 3 4
typedef long long __longlong_t;
# 75 "/usr/include/iso/stdio_iso.h" 3 4
typedef __FILE FILE;
# 88 "/usr/include/iso/stdio_iso.h" 3 4
typedef long fpos_t;
# 147 "/usr/include/iso/stdio_iso.h" 3 4
extern __FILE __iob[20];
# 164 "/usr/include/iso/stdio_iso.h" 3 4
extern int remove(const char *);
extern int rename(const char *, const char *);
extern FILE *tmpfile(void);
extern char *tmpnam(char *);
extern int fclose(FILE *);
extern int fflush(FILE *);
extern FILE *fopen(const char *, const char *);
extern FILE *freopen(const char *, const char *, FILE *);
extern void setbuf(FILE *, char *);
extern int setvbuf(FILE *, char *, int, size_t);

extern int fprintf(FILE *, const char *, ...);

extern int fscanf(FILE *, const char *, ...);

extern int printf(const char *, ...);

extern int scanf(const char *, ...);

extern int sprintf(char *, const char *, ...);

extern int sscanf(const char *, const char *, ...);
extern int vfprintf(FILE *, const char *, __va_list);
extern int vprintf(const char *, __va_list);
extern int vsprintf(char *, const char *, __va_list);
extern int fgetc(FILE *);
extern char *fgets(char *, int, FILE *);
extern int fputc(int, FILE *);
extern int fputs(const char *, FILE *);


extern int getc(FILE *);
extern int putc(int, FILE *);



extern int getchar(void);
extern int putchar(int);

extern char *gets(char *);
extern int puts(const char *);
extern int ungetc(int, FILE *);
extern size_t fread(void *, size_t, size_t, FILE *);
extern size_t fwrite(const void *, size_t, size_t, FILE *);
extern int fgetpos(FILE *, fpos_t *);
extern int fseek(FILE *, long, int);
extern int fsetpos(FILE *, const fpos_t *);
extern long ftell(FILE *);
extern void rewind(FILE *);


extern void clearerr(FILE *);
extern int feof(FILE *);
extern int ferror(FILE *);

extern void perror(const char *);


extern int __filbuf(FILE *);
extern int __flsbuf(int, FILE *);
# 37 "include/stdio.h" 2 3 4
# 105 "include/stdio.h" 3 4
typedef long off_t;







typedef __longlong_t off64_t;
# 123 "include/stdio.h" 3 4
typedef __longlong_t fpos64_t;
# 151 "include/stdio.h" 3 4
extern unsigned char _sibuf[], _sobuf[];
# 193 "include/stdio.h" 3 4
extern unsigned char *_bufendtab[];
extern FILE *_lastbuf;
# 229 "include/stdio.h" 3 4
extern void setbuffer(FILE *, char *, size_t);
extern int setlinebuf(FILE *);





extern int vfscanf(FILE *, const char *, __gnuc_va_list);
extern int vscanf(const char *, __gnuc_va_list);
extern int vsscanf(const char *, const char *, __gnuc_va_list);





extern int snprintf(char *, size_t, const char *, ...);




extern int vsnprintf(char *, size_t, const char *, __gnuc_va_list);
# 258 "include/stdio.h" 3 4
extern FILE *fdopen(int, const char *);
extern char *ctermid(char *);
extern int fileno(FILE *);
# 284 "include/stdio.h" 3 4
extern FILE *popen(const char *, const char *);
extern char *cuserid(char *);
extern char *tempnam(const char *, const char *);
extern int getopt(int, char *const *, const char *);

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

extern char *optarg;
extern int optind, opterr, optopt;
extern int getw(FILE *);
extern int putw(int, FILE *);
extern int pclose(FILE *);







extern int fseeko(FILE *, off_t, int);
extern off_t ftello(FILE *);
# 313 "include/stdio.h" 3 4
extern FILE *fopen64(const char *, const char *);
extern FILE *freopen64(const char *, const char *, FILE *);
extern FILE *tmpfile64(void);
extern int fgetpos64(FILE *, fpos64_t *);
extern int fsetpos64(FILE *, const fpos64_t *);
extern int fseeko64(FILE *, off64_t, int);
extern off64_t ftello64(FILE *);
# 46 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2
# 105 "/opt/local/src/gcc-3.3.3/gcc/system.h"
# 1 "/opt/local/src/gcc-3.3.3/include/safe-ctype.h" 1
# 44 "/opt/local/src/gcc-3.3.3/include/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 "/opt/local/src/gcc-3.3.3/include/safe-ctype.h"
extern const unsigned char _sch_toupper[256];
extern const unsigned char _sch_tolower[256];
# 106 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2

# 1 "include/sys/types.h" 1 3 4
# 25 "include/sys/types.h" 3 4
#pragma ident "@(#)types.h	1.74	03/08/07 SMI"







# 1 "/usr/include/sys/machtypes.h" 1 3 4
# 16 "/usr/include/sys/machtypes.h" 3 4
#pragma ident "@(#)machtypes.h	1.13	99/05/04 SMI"
# 33 "/usr/include/sys/machtypes.h" 3 4
typedef struct _label_t { long val[2]; } label_t;



typedef unsigned char lock_t;
# 34 "include/sys/types.h" 2 3 4
# 45 "include/sys/types.h" 3 4
# 1 "/usr/include/sys/int_types.h" 1 3 4
# 9 "/usr/include/sys/int_types.h" 3 4
#pragma ident "@(#)int_types.h	1.6	97/08/20 SMI"
# 62 "/usr/include/sys/int_types.h" 3 4
typedef char int8_t;





typedef short int16_t;
typedef int int32_t;




typedef long long int64_t;



typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;




typedef unsigned long long uint64_t;
# 94 "/usr/include/sys/int_types.h" 3 4
typedef int64_t intmax_t;
typedef uint64_t uintmax_t;
# 110 "/usr/include/sys/int_types.h" 3 4
typedef int intptr_t;
typedef unsigned int uintptr_t;







typedef char int_least8_t;





typedef short int_least16_t;
typedef int int_least32_t;




typedef long long int_least64_t;



typedef unsigned char uint_least8_t;
typedef unsigned short uint_least16_t;
typedef unsigned int uint_least32_t;




typedef unsigned long long uint_least64_t;
# 46 "include/sys/types.h" 2 3 4
# 62 "include/sys/types.h" 3 4
typedef long long longlong_t;
typedef unsigned long long u_longlong_t;
# 85 "include/sys/types.h" 3 4
typedef long t_scalar_t;
typedef unsigned long t_uscalar_t;





typedef unsigned char uchar_t;
typedef unsigned short ushort_t;
typedef unsigned int uint_t;
typedef unsigned long ulong_t;

typedef char *caddr_t;
typedef long daddr_t;
typedef short cnt_t;
# 121 "include/sys/types.h" 3 4
typedef ulong_t pfn_t;
typedef ulong_t pgcnt_t;
typedef long spgcnt_t;

typedef uchar_t use_t;
typedef short sysid_t;
typedef short index_t;
typedef void *timeout_id_t;
typedef void *bufcall_id_t;
# 159 "include/sys/types.h" 3 4
typedef ulong_t ino_t;
typedef long blkcnt_t;
typedef ulong_t fsblkcnt_t;
typedef ulong_t fsfilcnt_t;
# 177 "include/sys/types.h" 3 4
typedef u_longlong_t ino64_t;
typedef longlong_t blkcnt64_t;
typedef u_longlong_t fsblkcnt64_t;
typedef u_longlong_t fsfilcnt64_t;






typedef long blksize_t;





typedef enum { B_FALSE, B_TRUE } boolean_t;
# 204 "include/sys/types.h" 3 4
typedef int64_t pad64_t;
typedef uint64_t upad64_t;
# 217 "include/sys/types.h" 3 4
typedef longlong_t offset_t;
typedef u_longlong_t u_offset_t;
typedef u_longlong_t len_t;
typedef u_longlong_t diskaddr_t;
# 238 "include/sys/types.h" 3 4
typedef union {
        offset_t _f;
        struct {
                int32_t _u;
                int32_t _l;
        } _p;
} lloff_t;
# 258 "include/sys/types.h" 3 4
typedef union {
        longlong_t _f;
        struct {
                int32_t _u;
                int32_t _l;
        } _p;
} lldaddr_t;


typedef uint_t k_fltset_t;
# 281 "include/sys/types.h" 3 4
typedef long id_t;






typedef uint_t useconds_t;



typedef long suseconds_t;
# 302 "include/sys/types.h" 3 4
typedef ulong_t major_t;
typedef ulong_t minor_t;





typedef short pri_t;
# 322 "include/sys/types.h" 3 4
typedef ushort_t o_mode_t;
typedef short o_dev_t;
typedef ushort_t o_uid_t;
typedef o_uid_t o_gid_t;
typedef short o_nlink_t;
typedef short o_pid_t;
typedef ushort_t o_ino_t;





typedef int key_t;



typedef ulong_t mode_t;







typedef long uid_t;



typedef uid_t gid_t;

typedef id_t taskid_t;
typedef id_t projid_t;






typedef uint_t pthread_t;
typedef uint_t pthread_key_t;







typedef struct _pthread_mutex {
        struct {
                uint16_t __pthread_mutex_flag1;
                uint8_t __pthread_mutex_flag2;
                uint8_t __pthread_mutex_ceiling;
                uint16_t __pthread_mutex_type;
                uint16_t __pthread_mutex_magic;
        } __pthread_mutex_flags;
        union {
                struct {
                        uint8_t __pthread_mutex_pad[8];
                } __pthread_mutex_lock64;
                struct {
                        uint32_t __pthread_ownerpid;
                        uint32_t __pthread_lockword;
                } __pthread_mutex_lock32;
                upad64_t __pthread_mutex_owner64;
        } __pthread_mutex_lock;
        upad64_t __pthread_mutex_data;
} pthread_mutex_t;

typedef struct _pthread_cond {
        struct {
                uint8_t __pthread_cond_flag[4];
                uint16_t __pthread_cond_type;
                uint16_t __pthread_cond_magic;
        } __pthread_cond_flags;
        upad64_t __pthread_cond_data;
} pthread_cond_t;




typedef struct _pthread_rwlock {
        int32_t __pthread_rwlock_readers;
        uint16_t __pthread_rwlock_type;
        uint16_t __pthread_rwlock_magic;
        pthread_mutex_t __pthread_rwlock_mutex;
        pthread_cond_t __pthread_rwlock_readercv;
        pthread_cond_t __pthread_rwlock_writercv;
} pthread_rwlock_t;




typedef struct _pthread_attr {
        void *__pthread_attrp;
} pthread_attr_t;




typedef struct _pthread_mutexattr {
        void *__pthread_mutexattrp;
} pthread_mutexattr_t;




typedef struct _pthread_condattr {
        void *__pthread_condattrp;
} pthread_condattr_t;




typedef struct _once {
        upad64_t __pthread_once_pad[4];
} pthread_once_t;





typedef struct _pthread_rwlockattr {
        void *__pthread_rwlockattrp;
} pthread_rwlockattr_t;

typedef ulong_t dev_t;





typedef ulong_t nlink_t;
typedef long pid_t;
# 485 "include/sys/types.h" 3 4
typedef long time_t;




typedef long clock_t;




typedef int clockid_t;




typedef int timer_t;






typedef unsigned char unchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
# 561 "include/sys/types.h" 3 4
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
typedef struct _quad { int val[2]; } quad_t;
typedef quad_t quad;






# 1 "/usr/include/sys/select.h" 1 3 4
# 15 "/usr/include/sys/select.h" 3 4
#pragma ident "@(#)select.h	1.17	01/08/15 SMI" 




# 1 "/usr/include/sys/time.h" 1 3 4
# 22 "/usr/include/sys/time.h" 3 4
#pragma ident "@(#)time.h	2.70	02/01/28 SMI" 
# 49 "/usr/include/sys/time.h" 3 4
struct timeval {
        time_t tv_sec;
        suseconds_t tv_usec;
};
# 82 "/usr/include/sys/time.h" 3 4
struct timezone {
        int tz_minuteswest;
        int tz_dsttime;
};
# 100 "/usr/include/sys/time.h" 3 4
# 1 "include/sys/types.h" 1 3 4
# 101 "/usr/include/sys/time.h" 2 3 4
# 153 "/usr/include/sys/time.h" 3 4
struct itimerval {
        struct timeval it_interval;
        struct timeval it_value;
};
# 201 "/usr/include/sys/time.h" 3 4
typedef longlong_t hrtime_t;
# 319 "/usr/include/sys/time.h" 3 4
int adjtime(struct timeval *, struct timeval *);
# 329 "/usr/include/sys/time.h" 3 4
int futimesat(int, const char *, const struct timeval *);
# 340 "/usr/include/sys/time.h" 3 4
int getitimer(int, struct itimerval *);
int utimes(const char *, const struct timeval *);



int setitimer(int, struct itimerval *, struct itimerval *);
# 377 "/usr/include/sys/time.h" 3 4
int settimeofday(struct timeval *, void *);

hrtime_t gethrtime(void);
hrtime_t gethrvtime(void);
# 397 "/usr/include/sys/time.h" 3 4
int gettimeofday(struct timeval *, void *);
# 418 "/usr/include/sys/time.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 16 "/usr/include/time.h" 3 4
#pragma ident "@(#)time.h	1.39	99/08/10 SMI" 



# 1 "/usr/include/iso/time_iso.h" 1 3 4
# 28 "/usr/include/iso/time_iso.h" 3 4
#pragma ident "@(#)time_iso.h	1.1	99/08/09 SMI" 
# 69 "/usr/include/iso/time_iso.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;
};




extern char *asctime(const struct tm *);
extern clock_t clock(void);
extern char *ctime(const time_t *);
extern double difftime(time_t, time_t);
extern struct tm *gmtime(const time_t *);
extern struct tm *localtime(const time_t *);
extern time_t mktime(struct tm *);
extern time_t time(time_t *);
extern size_t strftime(char *, size_t, const char *, const struct tm *);
# 21 "/usr/include/time.h" 2 3 4
# 67 "/usr/include/time.h" 3 4
extern char *strptime(const char *, const char *, struct tm *);
# 83 "/usr/include/time.h" 3 4
# 1 "/usr/include/sys/time_impl.h" 1 3 4
# 19 "/usr/include/sys/time_impl.h" 3 4
#pragma ident "@(#)time_impl.h	1.7	01/09/06 SMI"
# 38 "/usr/include/sys/time_impl.h" 3 4
typedef struct timespec {
        time_t tv_sec;
        long tv_nsec;
} timespec_t;
# 62 "/usr/include/sys/time_impl.h" 3 4
typedef struct timespec timestruc_t;
# 77 "/usr/include/sys/time_impl.h" 3 4
typedef struct itimerspec {
        struct timespec it_interval;
        struct timespec it_value;
} itimerspec_t;
# 84 "/usr/include/time.h" 2 3 4
# 98 "/usr/include/time.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;
        int __sigev_pad2;
};


extern int clock_getres(clockid_t, struct timespec *);
extern int clock_gettime(clockid_t, struct timespec *);
extern int clock_settime(clockid_t, const struct timespec *);
extern int timer_create(clockid_t, struct sigevent *, timer_t *);
extern int timer_delete(timer_t);
extern int timer_getoverrun(timer_t);
extern int timer_gettime(timer_t, struct itimerspec *);
extern int timer_settime(timer_t, int, const struct itimerspec *,
                struct itimerspec *);
extern int nanosleep(const struct timespec *, struct timespec *);




extern void tzset(void);

extern char *tzname[2];


extern long _sysconf(int);






extern long timezone;
extern int daylight;





extern int cftime(char *, char *, const time_t *);
extern int ascftime(char *, const char *, const struct tm *);
extern long altzone;




extern struct tm *getdate(const char *);






extern int getdate_err;
# 419 "/usr/include/sys/time.h" 2 3 4
# 431 "/usr/include/sys/time.h" 3 4
# 1 "/usr/include/sys/select.h" 1 3 4
# 432 "/usr/include/sys/time.h" 2 3 4
# 21 "/usr/include/sys/select.h" 2 3 4
# 48 "/usr/include/sys/select.h" 3 4
typedef long fd_mask;

typedef long fds_mask;
# 76 "/usr/include/sys/select.h" 3 4
typedef struct fd_set {



        long fds_bits[(((1024)+(((sizeof (fds_mask) * 8))-1))/((sizeof (fds_mask) * 8)))];
} fd_set;
# 100 "/usr/include/sys/select.h" 3 4
extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
# 574 "include/sys/types.h" 2 3 4
# 108 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2

# 1 "/usr/include/errno.h" 1 3 4
# 17 "/usr/include/errno.h" 3 4
#pragma ident "@(#)errno.h	1.16	99/07/26 SMI" 





# 1 "/usr/include/sys/errno.h" 1 3 4
# 9 "/usr/include/sys/errno.h" 3 4
#pragma ident "@(#)errno.h	1.20	00/01/12 SMI"
# 24 "/usr/include/errno.h" 2 3 4
# 41 "/usr/include/errno.h" 3 4
extern int errno;
# 110 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2






# 1 "/usr/include/string.h" 1 3 4
# 16 "/usr/include/string.h" 3 4
#pragma ident "@(#)string.h	1.24	99/08/10 SMI" 

# 1 "/usr/include/iso/string_iso.h" 1 3 4
# 28 "/usr/include/iso/string_iso.h" 3 4
#pragma ident "@(#)string_iso.h	1.2	99/11/09 SMI"
# 60 "/usr/include/iso/string_iso.h" 3 4
extern int memcmp(const void *, const void *, size_t);
extern void *memcpy(void *, const void *, size_t);
extern void *memmove(void *, const void *, size_t);
extern void *memset(void *, int, size_t);
extern char *strcat(char *, const char *);
extern int strcmp(const char *, const char *);
extern char *strcpy(char *, const char *);
extern int strcoll(const char *, const char *);
extern size_t strcspn(const char *, const char *);
extern char *strerror(int);
extern size_t strlen(const char *);
extern char *strncat(char *, const char *, size_t);
extern int strncmp(const char *, const char *, size_t);
extern char *strncpy(char *, const char *, size_t);
extern size_t strspn(const char *, const char *);
extern char *strtok(char *, const char *);
extern size_t strxfrm(char *, const char *, size_t);
# 112 "/usr/include/iso/string_iso.h" 3 4
extern void *memchr(const void *, int, size_t);
extern char *strchr(const char *, int);
extern char *strpbrk(const char *, const char *);
extern char *strrchr(const char *, int);
extern char *strstr(const char *, const char *);
# 19 "/usr/include/string.h" 2 3 4
# 63 "/usr/include/string.h" 3 4
extern void *memccpy(void *, const void *, int, size_t);




extern char *strsignal(int);
extern int ffs(int);
extern int strcasecmp(const char *, const char *);
extern int strncasecmp(const char *, const char *, size_t);
extern size_t strlcpy(char *, const char *, size_t);
extern size_t strlcat(char *, const char *, size_t);





extern char *strdup(const char *);
# 117 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2
# 1 "/usr/include/strings.h" 1 3 4
# 9 "/usr/include/strings.h" 3 4
#pragma ident "@(#)strings.h	1.3	96/03/12 SMI"
# 24 "/usr/include/strings.h" 3 4
extern int bcmp(const void *, const void *, size_t);
extern void bcopy(const void *, void *, size_t);
extern void bzero(void *, size_t);

extern char *index(const char *, int);
extern char *rindex(const char *, int);
# 118 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2
# 129 "/opt/local/src/gcc-3.3.3/gcc/system.h"
# 1 "/usr/include/stdlib.h" 1 3 4
# 16 "/usr/include/stdlib.h" 3 4
#pragma ident "@(#)stdlib.h	1.48	00/04/13 SMI" 

# 1 "include/iso/stdlib_iso.h" 1 3 4
# 37 "include/iso/stdlib_iso.h" 3 4
#pragma ident "@(#)stdlib_iso.h	1.3	01/03/09 SMI" 
# 46 "include/iso/stdlib_iso.h" 3 4
extern unsigned char __ctype[];
# 57 "include/iso/stdlib_iso.h" 3 4
typedef struct {
        int quot;
        int rem;
} div_t;

typedef struct {
        long quot;
        long rem;
} ldiv_t;
# 103 "include/iso/stdlib_iso.h" 3 4
extern void abort(void);
extern int abs(int);
extern int atexit(void (*)(void));
extern double atof(const char *);
extern int atoi(const char *);
extern long int atol(const char *);
extern void *bsearch(const void *, const void *, size_t, size_t,
        int (*)(const void *, const void *));
extern void *calloc(size_t, size_t);
extern div_t div(int, int);
extern void exit(int);
extern void free(void *);
extern char *getenv(const char *);
extern long int labs(long);
extern ldiv_t ldiv(long, long);
extern void *malloc(size_t);
extern int mblen(const char *, size_t);
extern size_t mbstowcs(wchar_t *, const char *, size_t);
extern int mbtowc(wchar_t *, const char *, size_t);
extern void qsort(void *, size_t, size_t,
        int (*)(const void *, const void *));
extern int rand(void);
extern void *realloc(void *, size_t);
extern void srand(unsigned int);
extern double strtod(const char *, char **);
extern long int strtol(const char *, char **, int);
extern unsigned long int strtoul(const char *, char **, int);
extern int system(const char *);
extern int wctomb(char *, wchar_t);
extern size_t wcstombs(char *, const wchar_t *, size_t);
# 19 "/usr/include/stdlib.h" 2 3 4
# 68 "/usr/include/stdlib.h" 3 4
typedef struct {
        long long quot;
        long long rem;
} lldiv_t;
# 112 "/usr/include/stdlib.h" 3 4
extern void _exithandle(void);




extern double drand48(void);
extern double erand48(unsigned short *);
extern long jrand48(unsigned short *);
extern void lcong48(unsigned short *);
extern long lrand48(void);
extern long mrand48(void);
extern long nrand48(unsigned short *);
extern unsigned short *seed48(unsigned short *);
extern void srand48(long);
extern int putenv(char *);
extern void setkey(const char *);
# 144 "/usr/include/stdlib.h" 3 4
extern void swab(const char *, char *, ssize_t);





extern int mkstemp(char *);




extern int mkstemp64(char *);





extern long a64l(const char *);
extern char *ecvt(double, int, int *, int *);
extern char *fcvt(double, int, int *, int *);
extern char *gcvt(double, int, char *);
extern int getsubopt(char **, char *const *, char **);
extern int grantpt(int);
extern char *initstate(unsigned, char *, size_t);
extern char *l64a(long);
extern char *mktemp(char *);
extern char *ptsname(int);
extern long random(void);
extern char *realpath(const char *, char *);
extern char *setstate(const char *);
extern void srandom(unsigned);
extern int ttyslot(void);
extern int unlockpt(int);
extern void *valloc(size_t);




extern void closefrom(int);
extern int dup2(int, int);
extern int fdwalk(int (*)(void *, int), void *);
extern char *qecvt(long double, int, int *, int *);
extern char *qfcvt(long double, int, int *, int *);
extern char *qgcvt(long double, int, char *);
extern char *getcwd(char *, size_t);
extern const char *getexecname(void);
extern char *getlogin(void);
extern int getopt(int, char *const *, const char *);
extern char *optarg;
extern int optind, opterr, optopt;
extern char *getpass(const char *);
extern char *getpassphrase(const char *);
extern int getpw(uid_t, char *);
extern int isatty(int);
extern void *memalign(size_t, size_t);
extern char *ttyname(int);


extern long long atoll(const char *);
extern long long llabs(long long);
extern lldiv_t lldiv(long long, long long);
extern char *lltostr(long long, char *);
extern long long strtoll(const char *, char **, int);
extern unsigned long long strtoull(const char *, char **, int);
extern char *ulltostr(unsigned long long, char *);
# 130 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2
# 152 "/opt/local/src/gcc-3.3.3/gcc/system.h"
# 1 "/usr/include/unistd.h" 1 3 4
# 16 "/usr/include/unistd.h" 3 4
#pragma ident "@(#)unistd.h	1.60	01/07/29 SMI" 




# 1 "/usr/include/sys/unistd.h" 1 3 4
# 25 "/usr/include/sys/unistd.h" 3 4
#pragma ident "@(#)unistd.h	1.39	01/07/29 SMI" 
# 22 "/usr/include/unistd.h" 2 3 4
# 171 "/usr/include/unistd.h" 3 4
extern int access(const char *, int);


extern int acct(const char *);

extern unsigned alarm(unsigned);


extern int brk(void *);

extern int chdir(const char *);
extern int chown(const char *, uid_t, gid_t);


extern int chroot(const char *);

extern int close(int);







extern char *ctermid(char *);




extern char *cuserid(char *);
extern int dup(int);
extern int dup2(int, int);




extern int execl(const char *, const char *, ...);
extern int execle(const char *, const char *, ...);
extern int execlp(const char *, const char *, ...);
extern int execv(const char *, char *const *);
extern int execve(const char *, char *const *, char *const *);
extern int execvp(const char *, char *const *);
extern void _exit(int);







extern int fattach(int, const char *);



extern int fchdir(int);
extern int fchown(int, uid_t, gid_t);


extern int fchownat(int, const char *, uid_t, gid_t, int);




extern int fchroot(int);



extern int fdatasync(int);
# 247 "/usr/include/unistd.h" 3 4
extern int fdetach(const char *);

extern pid_t fork(void);


extern pid_t fork1(void);

extern long fpathconf(int, int);


extern int fsync(int);




extern int ftruncate(int, off_t);

extern char *getcwd(char *, size_t);


extern int getdtablesize(void);

extern gid_t getegid(void);
extern uid_t geteuid(void);
extern gid_t getgid(void);
extern int getgroups(int, gid_t *);


extern long gethostid(void);





extern int gethostname(char *, int);

extern char *getlogin(void);
# 293 "/usr/include/unistd.h" 3 4
extern int getpagesize(void);
extern pid_t getpgid(pid_t);

extern pid_t getpid(void);
extern pid_t getppid(void);
extern pid_t getpgrp(void);


char *gettxt(const char *, const char *);



extern pid_t getsid(pid_t);

extern uid_t getuid(void);


extern char *getwd(char *);
# 319 "/usr/include/unistd.h" 3 4
extern int ioctl(int, int, ...);



extern int isaexec(const char *, char *const *, char *const *);
extern int issetugid(void);

extern int isatty(int);
extern int link(const char *, const char *);


extern int lchown(const char *, uid_t, gid_t);




extern int lockf(int, int, off_t);



extern int readlink(const char *, char *, size_t);

extern off_t lseek(int, off_t, int);


extern int nice(int);

extern long pathconf(const char *, int);
extern int pause(void);
extern int pipe(int *);


extern offset_t llseek(int, offset_t, int);




extern off_t tell(int);



extern int mincore(caddr_t, size_t, char *);




extern ssize_t pread(int, void *, size_t, off_t);



extern void profil(unsigned short *, size_t, unsigned long, unsigned int);



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



extern long ptrace(int, pid_t, long, long);




extern ssize_t pwrite(int, const void *, size_t, off_t);

extern ssize_t read(int, void *, size_t);


extern int rename(const char *, const char *);


extern int renameat(int, const char *, int, const char *);




extern int resolvepath(const char *, char *, size_t);

extern int rmdir(const char *);


extern void *sbrk(intptr_t);

extern int setgid(gid_t);


extern int setegid(gid_t);



extern int setgroups(int, const gid_t *);

extern int setpgid(pid_t, pid_t);


extern pid_t setpgrp(void);
extern int setregid(gid_t, gid_t);
extern int setreuid(uid_t, uid_t);

extern pid_t setsid(void);
extern int setuid(uid_t);


extern int seteuid(uid_t);

extern unsigned sleep(unsigned);


extern int stime(const time_t *);







extern int symlink(const char *, const char *);
extern void sync(void);

extern long sysconf(int);
# 447 "/usr/include/unistd.h" 3 4
extern pid_t tcgetpgrp(int);
extern int tcsetpgrp(int, pid_t);


extern off_t tell(int);




extern int truncate(const char *, off_t);

extern char *ttyname(int);


extern useconds_t ualarm(useconds_t, useconds_t);

extern int unlink(const char *);


extern int unlinkat(int, const char *, int);



extern int usleep(useconds_t);



extern pid_t vfork(void);



extern void vhangup(void);

extern ssize_t write(int, const void *, size_t);


extern void yield(void);





extern int ftruncate64(int, off64_t);
extern off64_t lseek64(int, off64_t, int);
extern ssize_t pread64(int, void *, size_t, off64_t);
extern ssize_t pwrite64(int, const void *, size_t, off64_t);
extern off64_t tell64(int);
extern int truncate64(const char *, off64_t);
extern int lockf64(int, int, off64_t);
# 808 "/usr/include/unistd.h" 3 4
#pragma unknown_control_flow(vfork)
# 153 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2



# 1 "/usr/include/sys/param.h" 1 3 4
# 37 "/usr/include/sys/param.h" 3 4
#pragma ident "@(#)param.h	1.77	02/01/22 SMI"
# 430 "/usr/include/sys/param.h" 3 4
extern long _sysconf(int);
# 157 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2





# 1 "include/limits.h" 1 3 4
# 11 "include/limits.h" 3 4
# 1 "include/syslimits.h" 1 3 4
# 25 "include/syslimits.h" 3 4
#pragma ident "@(#)limits.h	1.52	02/01/08 SMI" 



# 1 "/usr/include/iso/limits_iso.h" 1 3 4
# 28 "/usr/include/iso/limits_iso.h" 3 4
#pragma ident "@(#)limits_iso.h	1.1	99/08/09 SMI" 
# 30 "include/syslimits.h" 2 3 4
# 41 "include/syslimits.h" 3 4
# 1 "/usr/include/sys/int_limits.h" 1 3 4
# 9 "/usr/include/sys/int_limits.h" 3 4
#pragma ident "@(#)int_limits.h	1.6	99/08/06 SMI"
# 42 "include/syslimits.h" 2 3 4
# 12 "include/limits.h" 2 3 4
# 163 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2



# 1 "/opt/local/src/gcc-3.3.3/gcc/hwint.h" 1
# 167 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2
# 208 "/opt/local/src/gcc-3.3.3/gcc/system.h"
# 1 "/usr/include/fcntl.h" 1 3 4
# 16 "/usr/include/fcntl.h" 3 4
#pragma ident "@(#)fcntl.h	1.15	01/07/29 SMI" 







# 1 "/usr/include/sys/fcntl.h" 1 3 4
# 16 "/usr/include/sys/fcntl.h" 3 4
#pragma ident "@(#)fcntl.h	1.48	01/12/17 SMI" 
# 172 "/usr/include/sys/fcntl.h" 3 4
typedef struct flock {
        short l_type;
        short l_whence;
        off_t l_start;
        off_t l_len;
        int l_sysid;
        pid_t l_pid;
        long l_pad[4];
} flock_t;
# 202 "/usr/include/sys/fcntl.h" 3 4
typedef struct flock64 {
        short l_type;
        short l_whence;
        off64_t l_start;
        off64_t l_len;
        int l_sysid;
        pid_t l_pid;
        long l_pad[4];
} flock64_t;
# 280 "/usr/include/sys/fcntl.h" 3 4
typedef struct fshare {
        short f_access;
        short f_deny;
        int f_id;
} fshare_t;
# 25 "/usr/include/fcntl.h" 2 3 4
# 92 "/usr/include/fcntl.h" 3 4
extern int fcntl(int, int, ...);
extern int open(const char *, int, ...);
extern int creat(const char *, mode_t);


extern int openat(int, const char *, int, ...);
extern int attropen(const char *, const char *, int, ...);



extern int directio(int, int);





extern int open64(const char *, int, ...);
extern int creat64(const char *, mode_t);


extern int openat64(int, const char *, int, ...);
extern int attropen64(const char *, const char *, int, ...);
# 209 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2
# 246 "/opt/local/src/gcc-3.3.3/gcc/system.h"
# 1 "/usr/include/sys/wait.h" 1 3 4
# 16 "/usr/include/sys/wait.h" 3 4
#pragma ident "@(#)wait.h	1.21	97/04/08 SMI" 







# 1 "/usr/include/sys/resource.h" 1 3 4
# 16 "/usr/include/sys/resource.h" 3 4
#pragma ident "@(#)resource.h	1.27	01/04/05 SMI" 
# 69 "/usr/include/sys/resource.h" 3 4
typedef unsigned long rlim_t;
# 104 "/usr/include/sys/resource.h" 3 4
struct rlimit {
        rlim_t rlim_cur;
        rlim_t rlim_max;
};




typedef u_longlong_t rlim64_t;





struct rlimit64 {
        rlim64_t rlim_cur;
        rlim64_t rlim_max;
};
# 141 "/usr/include/sys/resource.h" 3 4
struct rusage {
        struct timeval ru_utime;
        struct timeval ru_stime;
        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;
};
# 191 "/usr/include/sys/resource.h" 3 4
extern int setrlimit(int, const struct rlimit *);
extern int getrlimit(int, struct rlimit *);




extern int setrlimit64(int, const struct rlimit64 *);
extern int getrlimit64(int, struct rlimit64 *);


extern int getpriority(int, id_t);
extern int setpriority(int, id_t, int);
extern int getrusage(int, struct rusage *);
# 25 "/usr/include/sys/wait.h" 2 3 4
# 1 "/usr/include/sys/siginfo.h" 1 3 4
# 16 "/usr/include/sys/siginfo.h" 3 4
#pragma ident "@(#)siginfo.h	1.55	01/04/05 SMI" 
# 127 "/usr/include/sys/siginfo.h" 3 4
# 1 "/usr/include/sys/machsig.h" 1 3 4
# 16 "/usr/include/sys/machsig.h" 3 4
#pragma ident "@(#)machsig.h	1.15	99/08/15 SMI"
# 128 "/usr/include/sys/siginfo.h" 2 3 4
# 222 "/usr/include/sys/siginfo.h" 3 4
typedef struct siginfo {



        int si_signo;
        int si_code;
        int si_errno;



        union {

                int __pad[((128 / sizeof (int)) - 3)];

                struct {
                        pid_t __pid;
                        union {
                                struct {
                                        uid_t __uid;


                                        union sigval __value;



                                } __kill;
                                struct {
                                        clock_t __utime;
                                        int __status;
                                        clock_t __stime;
                                } __cld;
                        } __pdata;
                } __proc;

                struct {
                        void *__addr;
                        int __trapno;
                        caddr_t __pc;
                } __fault;

                struct {

                        int __fd;
                        long __band;
                } __file;

                struct {
                        caddr_t __faddr;


                        timestruc_t __tstamp;



                        short __syscall;
                        char __nsysarg;
                        char __fault;
                        long __sysarg[8];
                        int __mstate[10];
                } __prof;

                struct {
                        int32_t __entity;
                } __rctl;
        } __data;

} siginfo_t;
# 362 "/usr/include/sys/siginfo.h" 3 4
typedef struct k_siginfo {
        int si_signo;
        int si_code;
        int si_errno;



        union {
                struct {
                        pid_t __pid;
                        union {
                                struct {
                                        uid_t __uid;
                                        union sigval __value;
                                } __kill;
                                struct {
                                        clock_t __utime;
                                        int __status;
                                        clock_t __stime;
                                } __cld;
                        } __pdata;
                } __proc;

                struct {
                        void *__addr;
                        int __trapno;
                        caddr_t __pc;
                } __fault;

                struct {

                        int __fd;
                        long __band;
                } __file;

                struct {
                        caddr_t __faddr;



                        timestruc_t __tstamp;



                        short __syscall;
                        char __nsysarg;
                        char __fault;



                } __prof;

                struct {
                        int32_t __entity;
                } __rctl;

        } __data;

} k_siginfo_t;

typedef struct sigqueue {
        struct sigqueue *sq_next;
        k_siginfo_t sq_info;
        void (*sq_func)(struct sigqueue *);
        void *sq_backptr;

} sigqueue_t;
# 26 "/usr/include/sys/wait.h" 2 3 4
# 1 "/usr/include/sys/procset.h" 1 3 4
# 16 "/usr/include/sys/procset.h" 3 4
#pragma ident "@(#)procset.h	1.20	00/01/11 SMI" 
# 41 "/usr/include/sys/procset.h" 3 4
typedef enum

        idtype

                {
        P_PID,
        P_PPID,
        P_PGID,

        P_SID,
        P_CID,
        P_UID,
        P_GID,
        P_ALL,
        P_LWPID,
        P_TASKID,
        P_PROJID
} idtype_t;
# 67 "/usr/include/sys/procset.h" 3 4
typedef enum idop {
        POP_DIFF,


        POP_AND,


        POP_OR,


        POP_XOR


} idop_t;







typedef struct procset {
        idop_t p_op;




        idtype_t p_lidtype;


        id_t p_lid;

        idtype_t p_ridtype;


        id_t p_rid;
} procset_t;
# 27 "/usr/include/sys/wait.h" 2 3 4
# 86 "/usr/include/sys/wait.h" 3 4
extern pid_t wait(int *);
extern pid_t waitpid(pid_t, int *, int);


extern int waitid(idtype_t, id_t, siginfo_t *, int);
extern pid_t wait3(int *, int, struct rusage *);




extern pid_t wait4(pid_t, int *, int, struct rusage *);
# 247 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2
# 313 "/opt/local/src/gcc-3.3.3/gcc/system.h"
# 1 "/usr/include/malloc.h" 1 3 4
# 11 "/usr/include/malloc.h" 3 4
#pragma ident "@(#)malloc.h	1.11	97/08/23 SMI" 
# 31 "/usr/include/malloc.h" 3 4
struct mallinfo {
        unsigned long arena;
        unsigned long ordblks;
        unsigned long smblks;
        unsigned long hblks;
        unsigned long hblkhd;
        unsigned long usmblks;
        unsigned long fsmblks;
        unsigned long uordblks;
        unsigned long fordblks;
        unsigned long keepcost;
};



void *malloc(size_t);
void free(void *);
void *realloc(void *, size_t);
int mallopt(int, int);
struct mallinfo mallinfo(void);
void *calloc(size_t, size_t);
# 314 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2
# 382 "/opt/local/src/gcc-3.3.3/gcc/system.h"
# 1 "/usr/include/sys/stat.h" 1 3 4
# 18 "/usr/include/sys/stat.h" 3 4
#pragma ident "@(#)stat.h	1.3	01/07/29 SMI"
# 250 "/usr/include/sys/stat.h" 3 4
struct stat {
        dev_t st_dev;
        long st_pad1[3];
        ino_t st_ino;
        mode_t st_mode;
        nlink_t st_nlink;
        uid_t st_uid;
        gid_t st_gid;
        dev_t st_rdev;
        long st_pad2[2];
        off_t st_size;

        long st_pad3;



        timestruc_t st_atim;
        timestruc_t st_mtim;
        timestruc_t st_ctim;





        blksize_t st_blksize;
        blkcnt_t st_blocks;
        char st_fstype[16];
        long st_pad4[8];
};
# 313 "/usr/include/sys/stat.h" 3 4
struct stat64 {
        dev_t st_dev;
        long st_pad1[3];
        ino64_t st_ino;
        mode_t st_mode;
        nlink_t st_nlink;
        uid_t st_uid;
        gid_t st_gid;
        dev_t st_rdev;
        long st_pad2[2];
        off64_t st_size;


        timestruc_t st_atim;
        timestruc_t st_mtim;
        timestruc_t st_ctim;





        blksize_t st_blksize;
        blkcnt64_t st_blocks;
        char st_fstype[16];
        long st_pad4[8];
};
# 486 "/usr/include/sys/stat.h" 3 4
extern int fchmod(int, mode_t);


extern int chmod(const char *, mode_t);
extern int mkdir(const char *, mode_t);
extern int mkfifo(const char *, mode_t);
extern mode_t umask(mode_t);




extern int fstat64(int, struct stat64 *);
extern int stat64(const char *, struct stat64 *);
extern int lstat64(const char *, struct stat64 *);


extern int fstatat64(int, const char *, struct stat64 *, int);
# 533 "/usr/include/sys/stat.h" 3 4
# 1 "/usr/include/sys/stat_impl.h" 1 3 4
# 9 "/usr/include/sys/stat_impl.h" 3 4
#pragma ident "@(#)stat_impl.h	1.2	01/07/29 SMI"
# 26 "/usr/include/sys/stat_impl.h" 3 4
extern int fstat(int, struct stat *);
extern int stat(const char *, struct stat *);


extern int fstatat(int, const char *, struct stat *, int);




extern int lstat(const char *, struct stat *);
extern int mknod(const char *, mode_t, dev_t);
# 534 "/usr/include/sys/stat.h" 2 3 4
# 383 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2
# 491 "/opt/local/src/gcc-3.3.3/gcc/system.h"
# 1 "/opt/local/src/gcc-3.3.3/include/libiberty.h" 1
# 46 "/opt/local/src/gcc-3.3.3/include/libiberty.h"
# 1 "include/stddef.h" 1 3 4
# 47 "/opt/local/src/gcc-3.3.3/include/libiberty.h" 2







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



extern void freeargv (char **);




extern char **dupargv (char **) __attribute__ ((__malloc__));
# 78 "/opt/local/src/gcc-3.3.3/include/libiberty.h"
extern char *basename (const char *);







extern const char *lbasename (const char *);



extern char *lrealpath (const char *);





extern char *concat (const char *, ...) __attribute__ ((__malloc__));
# 105 "/opt/local/src/gcc-3.3.3/include/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;
# 141 "/opt/local/src/gcc-3.3.3/include/libiberty.h"
extern int fdmatch (int fd1, int fd2);




extern char * getpwd (void);



extern long get_run_time (void);




extern char *make_relative_prefix (const char *, const char *, const char *);




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);
# 203 "/opt/local/src/gcc-3.3.3/include/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 double physmem_total (void);
extern double physmem_available (void);





extern const char _hex_value[256];
extern void hex_init (void);
# 274 "/opt/local/src/gcc-3.3.3/include/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))) __attribute__ ((__nonnull__ (2)));






extern int vasprintf (char **, const char *, va_list)
  __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__nonnull__ (2)));
# 304 "/opt/local/src/gcc-3.3.3/include/libiberty.h"
extern void * C_alloca (size_t) __attribute__ ((__malloc__));
# 492 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2
# 1 "/opt/local/src/gcc-3.3.3/include/symcat.h" 1
# 493 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2
# 548 "/opt/local/src/gcc-3.3.3/gcc/system.h"
# 1 "include/stdbool.h" 1 3 4
# 549 "/opt/local/src/gcc-3.3.3/gcc/system.h" 2
# 585 "/opt/local/src/gcc-3.3.3/gcc/system.h"
        
# 594 "/opt/local/src/gcc-3.3.3/gcc/system.h"
        
# 587 "/opt/local/src/gcc-3.3.3/gcc/system.h"
                            
# 598 "/opt/local/src/gcc-3.3.3/gcc/system.h"
        
# 381 "/opt/local/src/gcc-3.3.3/gcc/system.h"
                  
# 614 "/opt/local/src/gcc-3.3.3/gcc/system.h"
        
# 381 "/opt/local/src/gcc-3.3.3/gcc/system.h"
                                                 
# 629 "/opt/local/src/gcc-3.3.3/gcc/system.h"
        
# 616 "/opt/local/src/gcc-3.3.3/gcc/system.h"
       
# 640 "/opt/local/src/gcc-3.3.3/gcc/system.h"
        
# 616 "/opt/local/src/gcc-3.3.3/gcc/system.h"
                            
# 91 "/opt/local/src/gcc-3.3.3/gcc/reload.c" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/rtl.h" 1
# 25 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
struct function;

# 1 "/opt/local/src/gcc-3.3.3/gcc/machmode.h" 1
# 29 "/opt/local/src/gcc-3.3.3/gcc/machmode.h"
enum machine_mode {
# 1 "/opt/local/src/gcc-3.3.3/gcc/machmode.def" 1
# 74 "/opt/local/src/gcc-3.3.3/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,





V1DImode,
V2QImode,
V2HImode,
V2SImode,
V2DImode,

V4QImode,
V4HImode,
V4SImode,
V4DImode,

V8QImode,
V8HImode,
V8SImode,
V8DImode,

V16QImode,

V2SFmode,
V2DFmode,

V4SFmode,
V4DFmode,

V8SFmode,
V8DFmode,
V16SFmode,



BLKmode,
# 158 "/opt/local/src/gcc-3.3.3/gcc/machmode.def"
CCmode,





# 1 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc-modes.def" 1
# 37 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc-modes.def"
CCXmode,
CC_NOOVmode,
CCX_NOOVmode,
CCFPmode,
CCFPEmode,
# 165 "/opt/local/src/gcc-3.3.3/gcc/machmode.def" 2
# 31 "/opt/local/src/gcc-3.3.3/gcc/machmode.h" 2
MAX_MACHINE_MODE };
# 41 "/opt/local/src/gcc-3.3.3/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];
# 89 "/opt/local/src/gcc-3.3.3/gcc/machmode.h"
extern const unsigned char mode_size[(int) MAX_MACHINE_MODE];




extern const unsigned char mode_unit_size[(int) MAX_MACHINE_MODE];
# 105 "/opt/local/src/gcc-3.3.3/gcc/machmode.h"
extern const unsigned short mode_bitsize[(int) MAX_MACHINE_MODE];
# 115 "/opt/local/src/gcc-3.3.3/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];
# 132 "/opt/local/src/gcc-3.3.3/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 "/opt/local/src/gcc-3.3.3/gcc/rtl.h" 2
# 41 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
enum rtx_code {


# 1 "/opt/local/src/gcc-3.3.3/gcc/rtl.def" 1
# 70 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
UNKNOWN ,



NIL ,




INCLUDE ,






EXPR_LIST ,



INSN_LIST ,
# 129 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
MATCH_OPERAND ,






MATCH_SCRATCH ,




MATCH_DUP ,







MATCH_OPERATOR ,
# 158 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
MATCH_PARALLEL ,




MATCH_OP_DUP ,




MATCH_PAR_DUP ,




MATCH_INSN ,
# 192 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
DEFINE_INSN ,







DEFINE_PEEPHOLE ,
# 211 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
DEFINE_SPLIT ,
# 239 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
DEFINE_INSN_AND_SPLIT ,



DEFINE_PEEPHOLE2 ,



DEFINE_COMBINE ,
# 260 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
DEFINE_EXPAND ,
# 276 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
DEFINE_DELAY ,
# 317 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
DEFINE_FUNCTION_UNIT ,


DEFINE_ASM_ATTRIBUTES ,
# 333 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
DEFINE_COND_EXEC ,





SEQUENCE ,


ADDRESS ,
# 358 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
DEFINE_CPU_UNIT ,





DEFINE_QUERY_CPU_UNIT ,
# 374 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
EXCLUSION_SET ,
# 383 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
PRESENCE_SET ,
# 393 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
ABSENCE_SET ,
# 404 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
DEFINE_BYPASS ,
# 413 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
DEFINE_AUTOMATON ,
# 433 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
AUTOMATA_OPTION ,
# 442 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
DEFINE_RESERVATION ,
# 490 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
DEFINE_INSN_RESERVATION ,
# 501 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
DEFINE_ATTR ,


ATTR ,







SET_ATTR ,
# 527 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
SET_ATTR_ALTERNATIVE ,




EQ_ATTR ,
# 542 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
ATTR_FLAG ,
# 555 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
INSN ,



JUMP_INSN ,






CALL_INSN ,


BARRIER ,







CODE_LABEL ,
# 586 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
NOTE ,
# 599 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
COND_EXEC ,


PARALLEL ,







ASM_INPUT ,
# 624 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
ASM_OPERANDS ,
# 635 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
UNSPEC ,


UNSPEC_VOLATILE ,



ADDR_VEC ,
# 667 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
ADDR_DIFF_VEC ,
# 678 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
PREFETCH ,
# 690 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
SET ,




USE ,




CLOBBER ,





CALL ,



RETURN ,





TRAP_IF ,




RESX ,






CONST_INT ,




CONST_DOUBLE ,


CONST_VECTOR ,


CONST_STRING ,





CONST ,



PC ,


VALUE ,
# 761 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
REG ,






SCRATCH ,
# 778 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
SUBREG ,
# 791 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
STRICT_LOW_PART ,





CONCAT ,




MEM ,





LABEL_REF ,





SYMBOL_REF ,






CC0 ,
# 830 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
ADDRESSOF ,
# 848 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
QUEUED ,
# 860 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
IF_THEN_ELSE ,
# 869 "/opt/local/src/gcc-3.3.3/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 ,
# 928 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
PRE_DEC ,
PRE_INC ,
POST_DEC ,
POST_INC ,
# 945 "/opt/local/src/gcc-3.3.3/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 ,
# 1029 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
SIGN_EXTRACT ,


ZERO_EXTRACT ,




HIGH ,



LO_SUM ,
# 1054 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
RANGE_INFO ,
# 1069 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
RANGE_REG ,





RANGE_VAR ,



RANGE_LIVE ,




CONSTANT_P_RTX ,
# 1105 "/opt/local/src/gcc-3.3.3/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 ,
# 1161 "/opt/local/src/gcc-3.3.3/gcc/rtl.def"
PHI ,
# 45 "/opt/local/src/gcc-3.3.3/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)];


extern const unsigned char rtx_next[((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;
# 97 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
typedef struct mem_attrs
{
  long long alias;
  tree expr;
  rtx offset;
  rtx size;
  unsigned int align;
} mem_attrs;



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;
};
typedef union rtunion_def rtunion;



struct rtx_def

{

  enum rtx_code code: 16;


  enum machine_mode mode : 8;






  unsigned int jump : 1;


  unsigned int call : 1;







  unsigned int unchanging : 1;
# 162 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
  unsigned int volatil : 1;
# 180 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
  unsigned int in_struct : 1;






  unsigned int used : 1;




  unsigned integrated : 1;
# 201 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
  unsigned frame_related : 1;




  rtunion fld[1];

};
# 241 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
struct rtvec_def {
  int num_elem;
  rtx elem[1];
};
# 604 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
enum reg_note
{



  REG_DEAD = 1,


  REG_INC,
# 623 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
  REG_EQUIV,




  REG_EQUAL,





  REG_WAS_0,





  REG_RETVAL,




  REG_LIBCALL,






  REG_NONNEG,



  REG_NO_CONFLICT,


  REG_UNUSED,
# 668 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
  REG_CC_SETTER, REG_CC_USER,




  REG_LABEL,





  REG_DEP_ANTI, REG_DEP_OUTPUT,





  REG_BR_PROB,



  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
};
# 755 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
extern const char * const reg_note_name[];
# 815 "/opt/local/src/gcc-3.3.3/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_BASIC_BLOCK,



  NOTE_INSN_EXPECTED_VALUE,


  NOTE_INSN_PREDICTION,

  NOTE_INSN_MAX
};



extern const char * const note_insn_name[NOTE_INSN_MAX - NOTE_INSN_BIAS];
# 905 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
enum label_kind
{
  LABEL_NORMAL = 0,
  LABEL_STATIC_ENTRY,
  LABEL_GLOBAL_ENTRY,
  LABEL_WEAK_ENTRY
};
# 1032 "/opt/local/src/gcc-3.3.3/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 _Bool subreg_offset_representable_p (unsigned int, enum machine_mode, unsigned int, enum machine_mode);



extern unsigned int subreg_regno (rtx);
# 1339 "/opt/local/src/gcc-3.3.3/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 emit_copy_of_insn_after (rtx, rtx);


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 rtx get_first_nonnote_insn (void);
extern rtx get_last_nonnote_insn (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 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_insn_before_scope (rtx, rtx, tree);
extern rtx emit_jump_insn_before (rtx, rtx);
extern rtx emit_jump_insn_before_scope (rtx, rtx, tree);
extern rtx emit_call_insn_before (rtx, rtx);
extern rtx emit_call_insn_before_scope (rtx, rtx, tree);
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_insn_after_scope (rtx, rtx, tree);
extern rtx emit_jump_insn_after (rtx, rtx);
extern rtx emit_jump_insn_after_scope (rtx, rtx, tree);
extern rtx emit_call_insn_after (rtx, rtx);
extern rtx emit_call_insn_after_scope (rtx, rtx, tree);
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_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 tree choose_inner_scope (tree, tree);


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, int);


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



extern rtx set_unique_reg_note (rtx, enum reg_note, rtx);
# 1585 "/opt/local/src/gcc-3.3.3/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 global_reg_mentioned_p (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 _Bool keep_with_call_p (rtx);



extern rtx find_use_as_address (rtx, rtx, long long);



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];
# 1725 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
enum global_rtl_index
{
  GR_PC,
  GR_CC0,
  GR_STACK_POINTER,
  GR_FRAME_POINTER,




  GR_ARG_POINTER = GR_FRAME_POINTER,




  GR_HARD_FRAME_POINTER,
# 1749 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
  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];
# 1773 "/opt/local/src/gcc-3.3.3/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 "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_ss (enum rtx_code, enum machine_mode mode, const char *arg0, const char *arg1);

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


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_sE (enum rtx_code, enum machine_mode mode, const char *arg0, rtvec arg1);

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




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




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





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

extern rtx gen_rtx_fmt_iuuB00is (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, struct basic_block_def *arg3, int 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_www (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);
# 1784 "/opt/local/src/gcc-3.3.3/gcc/rtl.h" 2







extern rtx gen_rtx_CONST_INT (enum machine_mode, long long);
extern rtx gen_rtx_CONST_VECTOR (enum machine_mode, rtvec);
extern rtx gen_raw_REG (enum machine_mode, int);
extern rtx gen_rtx_REG (enum machine_mode, unsigned);
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);
# 1868 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
extern rtx find_next_ref (rtx, rtx);

extern rtx output_constant_def (tree, int);
# 1880 "/opt/local/src/gcc-3.3.3/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;
# 1926 "/opt/local/src/gcc-3.3.3/gcc/rtl.h"
extern int rtx_cost (rtx, enum rtx_code);
extern int address_cost (rtx, enum machine_mode);
extern int delete_trivially_dead_insns (rtx, 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 tablejump_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 unsigned int reg_or_subregno (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 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_first_insn (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 rtx delete_insn_and_edges (rtx);
extern void delete_insn_chain_and_edges (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 delete_dead_jumptables (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_fake_stack_mems (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 _Bool invalid_mode_change_p (unsigned int, enum reg_class, enum machine_mode);



extern int 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 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);

extern void tracer (void);
# 92 "/opt/local/src/gcc-3.3.3/gcc/reload.c" 2
# 1 "tm_p.h" 1

# 1 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc-protos.h" 1
# 27 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc-protos.h"
extern _Bool sparc_emitting_epilogue;
# 55 "/opt/local/src/gcc-3.3.3/gcc/config/sparc/sparc-protos.h"
extern void load_pic_register (void);
extern void order_regs_for_local_alloc (void);
extern int compute_frame_size (int, int);
extern int check_pic (int);
extern int short_branch (int, int);
extern int sparc_flat_epilogue_delay_slots (void);
extern unsigned long sparc_flat_compute_frame_size (int);
extern void sparc_profile_hook (int);
extern void sparc_override_options (void);
extern int leaf_return_peephole_ok (void);
extern void sparc_output_scratch_registers (FILE *);
extern void sparc_flat_save_restore (FILE *, const char *, unsigned int, unsigned long, unsigned long, const char *, const char *, unsigned long);





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

extern rtx gen_compare_reg (enum rtx_code code, rtx, rtx);
extern void sparc_emit_float_lib_cmp (rtx, rtx, enum rtx_code);
extern void sparc_emit_floatunsdi (rtx [2]);
extern void emit_tfmode_binop (enum rtx_code, rtx *);
extern void emit_tfmode_unop (enum rtx_code, rtx *);
extern void emit_tfmode_cvt (enum rtx_code, rtx *);

extern int gen_v9_scc (enum rtx_code, rtx *);
extern void sparc_initialize_trampoline (rtx, rtx, rtx);
extern void sparc64_initialize_trampoline (rtx, rtx, rtx);
extern rtx legitimize_pic_address (rtx, enum machine_mode, rtx);
extern void sparc_defer_case_vector (rtx, rtx, int);
extern void sparc_emit_set_const32 (rtx, rtx);
extern void sparc_emit_set_const64 (rtx, rtx);
extern void sparc_emit_set_symbolic_const64 (rtx, rtx, rtx);
extern int sparc_splitdi_legitimate (rtx, rtx);
extern int sparc_absnegfloat_split_legitimate (rtx, rtx);
extern char *output_cbranch (rtx, rtx, int, int, int, int, rtx);
extern const char *output_sibcall (rtx, rtx);
extern char *output_v9branch (rtx, rtx, int, int, int, int, int, rtx);

extern void emit_v9_brxx_insn (enum rtx_code, rtx, rtx);
extern void print_operand (FILE *, rtx, int);
extern int mems_ok_for_ldd_peep (rtx, rtx, rtx);
extern int arith_double_4096_operand (rtx, enum machine_mode);
extern int arith_4096_operand (rtx, enum machine_mode);
extern int zero_operand (rtx, enum machine_mode);
extern int fp_zero_operand (rtx, enum machine_mode);
extern int reg_or_0_operand (rtx, enum machine_mode);
extern int empty_delay_slot (rtx);
extern int eligible_for_epilogue_delay (rtx, int);
extern int eligible_for_sibcall_delay (rtx);
extern int emit_move_sequence (rtx, enum machine_mode);
extern int fp_sethi_p (rtx);
extern int fp_mov_p (rtx);
extern int fp_high_losum_p (rtx);
extern int mem_min_alignment (rtx, int);
extern int pic_address_needs_scratch (rtx);
extern int reg_unused_after (rtx, rtx);
extern int register_ok_for_ldd (rtx);
extern int registers_ok_for_ldd_peep (rtx, rtx);
extern int sparc_flat_eligible_for_epilogue_delay (rtx, int);
extern int v9_regcmp_p (enum rtx_code);
extern char *sparc_v8plus_shift (rtx *, rtx, const char *);


extern int sparc_check_64 (rtx, rtx);
extern rtx gen_df_reg (rtx, int);
extern int sparc_extra_constraint_check (rtx, int, int);
extern int sparc_rtx_costs (rtx, enum rtx_code, enum rtx_code);
# 3 "tm_p.h" 2

# 1 "tm-preds.h" 1







extern int reg_or_0_operand (rtx, enum machine_mode);
extern int const1_operand (rtx, enum machine_mode);
extern int fp_zero_operand (rtx, enum machine_mode);
extern int fp_register_operand (rtx, enum machine_mode);
extern int intreg_operand (rtx, enum machine_mode);
extern int fcc_reg_operand (rtx, enum machine_mode);
extern int fcc0_reg_operand (rtx, enum machine_mode);
extern int icc_or_fcc_reg_operand (rtx, enum machine_mode);
extern int restore_operand (rtx, enum machine_mode);
extern int call_operand (rtx, enum machine_mode);
extern int call_operand_address (rtx, enum machine_mode);
extern int symbolic_operand (rtx, enum machine_mode);
extern int symbolic_memory_operand (rtx, enum machine_mode);
extern int label_ref_operand (rtx, enum machine_mode);
extern int sp64_medium_pic_operand (rtx, enum machine_mode);
extern int data_segment_operand (rtx, enum machine_mode);
extern int text_segment_operand (rtx, enum machine_mode);
extern int reg_or_nonsymb_mem_operand (rtx, enum machine_mode);
extern int splittable_symbolic_memory_operand (rtx, enum machine_mode);
extern int splittable_immediate_memory_operand (rtx, enum machine_mode);
extern int eq_or_neq (rtx, enum machine_mode);
extern int normal_comp_operator (rtx, enum machine_mode);
extern int noov_compare_op (rtx, enum machine_mode);
extern int noov_compare64_op (rtx, enum machine_mode);
extern int v9_regcmp_op (rtx, enum machine_mode);
extern int extend_op (rtx, enum machine_mode);
extern int cc_arithop (rtx, enum machine_mode);
extern int cc_arithopn (rtx, enum machine_mode);
extern int arith_operand (rtx, enum machine_mode);
extern int arith_add_operand (rtx, enum machine_mode);
extern int arith11_operand (rtx, enum machine_mode);
extern int arith10_operand (rtx, enum machine_mode);
extern int arith_double_operand (rtx, enum machine_mode);
extern int arith_double_add_operand (rtx, enum machine_mode);
extern int arith11_double_operand (rtx, enum machine_mode);
extern int arith10_double_operand (rtx, enum machine_mode);
extern int small_int (rtx, enum machine_mode);
extern int small_int_or_double (rtx, enum machine_mode);
extern int uns_small_int (rtx, enum machine_mode);
extern int uns_arith_operand (rtx, enum machine_mode);
extern int clobbered_register (rtx, enum machine_mode);
extern int input_operand (rtx, enum machine_mode);
extern int const64_operand (rtx, enum machine_mode);
extern int const64_high_operand (rtx, enum machine_mode);
# 5 "tm_p.h" 2
# 93 "/opt/local/src/gcc-3.3.3/gcc/reload.c" 2
# 1 "insn-config.h" 1
# 94 "/opt/local/src/gcc-3.3.3/gcc/reload.c" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/expr.h" 1
# 57 "/opt/local/src/gcc-3.3.3/gcc/expr.h"
enum expand_modifier {EXPAND_NORMAL = 0, EXPAND_STACK_PARM = 2, EXPAND_SUM,
                      EXPAND_CONST_ADDRESS, EXPAND_INITIALIZER, EXPAND_WRITE,
                      EXPAND_MEMORY};
# 125 "/opt/local/src/gcc-3.3.3/gcc/expr.h"
enum direction {none, upward, downward};
# 262 "/opt/local/src/gcc-3.3.3/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);
# 322 "/opt/local/src/gcc-3.3.3/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 (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 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);




enum block_op_methods
{
  BLOCK_OP_NORMAL,
  BLOCK_OP_NO_LIBCALL,
  BLOCK_OP_CALL_PARM
};

extern rtx emit_block_move (rtx, rtx, rtx, enum block_op_methods);



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



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


extern rtx gen_group_rtx (rtx);



extern void emit_group_load (rtx, rtx, int);



extern void emit_group_move (rtx, rtx);



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);
# 469 "/opt/local/src/gcc-3.3.3/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);
# 503 "/opt/local/src/gcc-3.3.3/gcc/expr.h"
extern rtx force_operand (rtx, rtx);
# 512 "/opt/local/src/gcc-3.3.3/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);
# 548 "/opt/local/src/gcc-3.3.3/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);
# 605 "/opt/local/src/gcc-3.3.3/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 void set_mem_size (rtx, rtx);





extern rtx change_address (rtx, enum machine_mode, rtx);
# 660 "/opt/local/src/gcc-3.3.3/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);
# 706 "/opt/local/src/gcc-3.3.3/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);
# 742 "/opt/local/src/gcc-3.3.3/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 _Bool const_mult_add_overflow_p (rtx, rtx, rtx, enum machine_mode, 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);
# 824 "/opt/local/src/gcc-3.3.3/gcc/expr.h"
extern int vector_mode_valid_p (enum machine_mode);
# 95 "/opt/local/src/gcc-3.3.3/gcc/reload.c" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/optabs.h" 1
# 24 "/opt/local/src/gcc-3.3.3/gcc/optabs.h"
# 1 "insn-codes.h" 1






enum insn_code {
  CODE_FOR_get_pc = 45,
  CODE_FOR_movsi_lo_sum_pic = 54,
  CODE_FOR_movsi_high_pic = 55,
  CODE_FOR_movdi_lo_sum_pic = 65,
  CODE_FOR_movdi_high_pic = 66,
  CODE_FOR_seth44 = 70,
  CODE_FOR_setm44 = 71,
  CODE_FOR_setl44 = 72,
  CODE_FOR_sethh = 73,
  CODE_FOR_setlm = 74,
  CODE_FOR_sethm = 75,
  CODE_FOR_setlo = 76,
  CODE_FOR_embmedany_sethi = 77,
  CODE_FOR_embmedany_losum = 78,
  CODE_FOR_embmedany_brsum = 79,
  CODE_FOR_embmedany_textuhi = 80,
  CODE_FOR_embmedany_texthi = 81,
  CODE_FOR_embmedany_textulo = 82,
  CODE_FOR_embmedany_textlo = 83,
  CODE_FOR_movdf_cc_sp64 = 111,
  CODE_FOR_movdf_cc_reg_sp64 = 120,
  CODE_FOR_extendsfdf2 = 150,
  CODE_FOR_truncdfsf2 = 153,
  CODE_FOR_floatsisf2 = 156,
  CODE_FOR_floatsidf2 = 157,
  CODE_FOR_floatdisf2 = 159,
  CODE_FOR_floatdidf2 = 160,
  CODE_FOR_fix_truncsfsi2 = 162,
  CODE_FOR_fix_truncdfsi2 = 163,
  CODE_FOR_fix_truncsfdi2 = 165,
  CODE_FOR_fix_truncdfdi2 = 166,
  CODE_FOR_adddi3_insn_sp32 = 168,
  CODE_FOR_addx = 169,
  CODE_FOR_subx = 172,
  CODE_FOR_addsi3 = 177,
  CODE_FOR_subsi3 = 185,
  CODE_FOR_cmp_minus_cc_set = 188,
  CODE_FOR_mulsi3 = 190,
  CODE_FOR_muldi3_v8plus = 192,
  CODE_FOR_mulsidi3_v8plus = 194,
  CODE_FOR_const_mulsidi3_v8plus = 195,
  CODE_FOR_const_mulsidi3_sp32 = 198,
  CODE_FOR_const_mulsidi3_sp64 = 199,
  CODE_FOR_smulsi3_highpart_v8plus = 200,
  CODE_FOR_const_smulsi3_highpart_v8plus = 202,
  CODE_FOR_const_smulsi3_highpart = 204,
  CODE_FOR_umulsidi3_v8plus = 205,
  CODE_FOR_const_umulsidi3_sp32 = 208,
  CODE_FOR_const_umulsidi3_sp64 = 209,
  CODE_FOR_const_umulsidi3_v8plus = 210,
  CODE_FOR_umulsi3_highpart_v8plus = 211,
  CODE_FOR_const_umulsi3_highpart_v8plus = 212,
  CODE_FOR_const_umulsi3_highpart = 214,
  CODE_FOR_divsi3_sp32 = 215,
  CODE_FOR_divsi3_sp64 = 216,
  CODE_FOR_divdi3 = 217,
  CODE_FOR_udivsi3_sp32 = 219,
  CODE_FOR_udivsi3_sp64 = 220,
  CODE_FOR_udivdi3 = 221,
  CODE_FOR_andsi3 = 228,
  CODE_FOR_iorsi3 = 234,
  CODE_FOR_xorsi3 = 240,
  CODE_FOR_negsi2 = 258,
  CODE_FOR_one_cmplsi2 = 265,
  CODE_FOR_adddf3 = 273,
  CODE_FOR_addsf3 = 274,
  CODE_FOR_subdf3 = 276,
  CODE_FOR_subsf3 = 277,
  CODE_FOR_muldf3 = 279,
  CODE_FOR_mulsf3 = 280,
  CODE_FOR_divdf3 = 284,
  CODE_FOR_divsf3 = 285,
  CODE_FOR_negsf2 = 290,
  CODE_FOR_abssf2 = 296,
  CODE_FOR_sqrtdf2 = 298,
  CODE_FOR_sqrtsf2 = 299,
  CODE_FOR_ashlsi3 = 300,
  CODE_FOR_ashldi3_v8plus = 302,
  CODE_FOR_ashrsi3 = 305,
  CODE_FOR_ashrdi3_v8plus = 309,
  CODE_FOR_lshrsi3 = 310,
  CODE_FOR_lshrdi3_v8plus = 314,
  CODE_FOR_jump = 319,
  CODE_FOR_blockage = 338,
  CODE_FOR_update_return = 339,
  CODE_FOR_nop = 340,
  CODE_FOR_flush_register_windows = 343,
  CODE_FOR_goto_handler_and_restore = 344,
  CODE_FOR_do_builtin_setjmp_setup = 345,
  CODE_FOR_flush = 346,
  CODE_FOR_flushdi = 347,
  CODE_FOR_ffssi2 = 348,
  CODE_FOR_prefetch_64 = 360,
  CODE_FOR_prefetch_32 = 361,
  CODE_FOR_trap = 362,
  CODE_FOR_cmpsi = 365,
  CODE_FOR_cmpdi = 366,
  CODE_FOR_cmpsf = 367,
  CODE_FOR_cmpdf = 368,
  CODE_FOR_cmptf = 369,
  CODE_FOR_seqsi_special = 370,
  CODE_FOR_seqdi_special = 371,
  CODE_FOR_snesi_special = 372,
  CODE_FOR_snedi_special = 373,
  CODE_FOR_seqdi_special_trunc = 374,
  CODE_FOR_snedi_special_trunc = 375,
  CODE_FOR_seqsi_special_extend = 376,
  CODE_FOR_snesi_special_extend = 377,
  CODE_FOR_seq = 378,
  CODE_FOR_sne = 379,
  CODE_FOR_sgt = 380,
  CODE_FOR_slt = 381,
  CODE_FOR_sge = 382,
  CODE_FOR_sle = 383,
  CODE_FOR_sgtu = 384,
  CODE_FOR_sltu = 385,
  CODE_FOR_sgeu = 386,
  CODE_FOR_sleu = 387,
  CODE_FOR_beq = 405,
  CODE_FOR_bne = 406,
  CODE_FOR_bgt = 407,
  CODE_FOR_bgtu = 408,
  CODE_FOR_blt = 409,
  CODE_FOR_bltu = 410,
  CODE_FOR_bge = 411,
  CODE_FOR_bgeu = 412,
  CODE_FOR_ble = 413,
  CODE_FOR_bleu = 414,
  CODE_FOR_bunordered = 415,
  CODE_FOR_bordered = 416,
  CODE_FOR_bungt = 417,
  CODE_FOR_bunlt = 418,
  CODE_FOR_buneq = 419,
  CODE_FOR_bunge = 420,
  CODE_FOR_bunle = 421,
  CODE_FOR_bltgt = 422,
  CODE_FOR_movqi = 423,
  CODE_FOR_movhi = 424,
  CODE_FOR_movsi = 425,
  CODE_FOR_movsi_pic_label_ref = 426,
  CODE_FOR_movdi = 427,
  CODE_FOR_movdi_pic_label_ref = 428,
  CODE_FOR_reload_indi = 429,
  CODE_FOR_reload_outdi = 430,
  CODE_FOR_movsf = 438,
  CODE_FOR_movdf = 439,
  CODE_FOR_movtf = 446,
  CODE_FOR_movqicc = 451,
  CODE_FOR_movhicc = 452,
  CODE_FOR_movsicc = 453,
  CODE_FOR_movdicc = 454,
  CODE_FOR_movsfcc = 455,
  CODE_FOR_movdfcc = 456,
  CODE_FOR_movtfcc = 457,
  CODE_FOR_zero_extendhisi2 = 460,
  CODE_FOR_zero_extendqihi2 = 461,
  CODE_FOR_zero_extendqisi2 = 462,
  CODE_FOR_zero_extendqidi2 = 463,
  CODE_FOR_zero_extendhidi2 = 464,
  CODE_FOR_zero_extendsidi2 = 465,
  CODE_FOR_extendhisi2 = 467,
  CODE_FOR_extendqihi2 = 468,
  CODE_FOR_extendqisi2 = 469,
  CODE_FOR_extendqidi2 = 470,
  CODE_FOR_extendhidi2 = 471,
  CODE_FOR_extendsidi2 = 472,
  CODE_FOR_extendsftf2 = 473,
  CODE_FOR_extenddftf2 = 474,
  CODE_FOR_trunctfsf2 = 475,
  CODE_FOR_trunctfdf2 = 476,
  CODE_FOR_floatsitf2 = 477,
  CODE_FOR_floatunssitf2 = 478,
  CODE_FOR_floatunsdisf2 = 479,
  CODE_FOR_floatunsdidf2 = 480,
  CODE_FOR_floatditf2 = 481,
  CODE_FOR_floatunsditf2 = 482,
  CODE_FOR_fix_trunctfsi2 = 483,
  CODE_FOR_fixuns_trunctfsi2 = 484,
  CODE_FOR_fix_trunctfdi2 = 485,
  CODE_FOR_fixuns_trunctfdi2 = 486,
  CODE_FOR_adddi3 = 487,
  CODE_FOR_subdi3 = 493,
  CODE_FOR_muldi3 = 497,
  CODE_FOR_mulsidi3 = 498,
  CODE_FOR_smulsi3_highpart = 499,
  CODE_FOR_umulsidi3 = 500,
  CODE_FOR_umulsi3_highpart = 501,
  CODE_FOR_divsi3 = 502,
  CODE_FOR_udivsi3 = 503,
  CODE_FOR_anddi3 = 504,
  CODE_FOR_iordi3 = 508,
  CODE_FOR_xordi3 = 511,
  CODE_FOR_negdi2 = 515,
  CODE_FOR_one_cmpldi2 = 517,
  CODE_FOR_addtf3 = 519,
  CODE_FOR_subtf3 = 520,
  CODE_FOR_multf3 = 521,
  CODE_FOR_divtf3 = 522,
  CODE_FOR_negtf2 = 523,
  CODE_FOR_negdf2 = 526,
  CODE_FOR_abstf2 = 528,
  CODE_FOR_absdf2 = 531,
  CODE_FOR_sqrttf2 = 533,
  CODE_FOR_ashldi3 = 534,
  CODE_FOR_ashrdi3 = 535,
  CODE_FOR_lshrdi3 = 536,
  CODE_FOR_tablejump = 537,
  CODE_FOR_call = 538,
  CODE_FOR_call_value = 539,
  CODE_FOR_untyped_call = 540,
  CODE_FOR_sibcall = 541,
  CODE_FOR_sibcall_value = 542,
  CODE_FOR_sibcall_epilogue = 543,
  CODE_FOR_untyped_return = 544,
  CODE_FOR_indirect_jump = 545,
  CODE_FOR_nonlocal_goto = 546,
  CODE_FOR_builtin_setjmp_setup = 547,
  CODE_FOR_setjmp = 548,
  CODE_FOR_setjmp_32 = 549,
  CODE_FOR_setjmp_64 = 550,
  CODE_FOR_prefetch = 563,
  CODE_FOR_prologue = 564,
  CODE_FOR_exception_receiver = 565,
  CODE_FOR_builtin_setjmp_receiver = 566,
  CODE_FOR_conditional_trap = 567,
  CODE_FOR_nothing
};
# 25 "/opt/local/src/gcc-3.3.3/gcc/optabs.h" 2
# 41 "/opt/local/src/gcc-3.3.3/gcc/optabs.h"
struct optab
{
  enum rtx_code code;
  struct optab_handlers {
    enum insn_code insn_code;
    rtx libfunc;
  } handlers [(int) MAX_MACHINE_MODE];
};
typedef struct optab * optab;






enum optab_index
{
  OTI_add,
  OTI_addv,
  OTI_sub,
  OTI_subv,


  OTI_smul,
  OTI_smulv,

  OTI_smul_highpart,
  OTI_umul_highpart,

  OTI_smul_widen,
  OTI_umul_widen,


  OTI_sdiv,
  OTI_sdivv,

  OTI_sdivmod,
  OTI_udiv,
  OTI_udivmod,

  OTI_smod,
  OTI_umod,

  OTI_ftrunc,


  OTI_and,

  OTI_ior,

  OTI_xor,


  OTI_ashl,

  OTI_lshr,

  OTI_ashr,

  OTI_rotl,

  OTI_rotr,

  OTI_smin,

  OTI_smax,

  OTI_umin,

  OTI_umax,


  OTI_mov,

  OTI_movstrict,



  OTI_neg,
  OTI_negv,

  OTI_abs,
  OTI_absv,

  OTI_one_cmpl,

  OTI_ffs,

  OTI_sqrt,

  OTI_sin,

  OTI_cos,

  OTI_exp,

  OTI_log,


  OTI_cmp,

  OTI_ucmp,

  OTI_tst,


  OTI_strlen,


  OTI_cbranch,
  OTI_cmov,
  OTI_cstore,


  OTI_push,

  OTI_MAX
};

extern optab optab_table[OTI_MAX];
# 220 "/opt/local/src/gcc-3.3.3/gcc/optabs.h"
extern enum insn_code extendtab[MAX_MACHINE_MODE][MAX_MACHINE_MODE][2];


extern enum insn_code fixtab[(int) MAX_MACHINE_MODE][(int) MAX_MACHINE_MODE][2];
extern enum insn_code fixtrunctab[(int) MAX_MACHINE_MODE][(int) MAX_MACHINE_MODE][2];
extern enum insn_code floattab[(int) MAX_MACHINE_MODE][(int) MAX_MACHINE_MODE][2];




extern enum insn_code reload_in_optab[(int) MAX_MACHINE_MODE];
extern enum insn_code reload_out_optab[(int) MAX_MACHINE_MODE];


extern optab code_to_optab[((int) LAST_AND_UNUSED_RTX_CODE) + 1];


typedef rtx (*rtxfun) (rtx);




extern rtxfun bcc_gen_fctn[((int) LAST_AND_UNUSED_RTX_CODE)];





extern enum insn_code setcc_gen_code[((int) LAST_AND_UNUSED_RTX_CODE)];





extern enum insn_code movcc_gen_code[(int) MAX_MACHINE_MODE];



extern enum insn_code movstr_optab[(int) MAX_MACHINE_MODE];


extern enum insn_code clrstr_optab[(int) MAX_MACHINE_MODE];




extern rtx expand_binop (enum machine_mode, optab, rtx, rtx, rtx, int, enum optab_methods);



extern rtx sign_expand_binop (enum machine_mode, optab, optab, rtx, rtx, rtx, int, enum optab_methods);



extern int expand_twoval_binop (optab, rtx, rtx, rtx, rtx, int);


extern rtx expand_unop (enum machine_mode, optab, rtx, rtx, int);


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


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



extern void emit_unop_insn (int, rtx, rtx, enum rtx_code);



extern rtx emit_no_conflict_block (rtx, rtx, rtx, rtx, rtx);


extern void emit_clr_insn (rtx);


extern void emit_0_to_1_insn (rtx);


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




enum can_compare_purpose
{
  ccp_jump,
  ccp_cmov,
  ccp_store_flag
};



extern int can_compare_p (enum rtx_code, enum machine_mode, enum can_compare_purpose);


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



extern enum insn_code can_extend_p (enum machine_mode, enum machine_mode, int);




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




extern void init_fixtab (void);
extern void init_floattab (void);


extern void expand_float (rtx, rtx, int);


extern void expand_fix (rtx, rtx, int);
# 96 "/opt/local/src/gcc-3.3.3/gcc/reload.c" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/recog.h" 1
# 28 "/opt/local/src/gcc-3.3.3/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 void validate_replace_src_group (rtx, rtx, rtx);
extern int num_changes_pending (void);



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 void peephole2_optimize (FILE *);
extern rtx peephole2_insns (rtx, rtx, int *);

extern int store_data_bypass_p (rtx, rtx);
extern int if_test_bypass_p (rtx, rtx);


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[2];



  char dup_num[2];
# 196 "/opt/local/src/gcc-3.3.3/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;
};
# 241 "/opt/local/src/gcc-3.3.3/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[];
# 97 "/opt/local/src/gcc-3.3.3/gcc/reload.c" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/reload.h" 1
# 47 "/opt/local/src/gcc-3.3.3/gcc/reload.h"
extern int memory_move_secondary_cost (enum machine_mode, enum reg_class, int);
# 76 "/opt/local/src/gcc-3.3.3/gcc/reload.h"
enum reload_type
{
  RELOAD_FOR_INPUT, RELOAD_FOR_OUTPUT, RELOAD_FOR_INSN,
  RELOAD_FOR_INPUT_ADDRESS, RELOAD_FOR_INPADDR_ADDRESS,
  RELOAD_FOR_OUTPUT_ADDRESS, RELOAD_FOR_OUTADDR_ADDRESS,
  RELOAD_FOR_OPERAND_ADDRESS, RELOAD_FOR_OPADDR_ADDR,
  RELOAD_OTHER, RELOAD_FOR_OTHER_ADDRESS
};



struct reload
{

  rtx in;


  rtx out;


  enum reg_class class;


  enum machine_mode inmode;

  enum machine_mode outmode;


  enum machine_mode mode;


  unsigned int nregs;




  int inc;




  rtx in_reg;
  rtx out_reg;


  int regno;




  rtx reg_rtx;




  int opnum;



  int secondary_in_reload;


  int secondary_out_reload;



  enum insn_code secondary_in_icode;

  enum insn_code secondary_out_icode;




  enum reload_type when_needed;



  unsigned int optional:1;

  unsigned int nocombine:1;

  unsigned int secondary_p:1;


  unsigned int nongroup:1;
};

extern struct reload rld[(2 * 30 * (2 + 1))];
extern int n_reloads;


extern rtx *reg_equiv_constant;
extern rtx *reg_equiv_memory_loc;
extern rtx *reg_equiv_address;
extern rtx *reg_equiv_mem;



extern int n_earlyclobbers;
extern rtx reload_earlyclobbers[30];


extern int reload_n_operands;



extern int reload_first_uid;





extern char indirect_symref_ok;


extern char double_reg_address_ok;

extern int num_not_at_initial_offset;

struct needs
{

  short regs[2][(int) LIM_REG_CLASSES];
  short groups[(int) LIM_REG_CLASSES];
};
# 260 "/opt/local/src/gcc-3.3.3/gcc/reload.h"
extern rtx get_secondary_mem (rtx, enum machine_mode, int, enum reload_type);



extern void clear_secondary_mem (void);



extern void transfer_replacements (int, int);





extern int remove_address_replacements (rtx in_rtx);




extern int operands_match_p (rtx, rtx);


extern int safe_from_earlyclobber (rtx, rtx);




extern int find_reloads (rtx, int, int, int, short *);





extern rtx form_sum (rtx, rtx);



extern void subst_reloads (rtx);




extern void copy_replacements (rtx, rtx);


extern void move_replacements (rtx *x, rtx *y);



extern rtx find_replacement (rtx *);




extern int refers_to_regno_for_reload_p (unsigned int, unsigned int, rtx, rtx *);



extern int reg_overlap_mentioned_for_reload_p (rtx, rtx);



extern int refers_to_mem_for_reload_p (rtx);



extern rtx find_equiv_reg (rtx, rtx, enum reg_class, int, short *, int, enum machine_mode);



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



extern int earlyclobber_operand_p (rtx);


extern int push_reload (rtx, rtx, rtx *, rtx *, enum reg_class, enum machine_mode, enum machine_mode, int, int, int, enum reload_type);





extern void reload_cse_regs (rtx);
extern int reloads_conflict (int, int);


extern void init_reload (void);


extern int reload (rtx, int);



extern void mark_home_live (int);



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




extern rtx gen_reload (rtx, rtx, int, enum reload_type);


extern void deallocate_reload_reg (int r);




extern void init_caller_save (void);


extern void init_save_areas (void);


extern void setup_save_areas (void);


extern void save_call_clobbered_regs (void);


extern void cleanup_subreg_operands (rtx);


extern void debug_reload_to_stream (FILE *);
extern void debug_reload (void);
# 98 "/opt/local/src/gcc-3.3.3/gcc/reload.c" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/regs.h" 1
# 23 "/opt/local/src/gcc-3.3.3/gcc/regs.h"
# 1 "/opt/local/src/gcc-3.3.3/gcc/varray.h" 1
# 36 "/opt/local/src/gcc-3.3.3/gcc/varray.h"
struct const_equiv_data {
# 50 "/opt/local/src/gcc-3.3.3/gcc/varray.h"
  struct rtx_def *rtx;



  unsigned age;
};




enum varray_data_enum {
  VARRAY_DATA_C,
  VARRAY_DATA_UC,
  VARRAY_DATA_S,
  VARRAY_DATA_US,
  VARRAY_DATA_I,
  VARRAY_DATA_U,
  VARRAY_DATA_L,
  VARRAY_DATA_UL,
  VARRAY_DATA_HINT,
  VARRAY_DATA_UHINT,
  VARRAY_DATA_GENERIC,
  VARRAY_DATA_CPTR,
  VARRAY_DATA_RTX,
  VARRAY_DATA_RTVEC,
  VARRAY_DATA_TREE,
  VARRAY_DATA_BITMAP,
  VARRAY_DATA_REG,
  VARRAY_DATA_CONST_EQUIV,
  VARRAY_DATA_BB,
  VARRAY_DATA_TE,
  NUM_VARRAY_DATA
};


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 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;


struct varray_head_tag {
  size_t num_elements;
  size_t elements_used;

  enum varray_data_enum type;
  const char *name;
  varray_data data;

};
typedef struct varray_head_tag *varray_type;



extern varray_type varray_init (size_t, enum varray_data_enum, const char *);
# 211 "/opt/local/src/gcc-3.3.3/gcc/varray.h"
extern varray_type varray_grow (varray_type, size_t);
# 222 "/opt/local/src/gcc-3.3.3/gcc/varray.h"
extern void varray_clear (varray_type);
# 24 "/opt/local/src/gcc-3.3.3/gcc/regs.h" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/hard-reg-set.h" 1
# 41 "/opt/local/src/gcc-3.3.3/gcc/hard-reg-set.h"
typedef unsigned long long HARD_REG_ELT_TYPE;
# 52 "/opt/local/src/gcc-3.3.3/gcc/hard-reg-set.h"
typedef HARD_REG_ELT_TYPE HARD_REG_SET[((102 + (8 * 8) - 1) / (8 * 8))];
# 395 "/opt/local/src/gcc-3.3.3/gcc/hard-reg-set.h"
extern char fixed_regs[102];



extern HARD_REG_SET fixed_reg_set;






extern char call_used_regs[102];







extern HARD_REG_SET call_used_reg_set;


extern HARD_REG_SET losing_caller_save_reg_set;







extern char call_fixed_regs[102];



extern HARD_REG_SET call_fixed_reg_set;






extern char global_regs[102];
# 445 "/opt/local/src/gcc-3.3.3/gcc/hard-reg-set.h"
extern HARD_REG_SET regs_invalidated_by_call;




extern int reg_alloc_order[102];



extern int inv_reg_alloc_order[102];




extern HARD_REG_SET 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[102];
# 25 "/opt/local/src/gcc-3.3.3/gcc/regs.h" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/basic-block.h" 1
# 25 "/opt/local/src/gcc-3.3.3/gcc/basic-block.h"
# 1 "/opt/local/src/gcc-3.3.3/gcc/bitmap.h" 1
# 29 "/opt/local/src/gcc-3.3.3/gcc/bitmap.h"
typedef unsigned long BITMAP_WORD;
# 51 "/opt/local/src/gcc-3.3.3/gcc/bitmap.h"
typedef struct bitmap_element_def
{
  struct bitmap_element_def *next;
  struct bitmap_element_def *prev;
  unsigned int indx;
  BITMAP_WORD bits[((128 + (8 * 4) - 1) / (8 * 4))];
} bitmap_element;


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

} bitmap_head;
typedef struct bitmap_head_def *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 head, int using_obstack);



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 "/opt/local/src/gcc-3.3.3/gcc/basic-block.h" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/sbitmap.h" 1
# 31 "/opt/local/src/gcc-3.3.3/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;
# 119 "/opt/local/src/gcc-3.3.3/gcc/sbitmap.h"
struct int_list;

extern void dump_sbitmap (FILE *, sbitmap);
extern void dump_sbitmap_file (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 sbitmap sbitmap_resize (sbitmap, unsigned int, 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 void sbitmap_union_of_diff (sbitmap, sbitmap, sbitmap, sbitmap);

extern _Bool sbitmap_union_of_diff_cg (sbitmap, sbitmap, sbitmap, sbitmap);

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

extern _Bool sbitmap_a_or_b_and_c_cg (sbitmap, sbitmap, sbitmap, sbitmap);

extern void sbitmap_a_and_b_or_c (sbitmap, sbitmap, sbitmap, sbitmap);

extern _Bool sbitmap_a_and_b_or_c_cg (sbitmap, sbitmap, sbitmap, sbitmap);

extern void sbitmap_a_and_b (sbitmap, sbitmap, sbitmap);
extern _Bool sbitmap_a_and_b_cg (sbitmap, sbitmap, sbitmap);
extern void sbitmap_a_or_b (sbitmap, sbitmap, sbitmap);
extern _Bool sbitmap_a_or_b_cg (sbitmap, sbitmap, sbitmap);
extern void sbitmap_a_xor_b (sbitmap, sbitmap, sbitmap);
extern _Bool sbitmap_a_xor_b_cg (sbitmap, sbitmap, sbitmap);
extern _Bool 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 "/opt/local/src/gcc-3.3.3/gcc/basic-block.h" 2

# 1 "/opt/local/src/gcc-3.3.3/include/partition.h" 1
# 46 "/opt/local/src/gcc-3.3.3/include/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 "/opt/local/src/gcc-3.3.3/gcc/basic-block.h" 2



typedef bitmap_head regset_head;

typedef bitmap regset;
# 75 "/opt/local/src/gcc-3.3.3/gcc/basic-block.h"
extern void reg_set_to_hard_reg_set (HARD_REG_SET *, bitmap);
# 117 "/opt/local/src/gcc-3.3.3/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;
# 179 "/opt/local/src/gcc-3.3.3/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;


  struct basic_block_def *prev_bb, *next_bb;


  int loop_depth;


  struct loop *loop_father;


  gcov_type count;


  int frequency;


  int flags;
} *basic_block;
# 242 "/opt/local/src/gcc-3.3.3/gcc/basic-block.h"
extern int n_basic_blocks;



extern int last_basic_block;



extern int n_edges;



extern varray_type basic_block_info;
# 276 "/opt/local/src/gcc-3.3.3/gcc/basic-block.h"
extern regset regs_live_at_setjmp;



extern rtx label_value_list;
extern rtx tail_recursion_label_list;

extern struct obstack flow_obstack;
# 313 "/opt/local/src/gcc-3.3.3/gcc/basic-block.h"
extern struct basic_block_def entry_exit_blocks[2];






extern void compute_bb_for_insn (void);
extern void free_bb_for_insn (void);
extern void update_bb_for_insn (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 commit_edge_insertions_watch_calls (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 unchecked_make_edge (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 (rtx, rtx, rtx, basic_block);
extern basic_block create_basic_block (rtx, rtx, basic_block);
extern int flow_delete_block (basic_block);
extern int flow_delete_block_noexpunge (basic_block);
extern void clear_bb_flags (void);
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);



typedef struct dominance_info *dominance_info;


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;


  struct loop **pred;



  int level;


  struct loop *outer;


  struct loop *inner;


  struct loop *next;


  int invalid;


  void *aux;





  rtx vtop;



  rtx cont;


  rtx start;


  rtx end;



  rtx top;


  rtx scan_start;


  rtx sink;
# 482 "/opt/local/src/gcc-3.3.3/gcc/basic-block.h"
  rtx exit_labels;



  int exit_count;
};



struct loops
{

  int num;


  int levels;



  struct loop *array;




  struct loop **parray;


  struct loop *tree_root;


  struct cfg
  {

    dominance_info dom;


    int *dfs_order;



    int *rc_order;
  } cfg;


  sbitmap shared_headers;
};






typedef struct ce_if_block
{
  basic_block test_bb;
  basic_block then_bb;
  basic_block else_bb;
  basic_block join_bb;
  basic_block last_test_bb;
  int num_multiple_test_blocks;
  int num_and_and_blocks;
  int num_or_or_blocks;
  int num_multiple_test_insns;
  int and_and_p;
  int num_then_insns;
  int num_else_insns;
  int pass;





} ce_if_block_t;

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);
extern void flow_loop_tree_node_add (struct loop *, struct loop *);
extern void flow_loop_tree_node_remove (struct loop *);


struct edge_list
{
  int num_blocks;
  int num_edges;
  edge *index_to_edge;
};
# 613 "/opt/local/src/gcc-3.3.3/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
};
# 668 "/opt/local/src/gcc-3.3.3/gcc/basic-block.h"
extern void life_analysis (rtx, FILE *, int);
extern int update_life_info (sbitmap, enum update_life_extent, int);

extern int update_life_info_in_dirty_blocks (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 note_prediction_to_br_prob (void);
extern void expected_value_to_br_prob (void);
extern void note_prediction_to_br_prob (void);
extern _Bool maybe_hot_bb_p (basic_block);
extern _Bool probably_cold_bb_p (basic_block);
extern _Bool probably_never_executed_bb_p (basic_block);


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 link_block (basic_block, basic_block);
extern void unlink_block (basic_block);
extern void compact_blocks (void);
extern basic_block alloc_block (void);
extern void find_unreachable_blocks (void);
extern int 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 _Bool flow_loop_outside_edge_p (const struct loop *, edge);
extern _Bool flow_loop_nested_p (const struct loop *, const struct loop *);

extern _Bool flow_bb_inside_loop_p (const struct loop *, const basic_block);

extern basic_block *get_loop_body (const struct loop *);
extern int dfs_enumerate_from (basic_block, int, _Bool (*)(basic_block, void *), basic_block *, int, void *);



extern edge loop_preheader_edge (struct loop *);
extern edge loop_latch_edge (struct loop *);

extern void add_bb_to_loop (basic_block, struct loop *);
extern void remove_bb_from_loops (basic_block);
extern struct loop * find_common_loop (struct loop *, struct loop *);

extern void verify_loop_structure (struct loops *, int);



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 set_edge_can_fallthru_flag (void);
extern void update_br_prob_note (basic_block);
extern void fixup_abnormal_edges (void);
extern _Bool can_hoist_insn_p (rtx, rtx, regset);
extern rtx hoist_insn_after (rtx, rtx, rtx, rtx);
extern rtx hoist_insn_to_edge (rtx, edge, rtx, rtx);
extern _Bool control_flow_insn_p (rtx);



enum cdi_direction
{
  CDI_DOMINATORS,
  CDI_POST_DOMINATORS
};

extern dominance_info calculate_dominance_info (enum cdi_direction);
extern void free_dominance_info (dominance_info);
extern basic_block nearest_common_dominator (dominance_info, basic_block, basic_block);

extern void set_immediate_dominator (dominance_info, basic_block, basic_block);

extern basic_block get_immediate_dominator (dominance_info, basic_block);

extern _Bool dominated_by_p (dominance_info, basic_block, basic_block);
extern int get_dominated_by (dominance_info, basic_block, basic_block **);
extern void add_to_dominance_info (dominance_info, basic_block);
extern void delete_from_dominance_info (dominance_info, basic_block);
basic_block recount_dominator (dominance_info, basic_block);
extern void redirect_immediate_dominators (dominance_info, basic_block, basic_block);

void iterate_fix_dominators (dominance_info, basic_block *, int);
extern void verify_dominators (dominance_info);
# 26 "/opt/local/src/gcc-3.3.3/gcc/regs.h" 2
# 44 "/opt/local/src/gcc-3.3.3/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;

extern bitmap_head subregs_of_mode;
# 154 "/opt/local/src/gcc-3.3.3/gcc/regs.h"
extern short *reg_renumber;




extern char regs_ever_live[102];



extern const char * reg_names[102];






extern enum machine_mode reg_raw_mode[102];
# 193 "/opt/local/src/gcc-3.3.3/gcc/regs.h"
extern rtx regs_may_share;




extern int caller_save_needed;
# 227 "/opt/local/src/gcc-3.3.3/gcc/regs.h"
extern void allocate_reg_info (size_t, int, int);
# 99 "/opt/local/src/gcc-3.3.3/gcc/reload.c" 2

# 1 "/opt/local/src/gcc-3.3.3/gcc/flags.h" 1
# 26 "/opt/local/src/gcc-3.3.3/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_switch_default;




extern int warn_switch_enum;




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 warn_strict_aliasing;



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_reorder_functions;



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_finite_math_only;





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;
# 441 "/opt/local/src/gcc-3.3.3/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_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;
# 515 "/opt/local/src/gcc-3.3.3/gcc/flags.h"
extern int flag_verbose_asm;
# 524 "/opt/local/src/gcc-3.3.3/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;
# 542 "/opt/local/src/gcc-3.3.3/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_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 force_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;


extern int flag_zero_initialized_in_bss;


extern int flag_signaling_nans;




extern const char *flag_random_seed;
# 101 "/opt/local/src/gcc-3.3.3/gcc/reload.c" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/real.h" 1
# 25 "/opt/local/src/gcc-3.3.3/gcc/real.h"
# 1 "/opt/local/src/gcc-3.3.3/gcc/machmode.h" 1
# 26 "/opt/local/src/gcc-3.3.3/gcc/real.h" 2




enum real_value_class {
  rvc_zero,
  rvc_normal,
  rvc_inf,
  rvc_nan
};







struct real_value
{
  enum real_value_class class : 2;
  unsigned int sign : 1;
  signed int exp : (32 - 3);
  unsigned long sig[((128 + (8 * 4)) / (8 * 4))];
};
# 66 "/opt/local/src/gcc-3.3.3/gcc/real.h"
extern char test_real_width
  [sizeof(struct real_value) <= (((128 + (8 * 4)) + 32)/(8 * 8) + (((128 + (8 * 4)) + 32)%(8 * 8) ? 1 : 0))*sizeof(long long) ? 1 : -1];
# 104 "/opt/local/src/gcc-3.3.3/gcc/real.h"
struct real_format
{

  void (*encode) (const struct real_format *, long *, const struct real_value *);

  void (*decode) (const struct real_format *, struct real_value *, const long *);



  int b;


  int log2_b;


  int p;


  int emin;


  int emax;


  _Bool has_nans;
  _Bool has_inf;
  _Bool has_denorm;
  _Bool has_signed_zero;
  _Bool qnan_msb_set;
};




extern const struct real_format *real_format_for_mode[TFmode - QFmode + 1];





extern void real_arithmetic (struct real_value *, int, const struct real_value *, const struct real_value *);




extern _Bool real_compare (int, const struct real_value *, const struct real_value *);



extern _Bool real_isinf (const struct real_value *);


extern _Bool real_isnan (const struct real_value *);


extern _Bool real_isneg (const struct real_value *);


extern _Bool real_isnegzero (const struct real_value *);


extern _Bool real_identical (const struct real_value *, const struct real_value *);



extern void real_convert (struct real_value *, enum machine_mode, const struct real_value *);




extern _Bool exact_real_truncate (enum machine_mode, const struct real_value *);



extern void real_to_decimal (char *, const struct real_value *, size_t, size_t, int);



extern void real_to_hexadecimal (char *, const struct real_value *, size_t, size_t, int);



extern long long real_to_integer (const struct real_value *);
extern void real_to_integer2 (long long *, long long *, const struct real_value *);



extern void real_from_string (struct real_value *, const char *);


extern void real_from_integer (struct real_value *, enum machine_mode, unsigned long long, long long, int);




extern long real_to_target_fmt (long *, const struct real_value *, const struct real_format *);

extern long real_to_target (long *, const struct real_value *, enum machine_mode);


extern void real_from_target_fmt (struct real_value *, const long *, const struct real_format *);

extern void real_from_target (struct real_value *, const long *, enum machine_mode);


extern void real_inf (struct real_value *);

extern _Bool real_nan (struct real_value *, const char *, int, enum machine_mode);


extern void real_2expN (struct real_value *, int);

extern unsigned int real_hash (const struct real_value *);



extern const struct real_format ieee_single_format;
extern const struct real_format ieee_double_format;
extern const struct real_format ieee_extended_motorola_format;
extern const struct real_format ieee_extended_intel_96_format;
extern const struct real_format ieee_extended_intel_96_round_53_format;
extern const struct real_format ieee_extended_intel_128_format;
extern const struct real_format ibm_extended_format;
extern const struct real_format ieee_quad_format;
extern const struct real_format vax_f_format;
extern const struct real_format vax_d_format;
extern const struct real_format vax_g_format;
extern const struct real_format i370_single_format;
extern const struct real_format i370_double_format;
extern const struct real_format c4x_single_format;
extern const struct real_format c4x_extended_format;
extern const struct real_format real_internal_format;
# 278 "/opt/local/src/gcc-3.3.3/gcc/real.h"
extern struct real_value real_value_truncate (enum machine_mode, struct real_value);





extern struct real_value real_arithmetic2 (int, const struct real_value *, const struct real_value *);
# 293 "/opt/local/src/gcc-3.3.3/gcc/real.h"
extern int significand_size (enum machine_mode);

extern struct real_value real_from_string2 (const char *, enum machine_mode);
# 314 "/opt/local/src/gcc-3.3.3/gcc/real.h"
extern int real_exponent (const struct real_value *);


extern void real_ldexp (struct real_value *, const struct real_value *, int);






extern struct real_value dconst0;
extern struct real_value dconst1;
extern struct real_value dconst2;
extern struct real_value dconstm1;



struct real_value real_value_from_int_cst (union tree_node *, union tree_node *);
# 341 "/opt/local/src/gcc-3.3.3/gcc/real.h"
extern rtx const_double_from_real_value (struct real_value, enum machine_mode);



extern _Bool exact_real_inverse (enum machine_mode, struct real_value *);


extern tree build_real (tree, struct real_value);
# 102 "/opt/local/src/gcc-3.3.3/gcc/reload.c" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/output.h" 1
# 24 "/opt/local/src/gcc-3.3.3/gcc/output.h"
extern void compute_alignments (void);


extern void init_final (const char *);



extern void end_final (const char *);



extern void app_enable (void);



extern void app_disable (void);




extern int dbr_sequence_length (void);


extern void init_insn_lengths (void);



extern int get_attr_length (rtx);



extern void shorten_branches (rtx);






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




extern void final_end_function (void);


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




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



extern rtx alter_subreg (rtx *);



extern void output_operand_lossage (const char *, ...) __attribute__ ((__format__ (__printf__, 1, 2))) __attribute__ ((__nonnull__ (1)));



extern void output_asm_insn (const char *, rtx *);




extern int insn_current_reference_address (rtx);



extern int label_to_alignment (rtx);


extern void output_asm_label (rtx);



extern void output_address (rtx);




extern void output_addr_const (FILE *, rtx);



extern void asm_fprintf (FILE *file, const char *p, ...);



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


extern int leaf_function_p (void);




extern int final_forward_branch_p (rtx);



extern int only_leaf_regs_used (void);



extern void leaf_renumber_regs_insn (rtx);


extern const char *get_insn_template (int, rtx);



extern int add_weak (tree, const char *, const char *);


extern void allocate_for_life_analysis (void);
extern int regno_uninitialized (unsigned int);
extern int regno_clobbered_at_setjmp (int);
extern void find_basic_blocks (rtx, int, FILE *);
extern _Bool cleanup_cfg (int);
extern _Bool delete_unreachable_blocks (void);
extern void check_function_return_warnings (void);




extern void text_section (void);


extern void data_section (void);


extern void force_data_section (void);



extern void readonly_data_section (void);


extern int in_text_section (void);


extern void ctors_section (void);



extern void dtors_section (void);



extern void bss_section (void);







extern void init_section (void);



extern void fini_section (void);
# 216 "/opt/local/src/gcc-3.3.3/gcc/output.h"
extern void named_section (tree, const char *, int);


extern void function_section (tree);


extern void mergeable_string_section (tree, unsigned long long, unsigned int);



extern void mergeable_constant_section (enum machine_mode, unsigned long long, unsigned int);




extern void declare_weak (tree);

extern void merge_weak (tree, tree);


extern void weak_finish (void);
# 245 "/opt/local/src/gcc-3.3.3/gcc/output.h"
extern int decode_reg_name (const char *);



extern void make_var_volatile (tree);


extern void assemble_constant_align (tree);

extern void assemble_alias (tree, tree);

extern void default_assemble_visibility (tree, int);



extern void assemble_asm (tree);





extern void assemble_start_function (tree, const char *);



extern void assemble_end_function (tree, const char *);
# 281 "/opt/local/src/gcc-3.3.3/gcc/output.h"
extern void assemble_variable (tree, int, int, int);




extern void assemble_external (tree);


extern void assemble_zeros (int);


extern void assemble_align (int);
extern void assemble_eh_align (int);


extern void assemble_string (const char *, int);


extern void assemble_external_libcall (rtx);


extern void assemble_label (const char *);
extern void assemble_eh_label (const char *);






extern void assemble_name (FILE *, const char *);
# 319 "/opt/local/src/gcc-3.3.3/gcc/output.h"
extern const char *integer_asm_op (int, int);



extern void assemble_integer_with_op (const char *, rtx);


extern _Bool default_assemble_integer (rtx, unsigned int, int);





extern _Bool assemble_integer (rtx, unsigned, unsigned, int);
# 342 "/opt/local/src/gcc-3.3.3/gcc/output.h"
extern void assemble_real (struct real_value, enum machine_mode, unsigned);





extern void defer_addressed_constants (void);



extern void output_deferred_addressed_constants (void);


extern int get_pool_size (void);






extern void output_constant_pool (const char *, tree);
# 373 "/opt/local/src/gcc-3.3.3/gcc/output.h"
extern tree initializer_constant_valid_p (tree, tree);
# 383 "/opt/local/src/gcc-3.3.3/gcc/output.h"
extern void output_constant (tree, long long, unsigned int);
# 392 "/opt/local/src/gcc-3.3.3/gcc/output.h"
extern rtx final_sequence;
# 404 "/opt/local/src/gcc-3.3.3/gcc/output.h"
extern FILE *asm_out_file;



extern const char *first_global_object_name;


extern const char *weak_global_object_name;






extern int current_function_is_leaf;




extern int current_function_nothrow;





extern int current_function_sp_is_unchanging;





extern int current_function_uses_only_leaf_regs;




extern FILE *rtl_dump_file;



extern struct rtx_def *current_insn_predicate;


extern struct rtx_def *current_output_insn;




extern rtx this_is_asm_operands;



extern _Bool decl_readonly_section (tree, int);
extern _Bool decl_readonly_section_1 (tree, int, int);


extern const char *user_label_prefix;


extern void default_function_pro_epilogue (FILE *, long long);


extern void default_exception_section (void);


extern void default_eh_frame_section (void);


extern void no_asm_to_stream (FILE *);
# 491 "/opt/local/src/gcc-3.3.3/gcc/output.h"
extern unsigned int get_named_section_flags (const char *);
extern _Bool set_named_section_flags (const char *, unsigned int);
extern void named_section_flags (const char *, unsigned int);
extern _Bool named_section_first_declaration (const char *);

union tree_node;
extern unsigned int default_section_type_flags (union tree_node *, const char *, int);

extern unsigned int default_section_type_flags_1 (union tree_node *, const char *, int, int);



extern void default_no_named_section (const char *, unsigned int);
extern void default_elf_asm_named_section (const char *, unsigned int);
extern void default_coff_asm_named_section (const char *, unsigned int);

extern void default_pe_asm_named_section (const char *, unsigned int);

extern void default_stabs_asm_out_destructor (struct rtx_def *, int);
extern void default_named_section_asm_out_destructor (struct rtx_def *, int);

extern void default_dtor_section_asm_out_destructor (struct rtx_def *, int);

extern void default_stabs_asm_out_constructor (struct rtx_def *, int);
extern void default_named_section_asm_out_constructor (struct rtx_def *, int);

extern void default_ctor_section_asm_out_constructor (struct rtx_def *, int);


extern void default_select_section (tree, int, unsigned long long);

extern void default_elf_select_section (tree, int, unsigned long long);

extern void default_elf_select_section_1 (tree, int, unsigned long long, int);

extern void default_unique_section (tree, int);
extern void default_unique_section_1 (tree, int, int);
extern void default_select_rtx_section (enum machine_mode, rtx, unsigned long long);

extern void default_elf_select_rtx_section (enum machine_mode, rtx, unsigned long long);

extern const char *default_strip_name_encoding (const char *);
extern _Bool default_binds_local_p (tree);
extern _Bool default_binds_local_p_1 (tree, int);
extern void default_globalize_label (FILE *, const char *);


extern void assemble_vtable_entry (struct rtx_def *, long long);
extern void assemble_vtable_inherit (struct rtx_def *, struct rtx_def *);
# 103 "/opt/local/src/gcc-3.3.3/gcc/reload.c" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/function.h" 1
# 22 "/opt/local/src/gcc-3.3.3/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;
  rtx 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;
};
# 124 "/opt/local/src/gcc-3.3.3/gcc/function.h"
struct expr_status
{


  int x_pending_stack_adjust;
# 145 "/opt/local/src/gcc-3.3.3/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;
};
# 179 "/opt/local/src/gcc-3.3.3/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;



  struct sparc_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 computed_goto_common_label;
  rtx computed_goto_common_reg;



  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;
# 326 "/opt/local/src/gcc-3.3.3/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;
  rtvec original_arg_vector;
  tree original_decl_initial;


  rtx inl_last_parm_insn;

  int inl_max_label_num;


  int funcdef_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 all_throwers_are_sibcalls : 1;



  unsigned int instrument_entry_exit : 1;


  unsigned int arc_profile : 1;


  unsigned int profile : 1;



  unsigned int limit_stack : 1;


  unsigned int stdarg : 1;





  unsigned int x_whole_function_mode_p : 1;
# 481 "/opt/local/src/gcc-3.3.3/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;



  enum function_frequency {


    FUNCTION_FREQUENCY_UNLIKELY_EXECUTED,

    FUNCTION_FREQUENCY_NORMAL,


    FUNCTION_FREQUENCY_HOT
  } function_frequency;



  int max_jumptable_ents;
};


extern struct function *cfun;


extern int virtuals_instantiated;


extern int trampolines_created;
# 581 "/opt/local/src/gcc-3.3.3/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 struct machine_function * (*init_machine_status) (void);


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 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);
# 104 "/opt/local/src/gcc-3.3.3/gcc/reload.c" 2
# 1 "/opt/local/src/gcc-3.3.3/gcc/toplev.h" 1
# 29 "/opt/local/src/gcc-3.3.3/gcc/toplev.h"
extern int toplev_main (int, char **);
extern int read_integral_parameter (const char *, const char *, const 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__));
# 57 "/opt/local/src/gcc-3.3.3/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 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 void output_clean_symbol_name (FILE *, const char *);

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))) __attribute__ ((__nonnull__ (2)));


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 const char *aux_base_name;

extern int target_flags_explicit;


extern struct ht *ident_hash;




extern void set_fast_math_flags (int);


extern _Bool fast_math_flags_set_p (void);
# 133 "/opt/local/src/gcc-3.3.3/gcc/toplev.h"
extern int exact_log2_wide (unsigned long long);
extern int floor_log2_wide (unsigned long long);
# 105 "/opt/local/src/gcc-3.3.3/gcc/reload.c" 2
# 120 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
int n_reloads;
struct reload rld[(2 * 30 * (2 + 1))];



int n_earlyclobbers;
rtx reload_earlyclobbers[30];

int reload_n_operands;
# 138 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
static int replace_reloads;


struct replacement
{
  rtx *where;
  rtx *subreg_loc;

  int what;
  enum machine_mode mode;
};

static struct replacement replacements[30 * ((2 * 2) + 1)];


static int n_replacements;


struct decomposition
{
  int reg_flag;
  int safe;
  rtx base;
  long long start;
  long long end;
};
# 175 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
static rtx secondary_memlocs[(int) MAX_MACHINE_MODE];
static rtx secondary_memlocs_elim[(int) MAX_MACHINE_MODE][30];




static rtx this_insn;


static int this_insn_is_asm;




static int hard_regs_live_known;





static short *static_reload_reg_p;


static int subst_reg_equivs_changed;



static int output_reloadnum;
# 239 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
static int push_secondary_reload (int, rtx, int, int, enum reg_class, enum machine_mode, enum reload_type, enum insn_code *);



static enum reg_class find_valid_class (enum machine_mode, int, unsigned int);

static int reload_inner_reg_of_subreg (rtx, enum machine_mode, int);
static int can_reload_into (rtx, int, enum machine_mode);
static void push_replacement (rtx *, int, enum machine_mode);
static void dup_replacements (rtx *, rtx *);
static void combine_reloads (void);
static int find_reusable_reload (rtx *, rtx, enum reg_class, enum reload_type, int, int);

static rtx find_dummy_reload (rtx, rtx, rtx *, rtx *, enum machine_mode, enum machine_mode, enum reg_class, int, int);


static int hard_reg_set_here_p (unsigned int, unsigned int, rtx);
static struct decomposition decompose (rtx);
static int immune_p (rtx, rtx, struct decomposition);
static int alternative_allows_memconst (const char *, int);
static rtx find_reloads_toplev (rtx, int, enum reload_type, int, int, rtx, int *);

static rtx make_memloc (rtx, int);
static int maybe_memory_address_p (enum machine_mode, rtx, rtx *);
static int find_reloads_address (enum machine_mode, rtx *, rtx, rtx *, int, enum reload_type, int, rtx);

static rtx subst_reg_equivs (rtx, rtx);
static rtx subst_indexed_address (rtx);
static void update_auto_inc_notes (rtx, int, int);
static int find_reloads_address_1 (enum machine_mode, rtx, int, rtx *, int, enum reload_type,int, rtx);

static void find_reloads_address_part (rtx, rtx *, enum reg_class, enum machine_mode, int, enum reload_type, int);


static rtx find_reloads_subreg_address (rtx, int, int, enum reload_type, int, rtx);

static void copy_replacements_1 (rtx *, rtx *, int);
static int find_inc_amount (rtx, rtx);
# 289 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
static int
push_secondary_reload (in_p, x, opnum, optional, reload_class, reload_mode,
                       type, picode)
     int in_p;
     rtx x;
     int opnum;
     int optional;
     enum reg_class reload_class;
     enum machine_mode reload_mode;
     enum reload_type type;
     enum insn_code *picode;
{
  enum reg_class class = NO_REGS;
  enum machine_mode mode = reload_mode;
  enum insn_code icode = CODE_FOR_nothing;
  enum reg_class t_class = NO_REGS;
  enum machine_mode t_mode = VOIDmode;
  enum insn_code t_icode = CODE_FOR_nothing;
  enum reload_type secondary_type;
  int s_reload, t_reload = -1;

  if (type == RELOAD_FOR_INPUT_ADDRESS
      || type == RELOAD_FOR_OUTPUT_ADDRESS
      || type == RELOAD_FOR_INPADDR_ADDRESS
      || type == RELOAD_FOR_OUTADDR_ADDRESS)
    secondary_type = type;
  else
    secondary_type = in_p ? RELOAD_FOR_INPUT_ADDRESS : RELOAD_FOR_OUTPUT_ADDRESS;

  *picode = CODE_FOR_nothing;



  if (((enum rtx_code) (x)->code) == SUBREG
      && ((mode_size[(int) (((enum machine_mode) (x)->mode))])
          > (mode_size[(int) (((enum machine_mode) ((((x)->fld[0]).rtx))->mode))])))
    {
      x = (((x)->fld[0]).rtx);
      reload_mode = ((enum machine_mode) (x)->mode);
    }







  if (((enum rtx_code) (x)->code) == REG && (((x)->fld[0]).rtuint) >= 102
      && reg_equiv_mem[(((x)->fld[0]).rtuint)] != 0)
    x = reg_equiv_mem[(((x)->fld[0]).rtuint)];


  if (in_p)
    class = ((((reload_class) == FP_REGS || (reload_class) == EXTRA_FP_REGS) && ((reload_mode) == HImode || (reload_mode) == QImode) && (((enum rtx_code) (x)->code) == MEM || ((((enum rtx_code) (x)->code) == REG || ((enum rtx_code) (x)->code) == SUBREG) && true_regnum (x) == -1))) ? GENERAL_REGS : ((reload_class) == EXTRA_FP_REGS && (reload_mode) == DFmode && ((enum rtx_code) (x)->code) == MEM && (! (target_flags & 0x10000)) && ! mem_min_alignment ((x), 8)) ? FP_REGS : ((((sparc_cmodel == CM_MEDANY) && symbolic_operand ((x), (reload_mode))) || ((sparc_cmodel == CM_EMBMEDANY) && text_segment_operand ((x), (reload_mode)))) && !flag_pic) ? GENERAL_REGS : NO_REGS);



  if (! in_p)
    class = ((((reload_class) == FP_REGS || (reload_class) == EXTRA_FP_REGS) && ((reload_mode) == HImode || (reload_mode) == QImode) && (((enum rtx_code) (x)->code) == MEM || ((((enum rtx_code) (x)->code) == REG || ((enum rtx_code) (x)->code) == SUBREG) && true_regnum (x) == -1))) ? GENERAL_REGS : ((reload_class) == EXTRA_FP_REGS && (reload_mode) == DFmode && ((enum rtx_code) (x)->code) == MEM && (! (target_flags & 0x10000)) && ! mem_min_alignment ((x), 8)) ? FP_REGS : ((((sparc_cmodel == CM_MEDANY) && symbolic_operand ((x), (reload_mode))) || ((sparc_cmodel == CM_EMBMEDANY) && text_segment_operand ((x), (reload_mode)))) && !flag_pic) ? GENERAL_REGS : NO_REGS);



  if (class == NO_REGS)
    return -1;




  icode = (in_p ? reload_in_optab[(int) reload_mode]
           : reload_out_optab[(int) reload_mode]);

  if (icode != CODE_FOR_nothing
      && insn_data[(int) icode].operand[in_p].predicate
      && (! (insn_data[(int) icode].operand[in_p].predicate) (x, reload_mode)))
    icode = CODE_FOR_nothing;







  if (icode != CODE_FOR_nothing)
    {





      enum reg_class insn_class;

      if (insn_data[(int) icode].operand[!in_p].constraint[0] == 0)
        insn_class = ALL_REGS;
      else
        {
          char insn_letter
            = insn_data[(int) icode].operand[!in_p].constraint[in_p];
          insn_class
            = (insn_letter == 'r' ? GENERAL_REGS
               : ((target_flags & 0x40) ? (((unsigned char) insn_letter) == 'f' ? FP_REGS : ((unsigned char) insn_letter) == 'e' ? EXTRA_FP_REGS : ((unsigned char) insn_letter) == 'c' ? FPCC_REGS : (((unsigned char) insn_letter) == 'd' && (target_flags & 0x1000000)) ? FP_REGS : (((unsigned char) insn_letter) == 'b' && (target_flags & 0x1000000)) ? EXTRA_FP_REGS : (((unsigned char) insn_letter) == 'h' && (target_flags & 0x2000000)) ? I64_REGS : NO_REGS) : (((unsigned char) insn_letter) == 'f' ? FP_REGS : ((unsigned char) insn_letter) == 'e' ? FP_REGS : ((unsigned char) insn_letter) == 'c' ? FPCC_REGS : NO_REGS)));

          if (insn_class == NO_REGS)
            fancy_abort ("/opt/local/src/gcc-3.3.3/gcc/reload.c", 391, __FUNCTION__);
          if (in_p
              && insn_data[(int) icode].operand[!in_p].constraint[0] != '=')
            fancy_abort ("/opt/local/src/gcc-3.3.3/gcc/reload.c", 394, __FUNCTION__);
        }


      if (insn_data[(int) icode].operand[2].constraint[0] != '='
          || insn_data[(int) icode].operand[2].constraint[1] != '&')
        fancy_abort ("/opt/local/src/gcc-3.3.3/gcc/reload.c", 400, __FUNCTION__);

      if (reg_class_subset_p (reload_class, insn_class))
        mode = insn_data[(int) icode].operand[2].mode;
      else
        {
          char t_letter = insn_data[(int) icode].operand[2].constraint[2];
          class = insn_class;
          t_mode = insn_data[(int) icode].operand[2].mode;
          t_class = (t_letter == 'r' ? GENERAL_REGS
                     : ((target_flags & 0x40) ? (((unsigned char) t_letter) == 'f' ? FP_REGS : ((unsigned char) t_letter) == 'e' ? EXTRA_FP_REGS : ((unsigned char) t_letter) == 'c' ? FPCC_REGS : (((unsigned char) t_letter) == 'd' && (target_flags & 0x1000000)) ? FP_REGS : (((unsigned char) t_letter) == 'b' && (target_flags & 0x1000000)) ? EXTRA_FP_REGS : (((unsigned char) t_letter) == 'h' && (target_flags & 0x2000000)) ? I64_REGS : NO_REGS) : (((unsigned char) t_letter) == 'f' ? FP_REGS : ((unsigned char) t_letter) == 'e' ? FP_REGS : ((unsigned char) t_letter) == 'c' ? FPCC_REGS : NO_REGS)));
          t_icode = icode;
          icode = CODE_FOR_nothing;
        }
    }
# 430 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
  if (in_p && class == reload_class && icode == CODE_FOR_nothing
      && t_icode == CODE_FOR_nothing)
    fancy_abort ("/opt/local/src/gcc-3.3.3/gcc/reload.c", 432, __FUNCTION__);




  if (t_class != NO_REGS)
    {
      for (t_reload = 0; t_reload < n_reloads; t_reload++)
        if (rld[t_reload].secondary_p
            && (reg_class_subset_p (t_class, rld[t_reload].class)
                || reg_class_subset_p (rld[t_reload].class, t_class))
            && ((in_p && rld[t_reload].inmode == t_mode)
                || (! in_p && rld[t_reload].outmode == t_mode))
            && ((in_p && (rld[t_reload].secondary_in_icode
                          == CODE_FOR_nothing))
                || (! in_p &&(rld[t_reload].secondary_out_icode
                              == CODE_FOR_nothing)))
            && (reg_class_size[(int) t_class] == 1 || 0)
            && ((secondary_type) == RELOAD_OTHER || (rld[t_reload].when_needed) == RELOAD_OTHER || ((secondary_type) == (rld[t_reload].when_needed) && (opnum) == (rld[t_reload].opnum)) || ((secondary_type) == RELOAD_FOR_INPUT && (rld[t_reload].when_needed) == RELOAD_FOR_INPUT) || ((secondary_type) == RELOAD_FOR_OPERAND_ADDRESS && (rld[t_reload].when_needed) == RELOAD_FOR_OPERAND_ADDRESS) || ((secondary_type) == RELOAD_FOR_OTHER_ADDRESS && (rld[t_reload].when_needed) == RELOAD_FOR_OTHER_ADDRESS)))


          {
            if (in_p)
              rld[t_reload].inmode = t_mode;
            if (! in_p)
              rld[t_reload].outmode = t_mode;

            if (reg_class_subset_p (t_class, rld[t_reload].class))
              rld[t_reload].class = t_class;

            rld[t_reload].opnum = ((rld[t_reload].opnum) < (opnum) ? (rld[t_reload].opnum) : (opnum));
            rld[t_reload].optional &= optional;
            rld[t_reload].secondary_p = 1;
            if (((secondary_type) != (rld[t_reload].when_needed) || ! ((opnum) == (rld[t_reload].opnum) || (secondary_type) == RELOAD_FOR_INPUT || (secondary_type) == RELOAD_FOR_OPERAND_ADDRESS || (secondary_type) == RELOAD_FOR_OTHER_ADDRESS)))

              rld[t_reload].when_needed = RELOAD_OTHER;
          }

      if (t_reload == n_reloads)
        {

          rld[t_reload].in = rld[t_reload].out = 0;
          rld[t_reload].class = t_class;
          rld[t_reload].inmode = in_p ? t_mode : VOIDmode;
          rld[t_reload].outmode = ! in_p ? t_mode : VOIDmode;
          rld[t_reload].reg_rtx = 0;
          rld[t_reload].optional = optional;
          rld[t_reload].inc = 0;

          rld[t_reload].nocombine = 1;
          rld[t_reload].in_reg = 0;
          rld[t_reload].out_reg = 0;
          rld[t_reload].opnum = opnum;
          rld[t_reload].when_needed = secondary_type;
          rld[t_reload].secondary_in_reload = -1;
          rld[t_reload].secondary_out_reload = -1;
          rld[t_reload].secondary_in_icode = CODE_FOR_nothing;
          rld[t_reload].secondary_out_icode = CODE_FOR_nothing;
          rld[t_reload].secondary_p = 1;

          n_reloads++;
        }
    }


  for (s_reload = 0; s_reload < n_reloads; s_reload++)
    if (rld[s_reload].secondary_p
        && (reg_class_subset_p (class, rld[s_reload].class)
            || reg_class_subset_p (rld[s_reload].class, class))
        && ((in_p && rld[s_reload].inmode == mode)
            || (! in_p && rld[s_reload].outmode == mode))
        && ((in_p && rld[s_reload].secondary_in_reload == t_reload)
            || (! in_p && rld[s_reload].secondary_out_reload == t_reload))
        && ((in_p && rld[s_reload].secondary_in_icode == t_icode)
            || (! in_p && rld[s_reload].secondary_out_icode == t_icode))
        && (reg_class_size[(int) class] == 1 || 0)
        && ((secondary_type) == RELOAD_OTHER || (rld[s_reload].when_needed) == RELOAD_OTHER || ((secondary_type) == (rld[s_reload].when_needed) && (opnum) == (rld[s_reload].opnum)) || ((secondary_type) == RELOAD_FOR_INPUT && (rld[s_reload].when_needed) == RELOAD_FOR_INPUT) || ((secondary_type) == RELOAD_FOR_OPERAND_ADDRESS && (rld[s_reload].when_needed) == RELOAD_FOR_OPERAND_ADDRESS) || ((secondary_type) == RELOAD_FOR_OTHER_ADDRESS && (rld[s_reload].when_needed) == RELOAD_FOR_OTHER_ADDRESS)))

      {
        if (in_p)
          rld[s_reload].inmode = mode;
        if (! in_p)
          rld[s_reload].outmode = mode;

        if (reg_class_subset_p (class, rld[s_reload].class))
          rld[s_reload].class = class;

        rld[s_reload].opnum = ((rld[s_reload].opnum) < (opnum) ? (rld[s_reload].opnum) : (opnum));
        rld[s_reload].optional &= optional;
        rld[s_reload].secondary_p = 1;
        if (((secondary_type) != (rld[s_reload].when_needed) || ! ((opnum) == (rld[s_reload].opnum) || (secondary_type) == RELOAD_FOR_INPUT || (secondary_type) == RELOAD_FOR_OPERAND_ADDRESS || (secondary_type) == RELOAD_FOR_OTHER_ADDRESS)))

          rld[s_reload].when_needed = RELOAD_OTHER;
      }

  if (s_reload == n_reloads)
    {






      if (in_p && icode == CODE_FOR_nothing
          && (((class) == FP_REGS || (class) == EXTRA_FP_REGS) != ((reload_class) == FP_REGS || (reload_class) == EXTRA_FP_REGS)))
        {
          get_secondary_mem (x, reload_mode, opnum, type);



          s_reload = n_reloads;
        }



      rld[s_reload].in = rld[s_reload].out = 0;
      rld[s_reload].class = class;

      rld[s_reload].inmode = in_p ? mode : VOIDmode;
      rld[s_reload].outmode = ! in_p ? mode : VOIDmode;
      rld[s_reload].reg_rtx = 0;
      rld[s_reload].optional = optional;
      rld[s_reload].inc = 0;

      rld[s_reload].nocombine = 1;
      rld[s_reload].in_reg = 0;
      rld[s_reload].out_reg = 0;
      rld[s_reload].opnum = opnum;
      rld[s_reload].when_needed = secondary_type;
      rld[s_reload].secondary_in_reload = in_p ? t_reload : -1;
      rld[s_reload].secondary_out_reload = ! in_p ? t_reload : -1;
      rld[s_reload].secondary_in_icode = in_p ? t_icode : CODE_FOR_nothing;
      rld[s_reload].secondary_out_icode
        = ! in_p ? t_icode : CODE_FOR_nothing;
      rld[s_reload].secondary_p = 1;

      n_reloads++;


      if (! in_p && icode == CODE_FOR_nothing
          && (((reload_class) == FP_REGS || (reload_class) == EXTRA_FP_REGS) != ((class) == FP_REGS || (class) == EXTRA_FP_REGS)))
        get_secondary_mem (x, mode, opnum, type);

    }

  *picode = icode;
  return s_reload;
}
# 588 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
rtx
get_secondary_mem (x, mode, opnum, type)
     rtx x __attribute__ ((__unused__));
     enum machine_mode mode;
     int opnum;
     enum reload_type type;
{
  rtx loc;
  int mem_valid;







  mode = ((! (! (target_flags & 0x10000))) ? ((mode_bitsize[(int) (mode)]) < 32 ? mode_for_size (32, (mode_class[(int) (mode)]), 0) : mode) : ((mode_bitsize[(int) (mode)]) < (8 * ((! (! (target_flags & 0x10000))) ? 8 : 4)) ? mode_for_size ((8 * ((! (! (target_flags & 0x10000))) ? 8 : 4)), (mode_class[(int) (mode)]), 0) : mode));






  if (secondary_memlocs_elim[(int) mode][opnum] != 0)
    return secondary_memlocs_elim[(int) mode][opnum];





  if (secondary_memlocs[(int) mode] == 0)
    {

      secondary_memlocs[(int) mode] = (get_frame_size () == 0 ? assign_stack_local (mode, (mode_size[(int) (mode)]), 0) : gen_rtx_MEM (mode, plus_constant_wide (((global_rtl[GR_FRAME_POINTER])), (long long) (((! (! (target_flags & 0x10000))) ? -16 : (-((! (! (target_flags & 0x10000))) ? (((128 / 8)+15) & ~15) : (((128 / 8)+7) & ~7))))))));




    }




  loc = eliminate_regs (secondary_memlocs[(int) mode], VOIDmode, (rtx) 0);
  mem_valid = strict_memory_address_p (mode, (((loc)->fld[0]).rtx));

  if (! mem_valid && loc == secondary_memlocs[(int) mode])
    loc = copy_rtx (loc);
# 644 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
  if (! mem_valid)
    {
      type = (type == RELOAD_FOR_INPUT ? RELOAD_FOR_INPUT_ADDRESS
               : type == RELOAD_FOR_OUTPUT ? RELOAD_FOR_OUTPUT_ADDRESS
               : RELOAD_OTHER);

      find_reloads_address (mode, &loc, (((loc)->fld[0]).rtx), &(((loc)->fld[0]).rtx),
                            opnum, type, 0, 0);
    }

  secondary_memlocs_elim[(int) mode][opnum] = loc;
  return loc;
}



void
clear_secondary_mem ()
{
  memset ((char *) secondary_memlocs, 0, sizeof secondary_memlocs);
}






static enum reg_class
find_valid_class (m1, n, dest_regno)
     enum machine_mode m1 __attribute__ ((__unused__));
     int n;
     unsigned int dest_regno;
{
  int best_cost = -1;
  int class;
  int regno;
  enum reg_class best_class = NO_REGS;
  enum reg_class dest_class = sparc_regno_reg_class[(dest_regno)];
  unsigned int best_size = 0;
  int cost;

  for (class = 1; class < (int) LIM_REG_CLASSES; class++)
    {
      int bad = 0;
      for (regno = 0; regno < 102 && ! bad; regno++)
        if ((!!((reg_class_contents[class])[(regno) / ((unsigned) (8 * 8))] & (((HARD_REG_ELT_TYPE) (1)) << ((regno) % ((unsigned) (8 * 8))))))
            && (!!((reg_class_contents[class])[(regno + n) / ((unsigned) (8 * 8))] & (((HARD_REG_ELT_TYPE) (1)) << ((regno + n) % ((unsigned) (8 * 8))))))
            && ! ((hard_regno_mode_classes[regno + n] & sparc_mode_class[m1]) != 0))
          bad = 1;

      if (bad)
        continue;
      cost = (((((class) == FP_REGS || (class) == EXTRA_FP_REGS) && ((dest_class) == GENERAL_REGS || (dest_class) == I64_REGS)) || (((class) == GENERAL_REGS || (class) == I64_REGS) && ((dest_class) == FP_REGS || (dest_class) == EXTRA_FP_REGS)) || (class) == FPCC_REGS || (dest_class) == FPCC_REGS) ? ((sparc_cpu == PROCESSOR_ULTRASPARC || sparc_cpu == PROCESSOR_ULTRASPARC3) ? 12 : 6) : 2);

      if ((reg_class_size[class] > best_size
           && (best_cost < 0 || best_cost >= cost))
          || best_cost > cost)
        {
          best_class = class;
          best_size = reg_class_size[class];
          best_cost = (((((class) == FP_REGS || (class) == EXTRA_FP_REGS) && ((dest_class) == GENERAL_REGS || (dest_class) == I64_REGS)) || (((class) == GENERAL_REGS || (class) == I64_REGS) && ((dest_class) == FP_REGS || (dest_class) == EXTRA_FP_REGS)) || (class) == FPCC_REGS || (dest_class) == FPCC_REGS) ? ((sparc_cpu == PROCESSOR_ULTRASPARC || sparc_cpu == PROCESSOR_ULTRASPARC3) ? 12 : 6) : 2);
        }
    }

  if (best_size == 0)
    fancy_abort ("/opt/local/src/gcc-3.3.3/gcc/reload.c", 709, __FUNCTION__);

  return best_class;
}
# 722 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
static int
find_reusable_reload (p_in, out, class, type, opnum, dont_share)
     rtx *p_in, out;
     enum reg_class class;
     enum reload_type type;
     int opnum, dont_share;
{
  rtx in = *p_in;
  int i;



  if (earlyclobber_operand_p (out))
    return n_reloads;
# 746 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
  for (i = 0; i < n_reloads; i++)
    if ((reg_class_subset_p (class, rld[i].class)
         || reg_class_subset_p (rld[i].class, class))

        && (rld[i].reg_rtx == 0
            || (!!((reg_class_contents[(int) class])[(true_regnum (rld[i].reg_rtx)) / ((unsigned) (8 * 8))] & (((HARD_REG_ELT_TYPE) (1)) << ((true_regnum (rld[i].reg_rtx)) % ((unsigned) (8 * 8)))))))

        && ((in != 0 && (rld[i].in == in || (rld[i].in != 0 && (((enum rtx_code) (rld[i].in)->code) == REG ? ((enum rtx_code) (in)->code) == REG && (((rld[i].in)->fld[0]).rtuint) == (((in)->fld[0]).rtuint) : rtx_equal_p (rld[i].in, in) && ! side_effects_p (rld[i].in)))) && ! dont_share
             && (out == 0 || rld[i].out == 0 || (rld[i].out == out || (rld[i].out != 0 && (((enum rtx_code) (rld[i].out)->code) == REG ? ((enum rtx_code) (out)->code) == REG && (((rld[i].out)->fld[0]).rtuint) == (((out)->fld[0]).rtuint) : rtx_equal_p (rld[i].out, out) && ! side_effects_p (rld[i].out))))))
            || (out != 0 && (rld[i].out == out || (rld[i].out != 0 && (((enum rtx_code) (rld[i].out)->code) == REG ? ((enum rtx_code) (out)->code) == REG && (((rld[i].out)->fld[0]).rtuint) == (((out)->fld[0]).rtuint) : rtx_equal_p (rld[i].out, out) && ! side_effects_p (rld[i].out))))
                && (in == 0 || rld[i].in == 0 || (rld[i].in == in || (rld[i].in != 0 && (((enum rtx_code) (rld[i].in)->code) == REG ? ((enum rtx_code) (in)->code) == REG && (((rld[i].in)->fld[0]).rtuint) == (((in)->fld[0]).rtuint) : rtx_equal_p (rld[i].in, in) && ! side_effects_p (rld[i].in)))))))
        && (rld[i].out == 0 || ! earlyclobber_operand_p (rld[i].out))
        && (reg_class_size[(int) class] == 1 || 0)
        && ((type) == RELOAD_OTHER || (rld[i].when_needed) == RELOAD_OTHER || ((type) == (rld[i].when_needed) && (opnum) == (rld[i].opnum)) || ((type) == RELOAD_FOR_INPUT && (rld[i].when_needed) == RELOAD_FOR_INPUT) || ((type) == RELOAD_FOR_OPERAND_ADDRESS && (rld[i].when_needed) == RELOAD_FOR_OPERAND_ADDRESS) || ((type) == RELOAD_FOR_OTHER_ADDRESS && (rld[i].when_needed) == RELOAD_FOR_OTHER_ADDRESS)))
      return i;






  for (i = 0; i < n_reloads; i++)
    if ((reg_class_subset_p (class, rld[i].class)
         || reg_class_subset_p (rld[i].class, class))


        && (rld[i].reg_rtx == 0
            || (!!((reg_class_contents[(int) class])[(true_regnum (rld[i].reg_rtx)) / ((unsigned) (8 * 8))] & (((HARD_REG_ELT_TYPE) (1)) << ((true_regnum (rld[i].reg_rtx)) % ((unsigned) (8 * 8)))))))

        && out == 0 && rld[i].out == 0 && rld[i].in != 0
        && ((((enum rtx_code) (in)->code) == REG
             && (rtx_class[(int) (((enum rtx_code) (rld[i].in)->code))]) == 'a'
             && ((((rld[i].in)->fld[0]).rtx) == in || ((((rld[i].in)->fld[0]).rtx) != 0 && (((enum rtx_code) ((((rld[i].in)->fld[0]).rtx))->code) == REG ? ((enum rtx_code) (in)->code) == REG && ((((((rld[i].in)->fld[0]).rtx))->fld[0]).rtuint) == (((in)->fld[0]).rtuint) : rtx_equal_p ((((rld[i].in)->fld[0]).rtx), in) && ! side_effects_p ((((rld[i].in)->fld[0]).rtx))))))
            || (((enum rtx_code) (rld[i].in)->code) == REG
                && (rtx_class[(int) (((enum rtx_code) (in)->code))]) == 'a'
                && ((((in)->fld[0]).rtx) == rld[i].in || ((((in)->fld[0]).rtx) != 0 && (((enum rtx_code) ((((in)->fld[0]).rtx))->code) == REG ? ((enum rtx_code) (rld[i].in)->code) == REG && ((((((in)->fld[0]).rtx))->fld[0]).rtuint) == (((rld[i].in)->fld[0]).rtuint) : rtx_equal_p ((((in)->fld[0]).rtx), rld[i].in) && ! side_effects_p ((((in)->fld[0]).rtx)))))))
        && (rld[i].out == 0 || ! earlyclobber_operand_p (rld[i].out))
        && (reg_class_size[(int) class] == 1 || 0)
        && ((type) == RELOAD_OTHER || (rld[i].when_needed) == RELOAD_OTHER || ((type) == (rld[i].when_needed) && (opnum) == (rld[i].opnum)) || ((type) == RELOAD_FOR_INPUT && (rld[i].when_needed) == RELOAD_FOR_INPUT) || ((type) == RELOAD_FOR_OPERAND_ADDRESS && (rld[i].when_needed) == RELOAD_FOR_OPERAND_ADDRESS) || ((type) == RELOAD_FOR_OTHER_ADDRESS && (rld[i].when_needed) == RELOAD_FOR_OTHER_ADDRESS)))

      {


        if (((enum rtx_code) (in)->code) == REG)
          *p_in = rld[i].in;
        return i;
      }
  return n_reloads;
}




static int
reload_inner_reg_of_subreg (x, mode, output)
     rtx x;
     enum machine_mode mode;
     int output;
{
  rtx inner;


  if (((enum rtx_code) (x)->code) != SUBREG)
    return 0;

  inner = (((x)->fld[0]).rtx);


  if ((((enum rtx_code) (inner)->code) == LABEL_REF || ((enum rtx_code) (inner)->code) == SYMBOL_REF || ((enum rtx_code) (inner)->code) == CONST_INT || ((enum rtx_code) (inner)->code) == CONST_DOUBLE || ((enum rtx_code) (inner)->code) == CONST || ((enum rtx_code) (inner)->code) == HIGH || ((enum rtx_code) (inner)->code) == CONST_VECTOR || ((enum rtx_code) (inner)->code) == CONSTANT_P_RTX) || ((enum rtx_code) (inner)->code) == PLUS)
    return 1;



  if (((enum rtx_code) (inner)->code) != REG
      || (((inner)->fld[0]).rtuint) >= 102)
    return 0;

  if (!subreg_offset_representable_p
        (((((((x)->fld[0]).rtx))->fld[0]).rtuint),
                ((enum machine_mode) ((((x)->fld[0]).rtx))->mode),
                (((x)->fld[1]).rtuint),
                ((enum machine_mode) (x)->mode)))
    return 1;


  if (! ((hard_regno_mode_classes[subreg_regno (x)] & sparc_mode_class[mode]) != 0))
    return 1;




  return ((mode_size[(int) (mode)]) <= ((! (! (target_flags & 0x10000))) ? 8 : 4)
          && output
          && (mode_size[(int) (((enum machine_mode) (inner)->mode))]) > ((! (! (target_flags & 0x10000))) ? 8 : 4)
          && (((mode_size[(int) (((enum machine_mode) (inner)->mode))]) / ((! (! (target_flags & 0x10000))) ? 8 : 4))
              != (int) ((! (! (target_flags & 0x10000))) ? (((((inner)->fld[0]).rtuint)) < 32 || ((((inner)->fld[0]).rtuint)) == 101 ? ((mode_size[(int) (((enum machine_mode) (inner)->mode))]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (((enum machine_mode) (inner)->mode))]) + 3) / 4) : (((mode_size[(int) (((enum machine_mode) (inner)->mode))]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4)))));
}
# 858 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
static int
can_reload_into (in, regno, mode)
     rtx in;
     int regno;
     enum machine_mode mode;
{
  rtx dst, test_insn;
  int r = 0;
  struct recog_data save_recog_data;






  if (((enum rtx_code) (in)->code) == REG)
    return 1;





  if (((enum rtx_code) (in)->code) == MEM)
    return 1;



  dst = gen_rtx_REG (mode, regno);
  test_insn = make_insn_raw (gen_rtx_fmt_ee (SET, (VOIDmode), (dst), (in)));
  save_recog_data = recog_data;
  if (((((test_insn)->fld[6]).rtint) >= 0 ? (((test_insn)->fld[6]).rtint) : recog_memoized_1 (test_insn)) >= 0)
    {
      extract_insn (test_insn);
      r = constrain_operands (1);
    }
  recog_data = save_recog_data;
  return r;
}
# 930 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
int
push_reload (in, out, inloc, outloc, class,
             inmode, outmode, strict_low, optional, opnum, type)
     rtx in, out;
     rtx *inloc, *outloc;
     enum reg_class class;
     enum machine_mode inmode, outmode;
     int strict_low;
     int optional;
     int opnum;
     enum reload_type type;
{
  int i;
  int dont_share = 0;
  int dont_remove_subreg = 0;
  rtx *in_subreg_loc = 0, *out_subreg_loc = 0;
  int secondary_in_reload = -1, secondary_out_reload = -1;
  enum insn_code secondary_in_icode = CODE_FOR_nothing;
  enum insn_code secondary_out_icode = CODE_FOR_nothing;




  if (inmode == VOIDmode && in != 0)
    inmode = ((enum machine_mode) (in)->mode);
  if (outmode == VOIDmode && out != 0)
    outmode = ((enum machine_mode) (out)->mode);





  if (in != 0 && ((enum rtx_code) (in)->code) == REG)
    {
      int regno = (((in)->fld[0]).rtuint);

      if (regno >= 102 && reg_renumber[regno] < 0
          && reg_equiv_constant[regno] != 0)
        in = reg_equiv_constant[regno];
    }




  if (out != 0 && ((enum rtx_code) (out)->code) == REG)
    {
      int regno = (((out)->fld[0]).rtuint);

      if (regno >= 102 && reg_renumber[regno] < 0
          && reg_equiv_constant[regno] != 0)
        out = reg_equiv_constant[regno];
    }



  if (in != 0 && out != 0 && ((enum rtx_code) (in)->code) == MEM && rtx_equal_p (in, out))
    switch (((enum rtx_code) ((((in)->fld[0]).rtx))->code))
      {
      case POST_INC: case POST_DEC: case POST_MODIFY:
        in = replace_equiv_address_nv (in, ((((((in)->fld[0]).rtx))->fld[0]).rtx));
        break;

      case PRE_INC: case PRE_DEC: case PRE_MODIFY:
        out = replace_equiv_address_nv (out, ((((((out)->fld[0]).rtx))->fld[0]).rtx));
        break;

      default:
        break;
      }
# 1030 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
  if (in != 0 && ((enum rtx_code) (in)->code) == SUBREG
      && (subreg_lowpart_p (in) || strict_low)



      && ((((enum rtx_code) ((((in)->fld[0]).rtx))->code) == LABEL_REF || ((enum rtx_code) ((((in)->fld[0]).rtx))->code) == SYMBOL_REF || ((enum rtx_code) ((((in)->fld[0]).rtx))->code) == CONST_INT || ((enum rtx_code) ((((in)->fld[0]).rtx))->code) == CONST_DOUBLE || ((enum rtx_code) ((((in)->fld[0]).rtx))->code) == CONST || ((enum rtx_code) ((((in)->fld[0]).rtx))->code) == HIGH || ((enum rtx_code) ((((in)->fld[0]).rtx))->code) == CONST_VECTOR || ((enum rtx_code) ((((in)->fld[0]).rtx))->code) == CONSTANT_P_RTX)
          || ((enum rtx_code) ((((in)->fld[0]).rtx))->code) == PLUS
          || strict_low
          || (((((enum rtx_code) ((((in)->fld[0]).rtx))->code) == REG
                && ((((((in)->fld[0]).rtx))->fld[0]).rtuint) >= 102)
               || ((enum rtx_code) ((((in)->fld[0]).rtx))->code) == MEM)
              && (((mode_size[(int) (inmode)])
                   > (mode_size[(int) (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))]))

                  || ((mode_size[(int) (inmode)]) <= ((! (! (target_flags & 0x10000))) ? 8 : 4)
                      && ((mode_size[(int) (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))])
                          <= ((! (! (target_flags & 0x10000))) ? 8 : 4))
                      && ((mode_size[(int) (inmode)])
                          > (mode_size[(int) (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))]))
                      && ((mode_class[(int) (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))]) == MODE_INT || (mode_class[(int) (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))]) == MODE_PARTIAL_INT || (mode_class[(int) (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))]) == MODE_COMPLEX_INT || (mode_class[(int) (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))]) == MODE_VECTOR_INT)
                      && ZERO_EXTEND != NIL)


                  || (((mode_size[(int) (inmode)])
                       < (mode_size[(int) (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))]))
                      && (((mode_size[(int) (inmode)]) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) ==
                          (((mode_size[(int) (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))]) - 1)
                           / ((! (! (target_flags & 0x10000))) ? 8 : 4))))

                  ))
          || (((enum rtx_code) ((((in)->fld[0]).rtx))->code) == REG
              && ((((((in)->fld[0]).rtx))->fld[0]).rtuint) < 102


              && (out == 0 || subreg_lowpart_p (in))
              && (((mode_size[(int) (inmode)]) <= ((! (! (target_flags & 0x10000))) ? 8 : 4)
                   && ((mode_size[(int) (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))])
                       > ((! (! (target_flags & 0x10000))) ? 8 : 4))
                   && (((mode_size[(int) (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))])
                        / ((! (! (target_flags & 0x10000))) ? 8 : 4))
                       != (int) ((! (! (target_flags & 0x10000))) ? ((((((((in)->fld[0]).rtx))->fld[0]).rtuint)) < 32 || (((((((in)->fld[0]).rtx))->fld[0]).rtuint)) == 101 ? ((mode_size[(int) (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))]) + 3) / 4) : (((mode_size[(int) (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4)))))

                  || ! ((hard_regno_mode_classes[subreg_regno (in)] & sparc_mode_class[inmode]) != 0)))

          || (((((class) == FP_REGS || (class) == EXTRA_FP_REGS) && ((inmode) == HImode || (inmode) == QImode) && (((enum rtx_code) (in)->code) == MEM || ((((enum rtx_code) (in)->code) == REG || ((enum rtx_code) (in)->code) == SUBREG) && true_regnum (in) == -1))) ? GENERAL_REGS : ((class) == EXTRA_FP_REGS && (inmode) == DFmode && ((enum rtx_code) (in)->code) == MEM && (! (target_flags & 0x10000)) && ! mem_min_alignment ((in), 8)) ? FP_REGS : ((((sparc_cmodel == CM_MEDANY) && symbolic_operand ((in), (inmode))) || ((sparc_cmodel == CM_EMBMEDANY) && text_segment_operand ((in), (inmode)))) && !flag_pic) ? GENERAL_REGS : NO_REGS) != NO_REGS
              && (((((class) == FP_REGS || (class) == EXTRA_FP_REGS) && ((((enum machine_mode) ((((in)->fld[0]).rtx))->mode)) == HImode || (((enum machine_mode) ((((in)->fld[0]).rtx))->mode)) == QImode) && (((enum rtx_code) ((((in)->fld[0]).rtx))->code) == MEM || ((((enum rtx_code) ((((in)->fld[0]).rtx))->code) == REG || ((enum rtx_code) ((((in)->fld[0]).rtx))->code) == SUBREG) && true_regnum ((((in)->fld[0]).rtx)) == -1))) ? GENERAL_REGS : ((class) == EXTRA_FP_REGS && (((enum machine_mode) ((((in)->fld[0]).rtx))->mode)) == DFmode && ((enum rtx_code) ((((in)->fld[0]).rtx))->code) == MEM && (! (target_flags & 0x10000)) && ! mem_min_alignment (((((in)->fld[0]).rtx)), 8)) ? FP_REGS : ((((sparc_cmodel == CM_MEDANY) && symbolic_operand (((((in)->fld[0]).rtx)), (((enum machine_mode) ((((in)->fld[0]).rtx))->mode)))) || ((sparc_cmodel == CM_EMBMEDANY) && text_segment_operand (((((in)->fld[0]).rtx)), (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))))) && !flag_pic) ? GENERAL_REGS 
 : NO_REGS)


                  == NO_REGS))







          ))
    {
      in_subreg_loc = inloc;
      inloc = &(((in)->fld[0]).rtx);
      in = *inloc;







      inmode = ((enum machine_mode) (in)->mode);
    }
# 1111 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
  if (in != 0 && reload_inner_reg_of_subreg (in, inmode, 0))
    {
      enum reg_class in_class = class;

      if (((enum rtx_code) ((((in)->fld[0]).rtx))->code) == REG)
        in_class
          = find_valid_class (inmode,
                              subreg_regno_offset (((((((in)->fld[0]).rtx))->fld[0]).rtuint),
                                                   ((enum machine_mode) ((((in)->fld[0]).rtx))->mode),
                                                   (((in)->fld[1]).rtuint),
                                                   ((enum machine_mode) (in)->mode)),
                              ((((((in)->fld[0]).rtx))->fld[0]).rtuint));






      push_reload ((((in)->fld[0]).rtx), (rtx) 0, &(((in)->fld[0]).rtx), (rtx *) 0,
                   in_class, VOIDmode, VOIDmode, 0, 0, opnum, type);
      dont_remove_subreg = 1;
    }







  if (out != 0 && ((enum rtx_code) (out)->code) == SUBREG
      && (subreg_lowpart_p (out) || strict_low)



      && ((((enum rtx_code) ((((out)->fld[0]).rtx))->code) == LABEL_REF || ((enum rtx_code) ((((out)->fld[0]).rtx))->code) == SYMBOL_REF || ((enum rtx_code) ((((out)->fld[0]).rtx))->code) == CONST_INT || ((enum rtx_code) ((((out)->fld[0]).rtx))->code) == CONST_DOUBLE || ((enum rtx_code) ((((out)->fld[0]).rtx))->code) == CONST || ((enum rtx_code) ((((out)->fld[0]).rtx))->code) == HIGH || ((enum rtx_code) ((((out)->fld[0]).rtx))->code) == CONST_VECTOR || ((enum rtx_code) ((((out)->fld[0]).rtx))->code) == CONSTANT_P_RTX)
          || strict_low
          || (((((enum rtx_code) ((((out)->fld[0]).rtx))->code) == REG
                && ((((((out)->fld[0]).rtx))->fld[0]).rtuint) >= 102)
               || ((enum rtx_code) ((((out)->fld[0]).rtx))->code) == MEM)
              && (((mode_size[(int) (outmode)])
                   > (mode_size[(int) (((enum machine_mode) ((((out)->fld[0]).rtx))->mode))]))

                  || (((mode_size[(int) (outmode)])
                       < (mode_size[(int) (((enum machine_mode) ((((out)->fld[0]).rtx))->mode))]))
                      && (((mode_size[(int) (outmode)]) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) ==
                          (((mode_size[(int) (((enum machine_mode) ((((out)->fld[0]).rtx))->mode))]) - 1)
                           / ((! (! (target_flags & 0x10000))) ? 8 : 4))))

                  ))
          || (((enum rtx_code) ((((out)->fld[0]).rtx))->code) == REG
              && ((((((out)->fld[0]).rtx))->fld[0]).rtuint) < 102
              && (((mode_size[(int) (outmode)]) <= ((! (! (target_flags & 0x10000))) ? 8 : 4)
                   && ((mode_size[(int) (((enum machine_mode) ((((out)->fld[0]).rtx))->mode))])
                       > ((! (! (target_flags & 0x10000))) ? 8 : 4))
                   && (((mode_size[(int) (((enum machine_mode) ((((out)->fld[0]).rtx))->mode))])
                        / ((! (! (target_flags & 0x10000))) ? 8 : 4))
                       != (int) ((! (! (target_flags & 0x10000))) ? ((((((((out)->fld[0]).rtx))->fld[0]).rtuint)) < 32 || (((((((out)->fld[0]).rtx))->fld[0]).rtuint)) == 101 ? ((mode_size[(int) (((enum machine_mode) ((((out)->fld[0]).rtx))->mode))]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (((enum machine_mode) ((((out)->fld[0]).rtx))->mode))]) + 3) / 4) : (((mode_size[(int) (((enum machine_mode) ((((out)->fld[0]).rtx))->mode))]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4)))))

                  || ! ((hard_regno_mode_classes[subreg_regno (out)] & sparc_mode_class[outmode]) != 0)))

          || (((((class) == FP_REGS || (class) == EXTRA_FP_REGS) && ((outmode) == HImode || (outmode) == QImode) && (((enum rtx_code) (out)->code) == MEM || ((((enum rtx_code) (out)->code) == REG || ((enum rtx_code) (out)->code) == SUBREG) && true_regnum (out) == -1))) ? GENERAL_REGS : ((class) == EXTRA_FP_REGS && (outmode) == DFmode && ((enum rtx_code) (out)->code) == MEM && (! (target_flags & 0x10000)) && ! mem_min_alignment ((out), 8)) ? FP_REGS : ((((sparc_cmodel == CM_MEDANY) && symbolic_operand ((out), (outmode))) || ((sparc_cmodel == CM_EMBMEDANY) && text_segment_operand ((out), (outmode)))) && !flag_pic) ? GENERAL_REGS : NO_REGS) != NO_REGS
              && (((((class) == FP_REGS || (class) == EXTRA_FP_REGS) && ((((enum machine_mode) ((((out)->fld[0]).rtx))->mode)) == HImode || (((enum machine_mode) ((((out)->fld[0]).rtx))->mode)) == QImode) && (((enum rtx_code) ((((out)->fld[0]).rtx))->code) == MEM || ((((enum rtx_code) ((((out)->fld[0]).rtx))->code) == REG || ((enum rtx_code) ((((out)->fld[0]).rtx))->code) == SUBREG) && true_regnum ((((out)->fld[0]).rtx)) == -1))) ? GENERAL_REGS : ((class) == EXTRA_FP_REGS && (((enum machine_mode) ((((out)->fld[0]).rtx))->mode)) == DFmode && ((enum rtx_code) ((((out)->fld[0]).rtx))->code) == MEM && (! (target_flags & 0x10000)) && ! mem_min_alignment (((((out)->fld[0]).rtx)), 8)) ? FP_REGS : ((((sparc_cmodel == CM_MEDANY) && symbolic_operand (((((out)->fld[0]).rtx)), (((enum machine_mode) ((((out)->fld[0]).rtx))->mode)))) || ((sparc_cmodel == CM_EMBMEDANY) && text_segment_operand (((((out)->fld[0]).rtx)), (((enum machine_mode) ((((out)->fld[0]).rtx))->mode))))) && !flag_pic) ? 
 GENERAL_REGS : NO_REGS)


                  == NO_REGS))
# 1184 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
          ))
    {
      out_subreg_loc = outloc;
      outloc = &(((out)->fld[0]).rtx);
      out = *outloc;





      outmode = ((enum machine_mode) (out)->mode);
    }
# 1204 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
  if (out != 0 && reload_inner_reg_of_subreg (out, outmode, 1))
    {





      dont_remove_subreg = 1;
      push_reload ((((out)->fld[0]).rtx), (((out)->fld[0]).rtx), &(((out)->fld[0]).rtx),
                   &(((out)->fld[0]).rtx),
                   find_valid_class (outmode,
                                     subreg_regno_offset (((((((out)->fld[0]).rtx))->fld[0]).rtuint),
                                                          ((enum machine_mode) ((((out)->fld[0]).rtx))->mode),
                                                          (((out)->fld[1]).rtuint),
                                                          ((enum machine_mode) (out)->mode)),
                                     ((((((out)->fld[0]).rtx))->fld[0]).rtuint)),
                   VOIDmode, VOIDmode, 0, 0,
                   opnum, RELOAD_OTHER);
    }


  if (in != 0 && out != 0 && ((enum rtx_code) (out)->code) == MEM
      && (((enum rtx_code) (in)->code) == REG || ((enum rtx_code) (in)->code) == MEM)
      && reg_overlap_mentioned_for_reload_p (in, (((out)->fld[0]).rtx)))
    dont_share = 1;




  if (in != 0 && ((enum rtx_code) (in)->code) == SUBREG && ((enum rtx_code) ((((in)->fld[0]).rtx))->code) == REG
      && ((((((in)->fld[0]).rtx))->fld[0]).rtuint) < 102
      && ! dont_remove_subreg)
    in = gen_rtx_REG (((enum machine_mode) (in)->mode), subreg_regno (in));


  if (out != 0 && ((enum rtx_code) (out)->code) == SUBREG
      && ((enum rtx_code) ((((out)->fld[0]).rtx))->code) == REG
      && ((((((out)->fld[0]).rtx))->fld[0]).rtuint) < 102
      && ! dont_remove_subreg)
    out = gen_rtx_REG (((enum machine_mode) (out)->mode), subreg_regno (out));



  if (in != 0)
    class = ((((enum rtx_code) (in)->code) == LABEL_REF || ((enum rtx_code) (in)->code) == SYMBOL_REF || ((enum rtx_code) (in)->code) == CONST_INT || ((enum rtx_code) (in)->code) == CONST_DOUBLE || ((enum rtx_code) (in)->code) == CONST || ((enum rtx_code) (in)->code) == HIGH || ((enum rtx_code) (in)->code) == CONST_VECTOR || ((enum rtx_code) (in)->code) == CONSTANT_P_RTX) ? ((((class) == FP_REGS || (class) == EXTRA_FP_REGS) || (class) == GENERAL_OR_FP_REGS || (class) == GENERAL_OR_EXTRA_FP_REGS || ((mode_class[(int) (((enum machine_mode) (in)->mode))]) == MODE_FLOAT && ! (target_flags & 1)) || (((enum machine_mode) (in)->mode) == TFmode && ! fp_zero_operand (in, TFmode))) ? NO_REGS : (!((class) == FP_REGS || (class) == EXTRA_FP_REGS) && (mode_class[(int) (((enum machine_mode) (in)->mode))]) == MODE_INT) ? GENERAL_REGS : (class)) : (class));
# 1274 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
  if (this_insn_is_asm)
    {
      enum machine_mode mode;
      if ((mode_size[(int) (inmode)]) > (mode_size[(int) (outmode)]))
        mode = inmode;
      else
        mode = outmode;
      if (mode == VOIDmode)
        {
          error_for_asm (this_insn, "cannot reload integer constant operand in `asm'");
          mode = word_mode;
          if (in != 0)
            inmode = word_mode;
          if (out != 0)
            outmode = word_mode;
        }
      for (i = 0; i < 102; i++)
        if (((hard_regno_mode_classes[i] & sparc_mode_class[mode]) != 0)
            && (!!((reg_class_contents[(int) class])[(i) / ((unsigned) (8 * 8))] & (((HARD_REG_ELT_TYPE) (1)) << ((i) % ((unsigned) (8 * 8)))))))
          {
            int nregs = ((! (! (target_flags & 0x10000))) ? ((i) < 32 || (i) == 101 ? ((mode_size[(int) (mode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (mode)]) + 3) / 4) : (((mode_size[(int) (mode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4)));

            int j;
            for (j = 1; j < nregs; j++)
              if (! (!!((reg_class_contents[(int) class])[(i + j) / ((unsigned) (8 * 8))] & (((HARD_REG_ELT_TYPE) (1)) << ((i + j) % ((unsigned) (8 * 8)))))))
                break;
            if (j == nregs)
              break;
          }
      if (i == 102)
        {
          error_for_asm (this_insn, "impossible register constraint in `asm'");
          class = ALL_REGS;
        }
    }




  if (class == NO_REGS
      && (optional == 0 || type != RELOAD_FOR_OUTPUT))
    fancy_abort ("/opt/local/src/gcc-3.3.3/gcc/reload.c", 1315, __FUNCTION__);

  i = find_reusable_reload (&in, out, class, type, opnum, dont_share);

  if (i == n_reloads)
    {





      if (in != 0)
        secondary_in_reload
          = push_secondary_reload (1, in, opnum, optional, class, inmode, type,
                                   &secondary_in_icode);



      if (out != 0 && ((enum rtx_code) (out)->code) != SCRATCH)
        secondary_out_reload
          = push_secondary_reload (0, out, opnum, optional, class, outmode,
                                   type, &secondary_out_icode);







      if (in != 0 && (((enum rtx_code) (in)->code) == REG || ((enum rtx_code) (in)->code) == SUBREG)
          && reg_or_subregno (in) < 102
          && (((sparc_regno_reg_class[(reg_or_subregno (in))]) == FP_REGS || (sparc_regno_reg_class[(reg_or_subregno (in))]) == EXTRA_FP_REGS) != ((class) == FP_REGS || (class) == EXTRA_FP_REGS)))

        get_secondary_mem (in, inmode, opnum, type);


      i = n_reloads;
      rld[i].in = in;
      rld[i].out = out;
      rld[i].class = class;
      rld[i].inmode = inmode;
      rld[i].outmode = outmode;
      rld[i].reg_rtx = 0;
      rld[i].optional = optional;
      rld[i].inc = 0;
      rld[i].nocombine = 0;
      rld[i].in_reg = inloc ? *inloc : 0;
      rld[i].out_reg = outloc ? *outloc : 0;
      rld[i].opnum = opnum;
      rld[i].when_needed = type;
      rld[i].secondary_in_reload = secondary_in_reload;
      rld[i].secondary_out_reload = secondary_out_reload;
      rld[i].secondary_in_icode = secondary_in_icode;
      rld[i].secondary_out_icode = secondary_out_icode;
      rld[i].secondary_p = 0;

      n_reloads++;


      if (out != 0 && (((enum rtx_code) (out)->code) == REG || ((enum rtx_code) (out)->code) == SUBREG)
          && reg_or_subregno (out) < 102
          && (((class) == FP_REGS || (class) == EXTRA_FP_REGS) != ((sparc_regno_reg_class[(reg_or_subregno (out))]) == FP_REGS || (sparc_regno_reg_class[(reg_or_subregno (out))]) == EXTRA_FP_REGS)))


        get_secondary_mem (out, outmode, opnum, type);

    }
  else
    {







      if (inmode != VOIDmode
          && (mode_size[(int) (inmode)]) > (mode_size[(int) (rld[i].inmode)]))
        rld[i].inmode = inmode;
      if (outmode != VOIDmode
          && (mode_size[(int) (outmode)]) > (mode_size[(int) (rld[i].outmode)]))
        rld[i].outmode = outmode;
      if (in != 0)
        {
          rtx in_reg = inloc ? *inloc : 0;
# 1414 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
          if (rld[i].in != in && rtx_equal_p (in, rld[i].in)
              && ! (rld[i].optional && optional))
            {


              if (opnum > rld[i].opnum)
                {
                  remove_address_replacements (in);
                  in = rld[i].in;
                  in_reg = rld[i].in_reg;
                }
              else
                remove_address_replacements (rld[i].in);
            }
          rld[i].in = in;
          rld[i].in_reg = in_reg;
        }
      if (out != 0)
        {
          rld[i].out = out;
          rld[i].out_reg = outloc ? *outloc : 0;
        }
      if (reg_class_subset_p (class, rld[i].class))
        rld[i].class = class;
      rld[i].optional &= optional;
      if (((type) != (rld[i].when_needed) || ! ((opnum) == (rld[i].opnum) || (type) == RELOAD_FOR_INPUT || (type) == RELOAD_FOR_OPERAND_ADDRESS || (type) == RELOAD_FOR_OTHER_ADDRESS)))

        rld[i].when_needed = RELOAD_OTHER;
      rld[i].opnum = ((rld[i].opnum) < (opnum) ? (rld[i].opnum) : (opnum));
    }





  if (in != 0 && in != *inloc)
    rld[i].nocombine = 1;
# 1478 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
  if (replace_reloads)
    {
      if (inloc != 0)
        {
          struct replacement *r = &replacements[n_replacements++];
          r->what = i;
          r->subreg_loc = in_subreg_loc;
          r->where = inloc;
          r->mode = inmode;
        }
      if (outloc != 0 && outloc != inloc)
        {
          struct replacement *r = &replacements[n_replacements++];
          r->what = i;
          r->where = outloc;
          r->subreg_loc = out_subreg_loc;
          r->mode = outmode;
        }
    }
# 1506 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
  if (in != 0 && out != 0 && in != out && rld[i].reg_rtx == 0)
    {
      rld[i].reg_rtx = find_dummy_reload (in, out, inloc, outloc,
                                          inmode, outmode,
                                          rld[i].class, i,
                                          earlyclobber_operand_p (out));





      if (rld[i].reg_rtx == out
          && (((enum rtx_code) (in)->code) == REG || (((enum rtx_code) (in)->code) == LABEL_REF || ((enum rtx_code) (in)->code) == SYMBOL_REF || ((enum rtx_code) (in)->code) == CONST_INT || ((enum rtx_code) (in)->code) == CONST_DOUBLE || ((enum rtx_code) (in)->code) == CONST || ((enum rtx_code) (in)->code) == HIGH || ((enum rtx_code) (in)->code) == CONST_VECTOR || ((enum rtx_code) (in)->code) == CONSTANT_P_RTX))
          && 0 != find_equiv_reg (in, this_insn, 0, (((out)->fld[0]).rtuint),
                                  static_reload_reg_p, i, inmode))
        rld[i].in = out;
    }
# 1536 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
  if (rld[i].reg_rtx == 0 && in != 0)
    {
      rtx note;
      int regno;
      enum machine_mode rel_mode = inmode;

      if (out && (mode_size[(int) (outmode)]) > (mode_size[(int) (inmode)]))
        rel_mode = outmode;

      for (note = (((this_insn)->fld[8]).rtx); note; note = (((note)->fld[1]).rtx))
        if (((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_DEAD
            && ((enum rtx_code) ((((note)->fld[0]).rtx))->code) == REG
            && (regno = ((((((note)->fld[0]).rtx))->fld[0]).rtuint)) < 102
            && reg_mentioned_p ((((note)->fld[0]).rtx), in)
            && ! refers_to_regno_for_reload_p (regno,
                                               (regno
                                                + ((! (! (target_flags & 0x10000))) ? ((regno) < 32 || (regno) == 101 ? ((mode_size[(int) (rel_mode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (rel_mode)]) + 3) / 4) : (((mode_size[(int) (rel_mode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4)))),

                                               (((this_insn)->fld[5]).rtx), inloc)



            && (out == 0 || in == out
                || ! hard_reg_set_here_p (regno,
                                          (regno
                                           + ((! (! (target_flags & 0x10000))) ? ((regno) < 32 || (regno) == 101 ? ((mode_size[(int) (rel_mode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (rel_mode)]) + 3) / 4) : (((mode_size[(int) (rel_mode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4)))),

                                          (((this_insn)->fld[5]).rtx)))



            && (in != out
                || (((enum rtx_code) (in)->code) == SUBREG
                    && ((((mode_size[(int) (((enum machine_mode) (in)->mode))]) + (((! (! (target_flags & 0x10000))) ? 8 : 4) - 1))
                         / ((! (! (target_flags & 0x10000))) ? 8 : 4))
                        == (((mode_size[(int) (((enum machine_mode) ((((in)->fld[0]).rtx))->mode))])
                             + (((! (! (target_flags & 0x10000))) ? 8 : 4) - 1)) / ((! (! (target_flags & 0x10000))) ? 8 : 4)))))

            && ((mode_size[(int) (rel_mode)])
                <= (mode_size[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]))
            && ((hard_regno_mode_classes[regno] & sparc_mode_class[inmode]) != 0)
            && ((hard_regno_mode_classes[regno] & sparc_mode_class[outmode]) != 0))
          {
            unsigned int offs;
            unsigned int nregs = ((((! (! (target_flags & 0x10000))) ? ((regno) < 32 || (regno) == 101 ? ((mode_size[(int) (inmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (inmode)]) + 3) / 4) : (((mode_size[(int) (inmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4)))) > (((! (! (target_flags & 0x10000))) ? ((regno) < 32 || (regno) == 101 ? ((mode_size[(int) (outmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (outmode)]) + 3) / 4) : (((mode_size[(int) (outmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4)))) ? (((! (! (target_flags & 0x10000))) ? ((regno) < 32 || (regno) == 101 ? ((mode_size[(int) (inmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (i
 nmode)]) + 3) / 4) : (((mode_size[(int) (inmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4)))) : (((! (! (target_flags & 0x10000))) ? ((regno) < 32 || (regno) == 101 ? ((mode_size[(int) (outmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (outmode)]) + 3) / 4) : (((mode_size[(int) (outmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4)))));


            for (offs = 0; offs < nregs; offs++)
              if (fixed_regs[regno + offs]
                  || ! (!!((reg_class_contents[(int) class])[(regno + offs) / ((unsigned) (8 * 8))] & (((HARD_REG_ELT_TYPE) (1)) << ((regno + offs) % ((unsigned) (8 * 8)))))))

                break;

            if (offs == nregs
                && (! (refers_to_regno_for_reload_p
                       (regno, (regno + ((! (! (target_flags & 0x10000))) ? ((regno) < 32 || (regno) == 101 ? ((mode_size[(int) (inmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (inmode)]) + 3) / 4) : (((mode_size[(int) (inmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4)))),
                                in, (rtx *)0))
                    || can_reload_into (in, regno, inmode)))
              {
                rld[i].reg_rtx = gen_rtx_REG (rel_mode, regno);
                break;
              }
          }
    }

  if (out)
    output_reloadnum = i;

  return i;
}







static void
push_replacement (loc, reloadnum, mode)
     rtx *loc;
     int reloadnum;
     enum machine_mode mode;
{
  if (replace_reloads)
    {
      struct replacement *r = &replacements[n_replacements++];
      r->what = reloadnum;
      r->where = loc;
      r->subreg_loc = 0;
      r->mode = mode;
    }
}





static void
dup_replacements (dup_loc, orig_loc)
     rtx *dup_loc;
     rtx *orig_loc;
{
  int i, n = n_replacements;

  for (i = 0; i < n; i++)
    {
      struct replacement *r = &replacements[i];
      if (r->where == orig_loc)
        push_replacement (dup_loc, r->what, r->mode);
    }
}




void
transfer_replacements (to, from)
     int to, from;
{
  int i;

  for (i = 0; i < n_replacements; i++)
    if (replacements[i].what == from)
      replacements[i].what = to;
}





int
remove_address_replacements (in_rtx)
     rtx in_rtx;
{
  int i, j;
  char reload_flags[(2 * 30 * (2 + 1))];
  int something_changed = 0;

  memset (reload_flags, 0, sizeof reload_flags);
  for (i = 0, j = 0; i < n_replacements; i++)
    {
      if (loc_mentioned_in_p (replacements[i].where, in_rtx))
        reload_flags[replacements[i].what] |= 1;
      else
        {
          replacements[j++] = replacements[i];
          reload_flags[replacements[i].what] |= 2;
        }
    }

  n_replacements = j;

  for (i = n_reloads - 1; i >= 0; i--)
    {
      if (reload_flags[i] == 1)
        {
          deallocate_reload_reg (i);
          remove_address_replacements (rld[i].in);
          rld[i].in = 0;
          something_changed = 1;
        }
    }
  return something_changed;
}
# 1713 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
static void
combine_reloads ()
{
  int i;
  int output_reload = -1;
  int secondary_out = -1;
  rtx note;




  for (i = 0; i < n_reloads; i++)
    if (rld[i].out != 0)
      {
        if (output_reload >= 0)
          return;
        output_reload = i;
      }

  if (output_reload < 0 || rld[output_reload].optional)
    return;



  if (rld[output_reload].in != 0)
    return;


  if (earlyclobber_operand_p (rld[output_reload].out))
    return;





  for (i = 0; i < n_reloads; i++)
    if ((rld[i].when_needed == RELOAD_FOR_OUTPUT_ADDRESS
         || rld[i].when_needed == RELOAD_FOR_OUTADDR_ADDRESS)
        && rld[i].opnum == rld[output_reload].opnum)
      return;



  for (i = 0; i < n_reloads; i++)
    if (rld[i].in && ! rld[i].optional && ! rld[i].nocombine

        && rld[i].when_needed != RELOAD_FOR_OUTPUT_ADDRESS
        && rld[i].when_needed != RELOAD_FOR_OUTADDR_ADDRESS
        && rld[i].when_needed != RELOAD_OTHER
        && ((((rld[i].class) == FP_REGS || (rld[i].class) == EXTRA_FP_REGS) ? ((mode_size[(int) (rld[i].inmode)]) + 3) / 4 : ((mode_size[(int) (rld[i].inmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4))
            == (((rld[output_reload].class) == FP_REGS || (rld[output_reload].class) == EXTRA_FP_REGS) ? ((mode_size[(int) (rld[output_reload].outmode)]) + 3) / 4 : ((mode_size[(int) (rld[output_reload].outmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4)))

        && rld[i].inc == 0
        && rld[i].reg_rtx == 0



        && (secondary_memlocs_elim[(int) rld[output_reload].outmode][rld[i].opnum] == 0
            || secondary_memlocs_elim[(int) rld[output_reload].outmode][rld[output_reload].opnum] == 0
            || rtx_equal_p (secondary_memlocs_elim[(int) rld[output_reload].outmode][rld[i].opnum],
                            secondary_memlocs_elim[(int) rld[output_reload].outmode][rld[output_reload].opnum]))

        && (0
            ? (rld[i].class == rld[output_reload].class)
            : (reg_class_subset_p (rld[i].class,
                                   rld[output_reload].class)
               || reg_class_subset_p (rld[output_reload].class,
                                      rld[i].class)))
        && ((rld[i].in == rld[output_reload].out || (rld[i].in != 0 && (((enum rtx_code) (rld[i].in)->code) == REG ? ((enum rtx_code) (rld[output_reload].out)->code) == REG && (((rld[i].in)->fld[0]).rtuint) == (((rld[output_reload].out)->fld[0]).rtuint) : rtx_equal_p (rld[i].in, rld[output_reload].out) && ! side_effects_p (rld[i].in))))



            || (! reg_overlap_mentioned_for_reload_p (rld[output_reload].out,
                                                      rld[i].in)






                && ! (((enum rtx_code) (rld[i].in)->code) == REG
                      && reg_overlap_mentioned_for_reload_p (rld[i].in,
                                                             rld[output_reload].out))))
        && ! reload_inner_reg_of_subreg (rld[i].in, rld[i].inmode,
                                         rld[i].when_needed != RELOAD_FOR_INPUT)
        && (reg_class_size[(int) rld[i].class]
            || 0)


        && (rld[i].when_needed == RELOAD_FOR_INPUT
            || rld[i].when_needed == RELOAD_FOR_OUTPUT))
      {
        int j;


        rld[i].out = rld[output_reload].out;
        rld[i].out_reg = rld[output_reload].out_reg;
        rld[i].outmode = rld[output_reload].outmode;

        rld[output_reload].out = 0;

        rld[i].when_needed = RELOAD_OTHER;

        if (rld[output_reload].secondary_out_reload != -1)
          {
            rld[i].secondary_out_reload
              = rld[output_reload].secondary_out_reload;
            rld[i].secondary_out_icode
              = rld[output_reload].secondary_out_icode;
          }



        if (secondary_memlocs_elim[(int) rld[output_reload].outmode][rld[output_reload].opnum] != 0)
          secondary_memlocs_elim[(int) rld[output_reload].outmode][rld[i].opnum]
            = secondary_memlocs_elim[(int) rld[output_reload].outmode][rld[output_reload].opnum];


        if (reg_class_subset_p (rld[output_reload].class,
                                rld[i].class))
          rld[i].class = rld[output_reload].class;


        for (j = 0; j < n_replacements; j++)
          if (replacements[j].what == output_reload)
            replacements[j].what = i;

        return;
      }







  if ((((this_insn)->fld[6]).rtint) == -1)
    return;

  for (i = 1; i < insn_data[(((this_insn)->fld[6]).rtint)].n_operands; i++)
    if (insn_data[(((this_insn)->fld[6]).rtint)].operand[i].constraint[0] == '='
        || insn_data[(((this_insn)->fld[6]).rtint)].operand[i].constraint[0] == '+')
      return;




  for (note = (((this_insn)->fld[8]).rtx); note; note = (((note)->fld[1]).rtx))
    if (((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_DEAD
        && ((enum rtx_code) ((((note)->fld[0]).rtx))->code) == REG
        && ! reg_overlap_mentioned_for_reload_p ((((note)->fld[0]).rtx),
                                                 rld[output_reload].out)
        && ((((((note)->fld[0]).rtx))->fld[0]).rtuint) < 102
        && ((hard_regno_mode_classes[((((((note)->fld[0]).rtx))->fld[0]).rtuint)] & sparc_mode_class[rld[output_reload].outmode]) != 0)
        && (!!((reg_class_contents[(int) rld[output_reload].class])[(((((((note)->fld[0]).rtx))->fld[0]).rtuint)) / ((unsigned) (8 * 8))] & (((HARD_REG_ELT_TYPE) (1)) << ((((((((note)->fld[0]).rtx))->fld[0]).rtuint)) % ((unsigned) (8 * 8))))))

        && (((! (! (target_flags & 0x10000))) ? ((((((((note)->fld[0]).rtx))->fld[0]).rtuint)) < 32 || (((((((note)->fld[0]).rtx))->fld[0]).rtuint)) == 101 ? ((mode_size[(int) (rld[output_reload].outmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (rld[output_reload].outmode)]) + 3) / 4) : (((mode_size[(int) (rld[output_reload].outmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4)))
            <= ((! (! (target_flags & 0x10000))) ? ((((((((note)->fld[0]).rtx))->fld[0]).rtuint)) < 32 || (((((((note)->fld[0]).rtx))->fld[0]).rtuint)) == 101 ? ((mode_size[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]) + 3) / 4) : (((mode_size[(int) (((enum machine_mode) ((((note)->fld[0]).rtx))->mode))]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4))))


        && ((secondary_out = rld[output_reload].secondary_out_reload) == -1
            || (! ((!!((reg_class_contents[(int) rld[secondary_out].class])[(((((((note)->fld[0]).rtx))->fld[0]).rtuint)) / ((unsigned) (8 * 8))] & (((HARD_REG_ELT_TYPE) (1)) << ((((((((note)->fld[0]).rtx))->fld[0]).rtuint)) % ((unsigned) (8 * 8)))))))


                && ((secondary_out = rld[secondary_out].secondary_out_reload) == -1
                    || ! ((!!((reg_class_contents[(int) rld[secondary_out].class])[(((((((note)->fld[0]).rtx))->fld[0]).rtuint)) / ((unsigned) (8 * 8))] & (((HARD_REG_ELT_TYPE) (1)) << ((((((((note)->fld[0]).rtx))->fld[0]).rtuint)) % ((unsigned) (8 * 8))))))))))


        && ! fixed_regs[((((((note)->fld[0]).rtx))->fld[0]).rtuint)])
      {
        rld[output_reload].reg_rtx
          = gen_rtx_REG (rld[output_reload].outmode,
                         ((((((note)->fld[0]).rtx))->fld[0]).rtuint));
        return;
      }
}
# 1910 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
static rtx
find_dummy_reload (real_in, real_out, inloc, outloc,
                   inmode, outmode, class, for_real, earlyclobber)
     rtx real_in, real_out;
     rtx *inloc, *outloc;
     enum machine_mode inmode, outmode;
     enum reg_class class;
     int for_real;
     int earlyclobber;
{
  rtx in = real_in;
  rtx out = real_out;
  int in_offset = 0;
  int out_offset = 0;
  rtx value = 0;



  if ((mode_size[(int) (outmode)]) != (mode_size[(int) (inmode)])
      && ((mode_size[(int) (outmode)]) > ((! (! (target_flags & 0x10000))) ? 8 : 4)
          || (mode_size[(int) (inmode)]) > ((! (! (target_flags & 0x10000))) ? 8 : 4)))
    return 0;





  while (((enum rtx_code) (out)->code) == SUBREG)
    {
      if (((enum rtx_code) ((((out)->fld[0]).rtx))->code) == REG
          && ((((((out)->fld[0]).rtx))->fld[0]).rtuint) < 102)
        out_offset += subreg_regno_offset (((((((out)->fld[0]).rtx))->fld[0]).rtuint),
                                           ((enum machine_mode) ((((out)->fld[0]).rtx))->mode),
                                           (((out)->fld[1]).rtuint),
                                           ((enum machine_mode) (out)->mode));
      out = (((out)->fld[0]).rtx);
    }
  while (((enum rtx_code) (in)->code) == SUBREG)
    {
      if (((enum rtx_code) ((((in)->fld[0]).rtx))->code) == REG
          && ((((((in)->fld[0]).rtx))->fld[0]).rtuint) < 102)
        in_offset += subreg_regno_offset (((((((in)->fld[0]).rtx))->fld[0]).rtuint),
                                          ((enum machine_mode) ((((in)->fld[0]).rtx))->mode),
                                          (((in)->fld[1]).rtuint),
                                          ((enum machine_mode) (in)->mode));
      in = (((in)->fld[0]).rtx);
    }



  class = ((((enum rtx_code) (in)->code) == LABEL_REF || ((enum rtx_code) (in)->code) == SYMBOL_REF || ((enum rtx_code) (in)->code) == CONST_INT || ((enum rtx_code) (in)->code) == CONST_DOUBLE || ((enum rtx_code) (in)->code) == CONST || ((enum rtx_code) (in)->code) == HIGH || ((enum rtx_code) (in)->code) == CONST_VECTOR || ((enum rtx_code) (in)->code) == CONSTANT_P_RTX) ? ((((class) == FP_REGS || (class) == EXTRA_FP_REGS) || (class) == GENERAL_OR_FP_REGS || (class) == GENERAL_OR_EXTRA_FP_REGS || ((mode_class[(int) (((enum machine_mode) (in)->mode))]) == MODE_FLOAT && ! (target_flags & 1)) || (((enum machine_mode) (in)->mode) == TFmode && ! fp_zero_operand (in, TFmode))) ? NO_REGS : (!((class) == FP_REGS || (class) == EXTRA_FP_REGS) && (mode_class[(int) (((enum machine_mode) (in)->mode))]) == MODE_INT) ? GENERAL_REGS : (class)) : (class));


  if (((enum rtx_code) (out)->code) == REG
      && (((out)->fld[0]).rtuint) < 102)
    {
      unsigned int regno = (((out)->fld[0]).rtuint) + out_offset;
      unsigned int nwords = ((! (! (target_flags & 0x10000))) ? ((regno) < 32 || (regno) == 101 ? ((mode_size[(int) (outmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (outmode)]) + 3) / 4) : (((mode_size[(int) (outmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4)));
      rtx saved_rtx;
# 1979 "/opt/local/src/gcc-3.3.3/gcc/reload.c"
      saved_rtx = *inloc;
      *inloc = (const_int_rtx[64]);

      if (regno < 102
          && ((hard_regno_mode_classes[regno] & sparc_mode_class[outmode]) != 0)
          && ! refers_to_regno_for_reload_p (regno, regno + nwords,
                                             (((this_insn)->fld[5]).rtx), outloc))
        {
          unsigned int i;

          for (i = 0; i < nwords; i++)
            if (! (!!((reg_class_contents[(int) class])[(regno + i) / ((unsigned) (8 * 8))] & (((HARD_REG_ELT_TYPE) (1)) << ((regno + i) % ((unsigned) (8 * 8)))))))

              break;

          if (i == nwords)
            {
              if (((enum rtx_code) (real_out)->code) == REG)
                value = real_out;
              else
                value = gen_rtx_REG (outmode, regno);
            }
        }

      *inloc = saved_rtx;
    }







  if (hard_regs_live_known
      && ((enum rtx_code) (in)->code) == REG
      && (((in)->fld[0]).rtuint) < 102
      && (value == 0
          || find_reg_note (this_insn, REG_UNUSED, real_out))
      && find_reg_note (this_insn, REG_DEAD, real_in)
      && !fixed_regs[(((in)->fld[0]).rtuint)]
      && ((hard_regno_mode_classes[(((in)->fld[0]).rtuint)] & sparc_mode_class[(((enum machine_mode) (out)->mode) != VOIDmode ? ((enum machine_mode) (out)->mode) : outmode)]) != 0))






    {
      unsigned int regno = (((in)->fld[0]).rtuint) + in_offset;
      unsigned int nwords = ((! (! (target_flags & 0x10000))) ? ((regno) < 32 || (regno) == 101 ? ((mode_size[(int) (inmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (inmode)]) + 3) / 4) : (((mode_size[(int) (inmode)]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4)));

      if (! refers_to_regno_for_reload_p (regno, regno + nwords, out, (rtx*) 0)
          && ! hard_reg_set_here_p (regno, regno + nwords,
                                    (((this_insn)->fld[5]).rtx))
          && (! earlyclobber
              || ! refers_to_regno_for_reload_p (regno, regno + nwords,
                                                 (((this_insn)->fld[5]).rtx), inloc)))
        {
          unsigned int i;

          for (i = 0; i < nwords; i++)
            if (! (!!((reg_class_contents[(int) class])[(regno + i) / ((unsigned) (8 * 8))] & (((HARD_REG_ELT_TYPE) (1)) << ((regno + i) % ((unsigned) (8 * 8)))))))

              break;

          if (i == nwords)
            {



              if (for_real >= 0 && value == real_out)
                rld[for_real].out = 0;
              if (((enum rtx_code) (real_in)->code) == REG)
                value = real_in;
              else
                value = gen_rtx_REG (inmode, regno);
            }
        }
    }

  return value;
}







int
earlyclobber_operand_p (x)
     rtx x;
{
  int i;

  for (i = 0; i < n_earlyclobbers; i++)
    if (reload_earlyclobbers[i] == x)
      return 1;

  return 0;
}






static int
hard_reg_set_here_p (beg_regno, end_regno, x)
     unsigned int beg_regno, end_regno;
     rtx x;
{
  if (((enum rtx_code) (x)->code) == SET || ((enum rtx_code) (x)->code) == CLOBBER)
    {
      rtx op0 = (((x)->fld[0]).rtx);

      while (((enum rtx_code) (op0)->code) == SUBREG)
        op0 = (((op0)->fld[0]).rtx);
      if (((enum rtx_code) (op0)->code) == REG)
        {
          unsigned int r = (((op0)->fld[0]).rtuint);


          if (r < end_regno
              && r + ((! (! (target_flags & 0x10000))) ? ((r) < 32 || (r) == 101 ? ((mode_size[(int) (((enum machine_mode) (op0)->mode))]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4) : ((mode_size[(int) (((enum machine_mode) (op0)->mode))]) + 3) / 4) : (((mode_size[(int) (((enum machine_mode) (op0)->mode))]) + ((! (! (target_flags & 0x10000))) ? 8 : 4) - 1) / ((! (! (target_flags & 0x10000))) ? 8 : 4))) > beg_regno)
            return 1;
        }
    }
  else if (((enum rtx_code) (x)->code) == PARALLEL)
    {
      int i = (((((x)->fld[0]).rtvec))->num_elem) - 1;

      for (; i >= 0; i--)
        if (hard_reg_set_here_p (beg_regno, end_regno, (((((x)->fld[0]).rtvec))->elem[i])))
          return 1;
    }

  return 0;
}





int
strict_memory_address_p (mode, addr)
     enum machine_mode mode __attribute__ ((__unused__));
     rtx addr;
{

-- 
           Summary: Fail to bootstrap gcc-3.3.3 on an old Sparcstation 10
           Product: gcc
           Version: 3.3
            Status: UNCONFIRMED
          Severity: critical
          Priority: P2
         Component: bootstrap
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hk at simulina dot se
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: sparc-sun-solaris2.9
  GCC host triplet: sparc-sun-solaris2.9
GCC target triplet: sparc-sun-solaris2.9


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14162


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Bug bootstrap/14162] Fail to bootstrap gcc-3.3.3 on an old Sparcstation 10
  2004-02-16 16:30 [Bug bootstrap/14162] New: Fail to bootstrap gcc-3.3.3 on an old Sparcstation 10 gcc-bugzilla at gcc dot gnu dot org
@ 2004-02-16 16:36 ` pinskia at gcc dot gnu dot org
  0 siblings, 0 replies; 2+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-02-16 16:36 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2004-02-16 16:36 -------
Not a bug in GCC, this looks like a hardware problem.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |INVALID
            Version|3.3                         |3.3.3


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14162


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-02-16 16:36 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-02-16 16:30 [Bug bootstrap/14162] New: Fail to bootstrap gcc-3.3.3 on an old Sparcstation 10 gcc-bugzilla at gcc dot gnu dot org
2004-02-16 16:36 ` [Bug bootstrap/14162] " pinskia at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).