This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

bootstrap/8452: Internal Compiler Error building GCC 3.2 on Tru64 5.0A


>Number:         8452
>Category:       bootstrap
>Synopsis:       Internal Compiler Error building GCC 3.2 on Tru64 5.0A
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Nov 04 13:46:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     lwe@cfdrc.com
>Release:        gcc 3.2
>Organization:
>Environment:
alphaev56-dec-osf5.0
>Description:
System type:

heaven.cfdrc.com> ../../config.guess 
alphaev56-dec-osf5.0

GCC Version:

heaven.cfdrc.com> stage2/xgcc -v
Using built-in specs.
Configured with: ../configure --enable-threads=posix --enable-shared
Thread model: posix
gcc version 3.2

Command line that caused the error:

heaven.cfdrc.com> stage2/xgcc -Bstage2/ -B/usr/local/alphaev56-dec-osf5.0/bin/ -c -DIN_GCC -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -pedantic -Wno-long-long -save-temps -DHAVE_CONFIG_H -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/config -I../../gcc/../include ../../gcc/predict.c -o predict.o
../../gcc/predict.c: In function `propagate_freq':
../../gcc/predict.c:708: Internal compiler error in @œ
                                                      @, at F:537426288
Please submit a full bug report,
with preprocessed source if appropriate.
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/plain; name="predict.i"
Content-Disposition: inline; filename="predict.i"

# 1 "../../gcc/predict.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "../../gcc/predict.c"
# 31 "../../gcc/predict.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 "../../include/ansidecl.h" 1
# 17 "config.h" 2
# 1 "../../gcc/config/alpha/alpha.h" 1
# 57 "../../gcc/config/alpha/alpha.h"
enum processor_type
 {PROCESSOR_EV4,
  PROCESSOR_EV5,
  PROCESSOR_EV6};

extern enum processor_type alpha_cpu;

enum alpha_trap_precision
{
  ALPHA_TP_PROG,
  ALPHA_TP_FUNC,
  ALPHA_TP_INSN
};

enum alpha_fp_rounding_mode
{
  ALPHA_FPRM_NORM,
  ALPHA_FPRM_MINF,
  ALPHA_FPRM_CHOP,
  ALPHA_FPRM_DYN
};

enum alpha_fp_trap_mode
{
  ALPHA_FPTM_N,
  ALPHA_FPTM_U,
  ALPHA_FPTM_SU,
  ALPHA_FPTM_SUI
};

extern int target_flags;

extern enum alpha_trap_precision alpha_tp;
extern enum alpha_fp_rounding_mode alpha_fprm;
extern enum alpha_fp_trap_mode alpha_fptm;
# 265 "../../gcc/config/alpha/alpha.h"
extern const char *alpha_cpu_string;
extern const char *alpha_tune_string;
extern const char *alpha_fprm_string;
extern const char *alpha_fptm_string;
extern const char *alpha_tp_string;
extern const char *alpha_mlat_string;
# 721 "../../gcc/config/alpha/alpha.h"
enum reg_class {
  NO_REGS, R24_REG, R25_REG, R27_REG,
  GENERAL_REGS, FLOAT_REGS, ALL_REGS,
  LIM_REG_CLASSES
};
# 888 "../../gcc/config/alpha/alpha.h"
extern int alpha_memory_latency;
# 1192 "../../gcc/config/alpha/alpha.h"
struct alpha_compare
{
  struct rtx_def *op0, *op1;
  int fp_p;
};

extern struct alpha_compare alpha_compare;
# 2086 "../../gcc/config/alpha/alpha.h"
extern long alpha_arg_offset;
extern long alpha_auto_offset;
# 2149 "../../gcc/config/alpha/alpha.h"
extern int sdb_label_count;
# 18 "config.h" 2
# 1 "../../gcc/config/dbx.h" 1
# 19 "config.h" 2
# 1 "../../gcc/config/alpha/osf.h" 1
# 20 "config.h" 2
# 1 "../../gcc/config/alpha/osf5.h" 1
# 21 "config.h" 2
# 1 "../../gcc/defaults.h" 1
# 22 "config.h" 2
# 30 "config.h"
# 1 "insn-constants.h" 1
# 31 "config.h" 2
# 1 "insn-flags.h" 1
# 260 "insn-flags.h"
struct rtx_def;
extern struct rtx_def *gen_addvsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addvdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negvsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negvdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subvsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subvdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulvsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_muldi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulvdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umuldi3_highpart (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_anddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendsidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_andnotdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_iordi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_one_cmpldi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_xordi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashldi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqidi2x (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendhidi2x (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqisi2x (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendhisi2x (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqihi2x (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extxl_le (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extxl_be (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extqh_le (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extqh_be (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extlh_le (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extlh_be (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extwh_le (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extwh_be (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insbl_le (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insbl_be (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_inswl_le (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_inswl_be (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insll_le (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insll_be (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insql_le (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insql_be (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insxh (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mskxl_le (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mskxl_be (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mskxh (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_abssf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_adddf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdfdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsfdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatdisf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatdidf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_truncdfsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divdf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_muldf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subdf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sminqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_uminqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smaxqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umaxqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sminhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_uminhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smaxhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umaxhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_blockage (void);
extern struct rtx_def *gen_jump (struct rtx_def *);
extern struct rtx_def *gen_indirect_jump (struct rtx_def *);
extern struct rtx_def *gen_imb (void);
extern struct rtx_def *gen_trap (void);
extern struct rtx_def *gen_umk_laum (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umk_lalm (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umk_lal (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdi_er_high_g (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdi_er_maybe_g (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_force_movdi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_inqi_help (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_inhi_help (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_outqi_help (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_outhi_help (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_prologue_stack_probe_loop (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_prologue_mcount (void);
extern struct rtx_def *gen_init_fp (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_nt_lda (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_builtin_longjmp_internal (struct rtx_def *);
extern struct rtx_def *gen_arg_home (void);
extern struct rtx_def *gen_arg_home_umk (void);
extern struct rtx_def *gen_prefetch (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_trapb (void);
extern struct rtx_def *gen_nop (void);
extern struct rtx_def *gen_fnop (void);
extern struct rtx_def *gen_unop (void);
extern struct rtx_def *gen_realign (struct rtx_def *);
extern struct rtx_def *gen_extendsidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_adddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_udivsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_modsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umodsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_udivdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_moddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_moddi3_dft (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_moddi3_umk (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umoddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umoddi3_dft (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umoddi3_umk (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendqihi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendqisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendqidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendhisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendhidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ffsdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqihi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendhisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendhidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_extendqidi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_extendqidi_le (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_extendqidi_be (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_extendhidi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_extendhidi_le (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_extendhidi_be (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_abstf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negtf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addtf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_trunctfdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatditf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatunsdisf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatunsdidf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatunsditf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendsfdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendsftf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extenddftf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_trunctfdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_trunctfsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divtf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_multf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subtf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absdi2_same (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absdi2_diff (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smaxdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smindi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umaxdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umindi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_maxdf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mindf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_maxsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_minsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpdf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmptf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpdi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_beq (struct rtx_def *);
extern struct rtx_def *gen_bne (struct rtx_def *);
extern struct rtx_def *gen_blt (struct rtx_def *);
extern struct rtx_def *gen_ble (struct rtx_def *);
extern struct rtx_def *gen_bgt (struct rtx_def *);
extern struct rtx_def *gen_bge (struct rtx_def *);
extern struct rtx_def *gen_bltu (struct rtx_def *);
extern struct rtx_def *gen_bleu (struct rtx_def *);
extern struct rtx_def *gen_bgtu (struct rtx_def *);
extern struct rtx_def *gen_bgeu (struct rtx_def *);
extern struct rtx_def *gen_bunordered (struct rtx_def *);
extern struct rtx_def *gen_bordered (struct rtx_def *);
extern struct rtx_def *gen_seq (struct rtx_def *);
extern struct rtx_def *gen_sne (struct rtx_def *);
extern struct rtx_def *gen_slt (struct rtx_def *);
extern struct rtx_def *gen_sle (struct rtx_def *);
extern struct rtx_def *gen_sgt (struct rtx_def *);
extern struct rtx_def *gen_sge (struct rtx_def *);
extern struct rtx_def *gen_sltu (struct rtx_def *);
extern struct rtx_def *gen_sleu (struct rtx_def *);
extern struct rtx_def *gen_sgtu (struct rtx_def *);
extern struct rtx_def *gen_sgeu (struct rtx_def *);
extern struct rtx_def *gen_sunordered (struct rtx_def *);
extern struct rtx_def *gen_sordered (struct rtx_def *);
extern struct rtx_def *gen_movsicc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdicc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movsfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);

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

extern struct rtx_def *gen_sibcall (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_osf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_nt (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_umk (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_vms (struct rtx_def *, struct rtx_def *);

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

extern struct rtx_def *gen_sibcall_value (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_value_osf (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_value_nt (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_value_vms (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_value_umk (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_untyped_call (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_return (void);
extern struct rtx_def *gen_tablejump (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movsf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movtf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movsi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_aligned_loadqi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_aligned_loadhi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_loadqi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_loadqi_le (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_loadqi_be (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_loadhi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_loadhi_le (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_loadhi_be (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_aligned_store (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_storeqi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_storeqi_le (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_storeqi_be (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_storehi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_storehi_le (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_storehi_be (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movqi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movhi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_inqi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_inhi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_outqi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_outhi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extv (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extzv (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insv (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movstrqi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_clrstrqi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_probe_stack (struct rtx_def *);
extern struct rtx_def *gen_allocate_stack (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_prologue (void);
extern struct rtx_def *gen_prologue_ldgp (void);
extern struct rtx_def *gen_epilogue (void);
extern struct rtx_def *gen_sibcall_epilogue (void);
extern struct rtx_def *gen_builtin_longjmp (struct rtx_def *);
extern struct rtx_def *gen_builtin_setjmp_receiver_er (struct rtx_def *);
extern struct rtx_def *gen_builtin_setjmp_receiver (struct rtx_def *);
extern struct rtx_def *gen_exception_receiver_er (void);
extern struct rtx_def *gen_exception_receiver (void);
extern struct rtx_def *gen_nonlocal_goto_receiver (void);
extern struct rtx_def *gen_umk_mismatch_args (struct rtx_def *);
# 32 "config.h" 2
# 32 "../../gcc/predict.c" 2
# 1 "../../gcc/system.h" 1
# 33 "../../gcc/system.h"
# 1 "include/stdarg.h" 1 3
# 43 "include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 110 "include/stdarg.h" 3
typedef __gnuc_va_list va_list;
# 34 "../../gcc/system.h" 2
# 47 "../../gcc/system.h"
# 1 "include/stddef.h" 1 3
# 147 "include/stddef.h" 3
typedef long int ptrdiff_t;
# 201 "include/stddef.h" 3
typedef long unsigned int size_t;
# 294 "include/stddef.h" 3
typedef unsigned int wchar_t;
# 48 "../../gcc/system.h" 2


# 1 "include/stdio.h" 1 3
# 62 "include/stdio.h" 3
# 1 "/usr/include/standards.h" 1 3
# 63 "include/stdio.h" 2 3
# 106 "include/stdio.h" 3
typedef long fpos_t;
# 146 "include/stdio.h" 3
# 1 "/usr/include/sys/seek.h" 1 3
# 147 "include/stdio.h" 2 3

typedef struct {
        int _cnt;
        unsigned int _flag2;
 unsigned char *_ptr;
        unsigned char *_base;
        int _bufsiz;
        short _flag;
        short _file;




        char *__newbase;
        void *_lock;
        unsigned char *_bufendp;
} FILE;

extern FILE _iob[];
# 178 "include/stdio.h" 3
extern size_t fread (void *, size_t, size_t, FILE *);
extern size_t fwrite (const void *, size_t, size_t, FILE *);


extern int _flsbuf (int, FILE *);
extern int _filbuf (FILE *);
extern int ferror (FILE *);
extern int feof (FILE *);
extern void clearerr (FILE *);
extern int putchar (int);
extern int getchar (void);
extern int putc (int, FILE *);
extern int getc (FILE *);
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 snprintf (char *, size_t, const char *, ...);
# 221 "include/stdio.h" 3
# 1 "include/va_list.h" 1 3
# 222 "include/stdio.h" 2 3
extern int vfprintf (FILE *, const char *, __gnuc_va_list);
extern int vprintf (const char *, __gnuc_va_list);
extern int vsprintf (char *, const char *, __gnuc_va_list);

extern int vsnprintf (char *, size_t, const char*, __gnuc_va_list);
# 242 "include/stdio.h" 3
extern int fgetc (FILE *);
extern char *fgets (char *, int, FILE *);
extern int fputc (int, FILE *);
extern int fputs (const char *, FILE *);
extern char *gets (char *);
extern int puts (const char *);
extern int ungetc (int, FILE *);
extern int fseek (FILE *, long, int);
# 278 "include/stdio.h" 3
extern int fsetpos (FILE *, const fpos_t *);
extern int fgetpos (FILE *, fpos_t *);

extern long ftell (FILE *);
extern void rewind (FILE *);
extern void perror (const char *);
# 436 "include/stdio.h" 3
# 1 "include/sys/types.h" 1 3
# 126 "include/sys/types.h" 3
typedef unsigned int wctype_t;
# 135 "include/sys/types.h" 3
# 1 "/usr/include/time_t.h" 1 3
# 34 "/usr/include/time_t.h" 3
typedef int time_t;
# 136 "include/sys/types.h" 2 3



typedef int clock_t;
# 157 "include/sys/types.h" 3
typedef long ssize_t;





typedef unsigned char uchar_t;
typedef unsigned short ushort_t;
typedef unsigned int uint_t;
typedef unsigned long ulong_t;
typedef volatile unsigned char vuchar_t;
typedef volatile unsigned short vushort_t;
typedef volatile unsigned int vuint_t;
typedef volatile unsigned long vulong_t;




typedef struct { long r[1]; } *physadr_t;




typedef struct label_t {
        long val[10];
} label_t;
# 238 "include/sys/types.h" 3
typedef int level_t;
typedef int daddr_t;
typedef char * caddr_t;
typedef long * qaddr_t;
typedef char * addr_t;
typedef uint_t ino_t;
typedef short cnt_t;
typedef int dev_t;
typedef int chan_t;





typedef long off_t;


typedef long t_scalar_t;
typedef unsigned long t_uscalar_t;
# 270 "include/sys/types.h" 3
typedef unsigned long rlim_t;
typedef int paddr_t;
typedef ushort_t nlink_t;



typedef int key_t;




typedef uint_t mode_t;







typedef uint_t uid_t;





typedef uint_t gid_t;




typedef void * mid_t;




typedef int pid_t;

typedef union cpid {
        struct {
                unsigned int pid:19;
                unsigned int nodeid:8;
                unsigned int seqnum:4;
                unsigned int signbit:1;
        } cluster_fields;
        pid_t ipid;
} cpid_t;






typedef char slab_t[12];

typedef ulong_t shmatt_t;
typedef ulong_t msgqnum_t;
typedef ulong_t msglen_t;



        typedef unsigned int wint_t;
# 339 "include/sys/types.h" 3
typedef unsigned long sigset_t;
# 356 "include/sys/types.h" 3
typedef struct __pthread_attr_t {
    long __valid;
    char* __name;
    unsigned long __arg;
    unsigned long __reserved[19];
    } pthread_attr_t;

typedef struct __pthread_mutexattr_t {
    long __valid;
    unsigned long __reserved[15];
    } pthread_mutexattr_t;

typedef struct __pthread_condattr_t {
    long __valid;
    unsigned long __reserved[13];
    } pthread_condattr_t;

typedef struct __pthread_rwlockattr_t {
    long __valid;
    unsigned long __reserved[15];
    } pthread_rwlockattr_t;
# 406 "include/sys/types.h" 3
typedef struct __pthread_t {
    void* __reserved1;
    void* __reserved2;
    unsigned short __size;
    unsigned char __version;
    unsigned char __reserved3;
    unsigned char __external;
    unsigned char __reserved4[2];
    unsigned char __creator;
    unsigned long __sequence;
    unsigned long __reserved5[2];
    void* __per_kt_area;
    void* __stack_base;
    void* __stack_reserve;
    void* __stack_yellow;
    void* __stack_guard;
    unsigned long __stack_size;
    void** __tsd_values;
    unsigned long __tsd_count;
    unsigned int __reserved6;
    unsigned int __reserved7;
    unsigned int __thread_flags;
    int __thd_errno;
    void* __stack_hiwater;
    } *pthread_t, pthreadTeb_t;

typedef struct __pthread_mutex_t {
    unsigned int __lock;
    unsigned int __valid;
    char* __name;
    unsigned int __arg;
    unsigned int __depth;
    unsigned long __sequence;
    unsigned long __owner;
    void* __block;
    } pthread_mutex_t;

typedef struct __pthread_cond_t {
    unsigned int __state;
    unsigned int __valid;
    char* __name;
    unsigned int __arg;
    unsigned int __reserved1;
    unsigned long __sequence;
    void* __block;
    } pthread_cond_t;

typedef struct __pthread_rwlock_t {
    unsigned int __valid;
    unsigned int __flags;
    char* __name;
    unsigned int __arg;
    unsigned int __readers;
    unsigned int __rwaits;
    unsigned int __wwaits;
    unsigned long __sequence;
    unsigned long __wrid;
    void* __block;
    unsigned long __reserved1;
    } pthread_rwlock_t;

typedef unsigned int pthread_key_t;

typedef struct __pthread_once_t {
    long __state;
    long __reserved[10];
    } pthread_once_t;
# 482 "include/sys/types.h" 3
typedef long timer_t;
# 506 "include/sys/types.h" 3
typedef void (*sig_t) (int,void (*)(int));
# 519 "include/sys/types.h" 3
typedef pid_t id_t;




typedef unsigned int useconds_t;
# 533 "include/sys/types.h" 3
typedef uint_t major_t;
typedef uint_t minor_t;
typedef uint_t devs_t;
typedef uint_t unit_t;
# 556 "include/sys/types.h" 3
# 1 "/usr/include/mach/machine/vm_types.h" 1 3
# 67 "/usr/include/mach/machine/vm_types.h" 3
typedef unsigned long vm_offset_t;
typedef unsigned long vm_size_t;
# 557 "include/sys/types.h" 2 3




typedef uchar_t uchar;
typedef ushort_t ushort;
typedef uint_t uint;
typedef ulong_t ulong;


typedef physadr_t physadr;


typedef uchar_t u_char;
typedef ushort_t u_short;
typedef uint_t u_int;
typedef ulong_t u_long;
typedef vuchar_t vu_char;
typedef vushort_t vu_short;
typedef vuint_t vu_int;
typedef vulong_t vu_long;





typedef struct _quad { int val[2]; } quad;


typedef long swblk_t;
typedef u_long fixpt_t;

# 1 "/usr/include/sys/select.h" 1 3
# 50 "/usr/include/sys/select.h" 3
# 1 "include/sys/types.h" 1 3
# 51 "/usr/include/sys/select.h" 2 3
# 166 "/usr/include/sys/select.h" 3
typedef int fd_mask;
# 190 "/usr/include/sys/select.h" 3
typedef struct fd_set {
        fd_mask fds_bits[((((unsigned)4096)+(((sizeof(fd_mask) * 8))-1))/((sizeof(fd_mask) * 8)))];
} fd_set;
# 243 "/usr/include/sys/select.h" 3
extern void bzero (void *, size_t);






struct timeval;
int select (int, fd_set *, fd_set *, fd_set *, struct timeval *);
# 590 "include/sys/types.h" 2 3





typedef unsigned char sa_family_t;


typedef unsigned int in_addr_t;

typedef unsigned short in_port_t;



# 1 "/usr/include/sys/common_protos.h" 1 3
# 605 "include/sys/types.h" 2 3
# 437 "include/stdio.h" 2 3
# 454 "include/stdio.h" 3
extern int fileno (FILE *);
extern FILE *fdopen (int, const char *);
# 474 "include/stdio.h" 3
extern char *cuserid (char *);
# 493 "include/stdio.h" 3
# 1 "../../include/getopt.h" 1 3
# 36 "../../include/getopt.h" 3
extern char *optarg;
# 50 "../../include/getopt.h" 3
extern int optind;




extern int opterr;



extern int optopt;
# 82 "../../include/getopt.h" 3
struct option
{

  const char *name;





  int has_arg;
  int *flag;
  int val;
};
# 118 "../../include/getopt.h" 3
extern int getopt_long (int argc, char *const *argv, const char *shortopts,
                        const struct option *longopts, int *longind);
extern int getopt_long_only (int argc, char *const *argv,
                             const char *shortopts,
                             const struct option *longopts, int *longind);


extern int _getopt_internal (int argc, char *const *argv,
                             const char *shortopts,
                             const struct option *longopts, int *longind,
                             int long_only);
# 494 "include/stdio.h" 2 3




extern char *ctermid (char *);
extern int getw (FILE *);
extern int pclose (FILE *);
extern int putw (int, FILE*);
extern FILE *popen (const char *, const char *);
extern char *tempnam (const char*, const char*);






# 1 "include/sys/limits.h" 1 3
# 86 "include/sys/limits.h" 3
# 1 "/usr/include/machine/machlimits.h" 1 3
# 87 "include/sys/limits.h" 2 3
# 152 "include/sys/limits.h" 3
# 1 "/usr/include/sys/syslimits.h" 1 3
# 153 "include/sys/limits.h" 2 3
# 249 "include/sys/limits.h" 3
# 1 "/usr/include/machine/machtime.h" 1 3
# 250 "include/sys/limits.h" 2 3
# 267 "include/sys/limits.h" 3
# 1 "/usr/include/sys/rt_limits.h" 1 3
# 268 "include/sys/limits.h" 2 3
# 511 "include/stdio.h" 2 3
# 541 "include/stdio.h" 3
extern void setbuffer (FILE *, char*, int);
extern void setlinebuf (FILE *);
# 51 "../../gcc/system.h" 2
# 110 "../../gcc/system.h"
# 1 "../../include/safe-ctype.h" 1
# 44 "../../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 "../../include/safe-ctype.h"
extern const unsigned char _sch_toupper[256];
extern const unsigned char _sch_tolower[256];
# 111 "../../gcc/system.h" 2



# 1 "/usr/include/errno.h" 1 3
# 77 "/usr/include/errno.h" 3
extern int *_errno (void);
extern int _Geterrno (void);
extern int _Seterrno (int);


extern int __geterrno (void);



extern int __seterrno (int);






extern int errno;
# 293 "/usr/include/errno.h" 3
extern void perror (const char *);
extern char *sys_errlist[];
extern int sys_nerr;
# 115 "../../gcc/system.h" 2






# 1 "include/string.h" 1 3
# 98 "include/string.h" 3
extern void *memchr (const void *, int , size_t );
extern void *memcpy (void *, const void *, size_t );
extern void *memset (void *, int , size_t );
extern size_t strcspn (const char *, const char *);
extern size_t strlen (const char *);
extern size_t strspn (const char *, const char *);



extern void *memmove (void *, const void *, size_t );
extern char *strcpy (char *, const char *);
extern char *strncpy (char *, const char *, size_t );
extern char *strcat (char *, const char *);
extern char *strncat (char *, const char *, size_t );
extern int memcmp (const void *, const void *,size_t );
extern int strcmp (const char *, const char *);
extern int strcoll (const char *, const char *);
extern int strncmp (const char *,const char *,size_t );
extern size_t strxfrm (char *, const char *, 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 *);
extern char *strtok (char *, const char *);
extern char *strerror (int);




extern char *strtok_r (char *, const char *, char **);
# 139 "include/string.h" 3
extern void *memccpy (void *, const void *, int , size_t );
# 148 "include/string.h" 3
extern void swab (const void *, void *, ssize_t);





extern char *strdup (const char *);






# 1 "/usr/include/strings.h" 1 3
# 79 "/usr/include/strings.h" 3
extern int bcmp (const void *, const void *, size_t );
extern void bcopy (const void *, void *, size_t);
extern void bzero (void *, size_t);






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




# 1 "include/string.h" 1 3
# 98 "/usr/include/strings.h" 2 3
# 162 "include/string.h" 2 3
# 172 "include/string.h" 3
extern char * basename (char *);
extern char * dirname (char *);
# 122 "../../gcc/system.h" 2
# 134 "../../gcc/system.h"
# 1 "include/stdlib.h" 1 3
# 129 "include/stdlib.h" 3
typedef struct

         div_t

                {
        int quot;
        int rem; } div_t;

typedef struct

        ldiv_t

                        {
        long int quot;
        long int rem; } ldiv_t;
# 160 "include/stdlib.h" 3
extern int __getmbcurmax (void);




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 size_t wcstombs (char *, const wchar_t *, size_t);
extern int wctomb (char *, wchar_t);


extern int rpmatch (const char *);

extern void *valloc (size_t );


extern double atof (const char *);
extern int atoi (const char *);
extern long int atol (const char *);
extern double strtod (const char *, char **);
extern float strtof (const char *, char **);
extern long int strtol (const char *, char **, int );
extern long double strtold (const char *, char **);
extern unsigned long int strtoul (const char *, char **, int );
extern int rand (void);
extern void srand (unsigned int );
extern void *calloc (size_t , size_t );
extern void free (void *);
extern void *malloc (size_t );
extern void *realloc (void *, size_t );
# 207 "include/stdlib.h" 3
extern long a64l (const char *);
extern char * l64a (long);
extern int ttyslot (void);






extern char *ptsname (int);
# 234 "include/stdlib.h" 3
extern void abort (void);
extern int atexit (void (*)(void));
extern void exit (int );
extern char *getenv (const char *);
extern int system (const char *);
extern void *bsearch (const void *, const void *, size_t , size_t , int(*)(const void *, const void *));
extern void qsort (void *, size_t , size_t ,int(*)(const void *, const void *));
extern int abs (int );
extern div_t div (int , int );
extern long int labs (long int );
extern ldiv_t ldiv (long int , long int );
# 256 "include/stdlib.h" 3
extern int _Prand_r (unsigned int *);
# 290 "include/stdlib.h" 3
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 (const char *);
extern void setkey (const char *);
# 327 "include/stdlib.h" 3
extern char *initstate (unsigned int, char *, size_t);
extern char *setstate (const char *);
extern int grantpt (int);
extern int getsubopt (char **, char *const *, char **);




extern int random (void);
extern int srandom (unsigned int);

extern char *realpath (const char *, char *);
extern int unlockpt (int);
# 353 "include/stdlib.h" 3
extern int clearenv (void);
extern char *getpass (const char *);




extern char *mktemp (char *);
extern int mkstemp (char *);
# 373 "include/stdlib.h" 3
char *ecvt (double, int, int *, int *);
char *fcvt (double, int, int *, int *);
char *gcvt (double, int, char *);
# 135 "../../gcc/system.h" 2
# 157 "../../gcc/system.h"
# 1 "include/unistd.h" 1 3
# 74 "include/unistd.h" 3
# 1 "/usr/include/sys/access.h" 1 3
# 75 "include/unistd.h" 2 3
# 91 "include/unistd.h" 3
extern char **environ;

struct sockaddr_in;
# 102 "include/unistd.h" 3
extern ssize_t pread (int, void *, size_t, off_t);
extern ssize_t pwrite (int , const void *, size_t, off_t);


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


extern int access (const char *, int );
extern unsigned int alarm (unsigned int );
extern int chdir (const char *);
extern int chown (const char *, uid_t , gid_t );
extern int chroot (const char *);
extern int close (int );
extern size_t confstr (int, char *, size_t);
# 134 "include/unistd.h" 3
extern int dup (int );
extern int dup2 (int , int );


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


extern void _exit (int );
extern pid_t fork (void);
extern long fpathconf (int , int );
extern int fsync (int);

extern int fdatasync (int);

extern char *getcwd (char *, size_t );
extern gid_t getegid (void);
extern uid_t geteuid (void);
extern gid_t getgid (void);



extern int getgroups (int , gid_t []);

extern char *getlogin (void);
extern pid_t getpgrp (void);
extern pid_t getpid (void);
extern pid_t getppid (void);
extern uid_t getuid (void);
extern int isatty (int );
extern int link (const char *, const char *);
extern off_t lseek (int , off_t , int );
extern long pathconf (const char *, int );
extern int pause (void);
# 184 "include/unistd.h" 3
extern int pipe (int []);







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


extern int usleep (useconds_t );
# 209 "include/unistd.h" 3
extern long sysconf (int );
extern pid_t tcgetpgrp (int );
extern int tcsetpgrp (int , pid_t );
extern char *ttyname (int );
extern int unlink (const char *);

extern void swab (const void *, void *, ssize_t);
# 229 "include/unistd.h" 3
extern int _Pgetlogin_r (char *, size_t);
extern int _Pttyname_r (int, char *, size_t);






extern ssize_t pread (int, void *, size_t, off_t);
extern ssize_t pwrite (int, const void *, size_t, off_t);
extern int pthread_atfork (void (*)(void), void (*)(void), void (*)(void));
# 569 "include/unistd.h" 3
extern int fchown (int, uid_t, gid_t);
extern int ftruncate (int, off_t);





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

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

extern int setgroups (int, gid_t []);

extern int truncate (const char *, off_t);





extern char *crypt (const char *, const char *);
extern char *cuserid (char *);
extern char *ctermid (char *);
extern void encrypt (char [], int);
extern char *getpass (const char *);
extern int nice (int);
# 609 "include/unistd.h" 3
extern int brk (char *);
extern int gethostname (char *, int);

extern int getpagesize (void);
extern pid_t getpgid (pid_t);
extern pid_t getsid (pid_t);
extern char *getwd (char *);
extern int lchown (const char *, uid_t, gid_t);
extern int lockf (int, int, off_t);
# 630 "include/unistd.h" 3
extern void *sbrk (ssize_t);
extern unsigned int ualarm (unsigned int, unsigned int);

extern void sync (void);
# 653 "include/unistd.h" 3
extern int setpgrp (pid_t, pid_t);


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


extern char *gettxt (const char *, const char *);
extern char *getenv (const char *);
extern int bindresvport (int, struct sockaddr_in *);
extern char *crypt16 (const char *, const char *);
extern int rcmd (char **, u_short, char *, char *, char *, int *);
extern int rcmd2 (char **, u_short, char *, char *, char *, int *, int);
extern int rename (const char *, const char *);
extern int rexec (char **, int, char *, char *, char *, int *);
extern int rresvport (int *);
extern int rresvport2 (int *, int);
extern int ruserok (char *, int, char *, char *);
extern int seteuid (uid_t);
extern int setegid (gid_t);
extern int setlogin (char *);
extern int setrgid (gid_t);
extern int setruid (uid_t);
extern int syscall (int, ...);
# 158 "../../gcc/system.h" 2



# 1 "/usr/include/sys/param.h" 1 3
# 83 "/usr/include/sys/param.h" 3
# 1 "/usr/include/machine/machparam.h" 1 3
# 43 "/usr/include/machine/machparam.h" 3
# 1 "/usr/include/machine/endian.h" 1 3
# 108 "/usr/include/machine/endian.h" 3
extern unsigned short ntohs(unsigned short), htons(unsigned short);
extern unsigned int ntohl(unsigned int), htonl(unsigned int);
# 44 "/usr/include/machine/machparam.h" 2 3
# 63 "/usr/include/machine/machparam.h" 3
typedef long pt_entry_t;
# 76 "/usr/include/machine/machparam.h" 3
struct kernel_parameters {
        struct vm_parameters {
                long nbpg;
                long pgofset;
                long pgshift;
                long nvabits;
                unsigned long seg1_base;
                unsigned long unity_base;
                unsigned long address_mask;
                pt_entry_t *selfmap;
                pt_entry_t *othermap;
        } vm;
};
# 143 "/usr/include/machine/machparam.h" 3
extern pt_entry_t * pmap_selfmap;
# 84 "/usr/include/sys/param.h" 2 3
# 157 "/usr/include/sys/param.h" 3
# 1 "/usr/include/sys/signal.h" 1 3
# 54 "/usr/include/sys/signal.h" 3
# 1 "/usr/include/sys/siginfo.h" 1 3
# 34 "/usr/include/sys/siginfo.h" 3
# 1 "/usr/include/sys/sysmisc.h" 1 3
# 45 "/usr/include/sys/sysmisc.h" 3
typedef struct sigaltstack {
        caddr_t ss_sp;




        int ss_flags;
        size_t ss_size;
} stack_t;
# 63 "/usr/include/sys/sysmisc.h" 3
typedef union sigval {
        int sival_int;
        void *sival_ptr;
} sigval_t;
# 79 "/usr/include/sys/sysmisc.h" 3
typedef struct sigevent_event {
        union sigval _sigev_value;
        int _sigev_signo;
        int _sigev_notify;
} sigevent_event_t;

typedef struct sigevent {
        sigevent_event_t _sigev_sigevent;
        union {
                int _sigev[(((64)/sizeof(int)) - 4)];


                struct {





                        void (*_sigev_notify_function) (sigval_t);
                        pthread_attr_t *_sigev_notify_attributes;
                } _sigev_un_s;

        } _sigev_un;
} sigevent_t;
# 123 "/usr/include/sys/sysmisc.h" 3
typedef struct timespec {
        time_t tv_sec;
        long tv_nsec;
} timespec_t;







struct uuprof {
        short *pr_base;
        unsigned long pr_size;
        unsigned long pr_off;
        unsigned long pr_scale;
};
# 35 "/usr/include/sys/siginfo.h" 2 3
# 47 "/usr/include/sys/siginfo.h" 3
typedef struct siginfo {



        int si_signo;
        int si_errno;
        int si_code;

        union {
                int _sipad[(((128)/sizeof(int)) - 4)];


                struct {
                        pid_t _pid;
                        union {

                                struct {
                                        uid_t _uid;
                                } _kill;


                                struct {
                                        int _status;
                                        clock_t _utime;
                                        clock_t _stime;
                                } _sigchld;
                        } _pinfo;

                        struct {


                                sigval_t _sigval;



                        } _sigrt;
                } _sigproc;


                struct {



                        caddr_t _addr;

                } _sigfault;



                struct {
                        long _band;

                        int _fd;
                } _sigpoll;


                struct {

                        sigval_t _siganonval;



                } _siganon;
        } _sifields;
} siginfo_t;
# 55 "/usr/include/sys/signal.h" 2 3
# 81 "/usr/include/sys/signal.h" 3
extern void (*signal (int, void (*)(int))) (int);







extern int raise (int);
# 144 "/usr/include/sys/signal.h" 3
typedef void (*__sigfp)(int);
# 206 "/usr/include/sys/signal.h" 3
struct sigaction {

        union {

                void (*_handler) (int);
                void (*_sigaction) (int, siginfo_t *, void *);
        } _sa_un;
# 228 "/usr/include/sys/signal.h" 3
        sigset_t sa_mask;
        int sa_flags;
        int sa_signo;
};







extern int kill (pid_t , int);
# 253 "/usr/include/sys/signal.h" 3
extern int sigaction
        (int, const struct sigaction *, struct sigaction *);
# 267 "/usr/include/sys/signal.h" 3
extern int sigprocmask (int, const sigset_t *, sigset_t *);
extern int sigsuspend (const sigset_t *);

extern int sigemptyset (sigset_t *);
extern int sigfillset (sigset_t *);
extern int sigaddset (sigset_t *, int);
extern int sigdelset (sigset_t *, int);
extern int sigismember (const sigset_t *, int);
extern int sigpending (sigset_t *);



extern int sigwaitinfo (const sigset_t *, siginfo_t *);
extern int sigtimedwait (const sigset_t *, siginfo_t *, const struct timespec *);

extern int sigqueue (pid_t, int, const union sigval);
# 299 "/usr/include/sys/signal.h" 3
extern int pthread_sigmask (int, const sigset_t *, sigset_t *);
extern int pthread_kill (pthread_t, int);
# 309 "/usr/include/sys/signal.h" 3
# 1 "/usr/include/machine/signal.h" 1 3
# 53 "/usr/include/machine/signal.h" 3
typedef int sig_atomic_t;
# 146 "/usr/include/machine/signal.h" 3
# 1 "/usr/include/machine/context.h" 1 3
# 40 "/usr/include/machine/context.h" 3
typedef char * __caddr_t;
# 58 "/usr/include/machine/context.h" 3
struct sigcontext {
# 67 "/usr/include/machine/context.h" 3
        long sc_onstack;
        long sc_mask;
        long sc_pc;
        long sc_ps;
        long sc_regs[32];
        long sc_ownedfp;
        long sc_fpregs[32];
        unsigned long sc_fpcr;
        unsigned long sc_fp_control;



        long sc_reserved1;
        int sc_kreserved1;
        int sc_kreserved2;



        size_t sc_ssize;

        caddr_t sc_sbase;



        unsigned long sc_traparg_a0;
        unsigned long sc_traparg_a1;
        unsigned long sc_traparg_a2;
        unsigned long sc_fp_trap_pc;
        unsigned long sc_fp_trigger_sum;
        unsigned long sc_fp_trigger_inst;
};
# 147 "/usr/include/machine/signal.h" 2 3
# 310 "/usr/include/sys/signal.h" 2 3
# 322 "/usr/include/sys/signal.h" 3
extern sigset_t cantmasksigset;
# 331 "/usr/include/sys/signal.h" 3
struct sigvec {
        void (*sv_handler) (int);
        int sv_mask;
        int sv_flags;
};
# 344 "/usr/include/sys/signal.h" 3
extern int sigvec (int, struct sigvec *, struct sigvec *);
extern int killpg (pid_t, int);
# 355 "/usr/include/sys/signal.h" 3
struct sigstack {



        char *ss_sp;

        int ss_onstack;
};





extern char *__sys_siglist[];
extern int __sys_nsig;
# 466 "/usr/include/sys/signal.h" 3
extern int sigpause (int);
# 475 "/usr/include/sys/signal.h" 3
extern int sigreturn (struct sigcontext *);
extern int sigblock (int);
extern int sigsetmask (int);


extern int sigstack (struct sigstack *, struct sigstack *);
extern int siginterrupt (int, int);
# 491 "/usr/include/sys/signal.h" 3
extern int _Psigwait (const sigset_t *set, int *sig);
# 510 "/usr/include/sys/signal.h" 3
extern void (*sigset (int, void (*)(int))) (int);







extern int sighold (int);
extern int sigrelse (int);
# 529 "/usr/include/sys/signal.h" 3
extern int sigignore (int);
# 540 "/usr/include/sys/signal.h" 3
extern int sigaltstack (stack_t *, stack_t *);
# 1 "/usr/include/sys/procset.h" 1 3
# 40 "/usr/include/sys/procset.h" 3
typedef enum idop {



        POP_DIFF,



        POP_AND,



        POP_OR,




        POP_XOR
# 67 "/usr/include/sys/procset.h" 3
} idop_t;






typedef enum idtype {



        P_PID,
        P_PPID,
        P_PGID,
        P_SID,
        P_CID,
        P_UID,
        P_GID,
        P_ALL
} idtype_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;
# 542 "/usr/include/sys/signal.h" 2 3
extern int sigsendset (const procset_t *, int);
extern int sigsend (idtype_t, id_t, int);

int (*ssignal (int, int (*)(int))) (int);
int gsignal (int);
# 158 "/usr/include/sys/param.h" 2 3
# 162 "../../gcc/system.h" 2





# 1 "include/limits.h" 1 3
# 11 "include/limits.h" 3
# 1 "include/syslimits.h" 1 3
# 12 "include/limits.h" 2 3
# 168 "../../gcc/system.h" 2



# 1 "../../gcc/hwint.h" 1
# 172 "../../gcc/system.h" 2
# 200 "../../gcc/system.h"
# 1 "/usr/include/sys/time.h" 1 3
# 68 "/usr/include/sys/time.h" 3
struct timeval {
        time_t tv_sec;



        int tv_usec;



};
# 105 "/usr/include/sys/time.h" 3
struct itimerval {
        struct timeval it_interval;
        struct timeval it_value;
};
# 133 "/usr/include/sys/time.h" 3
# 1 "include/time.h" 1 3
# 100 "include/time.h" 3
struct tm {
        int tm_sec;
        int tm_min;
        int tm_hour;
        int tm_mday;
        int tm_mon;
        int tm_year;
        int tm_wday;
        int tm_yday;
        int tm_isdst;

        long tm_gmtoff;
        char *tm_zone;




};






extern time_t time (time_t *);
extern char *ctime (const time_t *);
extern struct tm *gmtime (const time_t *);
extern struct tm *localtime (const time_t *);
extern time_t mktime (struct tm *);
extern double difftime (time_t , time_t );
# 139 "include/time.h" 3
extern char *asctime (const struct tm *);
extern clock_t clock (void);
extern size_t strftime (char *, size_t , const char *,const struct tm *);
# 157 "include/time.h" 3
extern char * _Pasctime_r (const struct tm *, char *);
extern char * _Pctime_r (const time_t *, char *);
extern struct tm * _Pgmtime_r (const time_t *, struct tm *);
extern struct tm * _Plocaltime_r (const time_t *, struct tm *);
# 212 "include/time.h" 3
# 1 "/usr/include/sys/timers.h" 1 3
# 97 "/usr/include/sys/timers.h" 3
typedef int clockid_t;
# 109 "/usr/include/sys/timers.h" 3
struct itimerspec {
        struct timespec it_interval;
        struct timespec it_value;
};
# 135 "/usr/include/sys/timers.h" 3
int clock_gettime (clockid_t, struct timespec *);
int clock_settime (clockid_t, const struct timespec *);
int clock_getdrift (int, int *);
int clock_setdrift (int, const int, int *);
int timer_create (clockid_t, struct sigevent *, timer_t *);
int timer_delete (timer_t);
int timer_gettime (timer_t, struct itimerspec *);
int timer_settime (timer_t, int, const struct itimerspec *, struct itimerspec *);

int timer_getoverrun (timer_t);
int nanosleep (const struct timespec *, struct timespec *);
int clock_getres (clockid_t, struct timespec *);
# 213 "include/time.h" 2 3
# 222 "include/time.h" 3
extern char *tzname[];

extern void tzset (void);






extern long timezone;


extern int daylight;

extern char *strptime (const char *, const char *, struct tm *);
# 258 "include/time.h" 3
extern struct tm *getdate (char *);
extern int getdate_err;
# 134 "/usr/include/sys/time.h" 2 3
# 176 "/usr/include/sys/time.h" 3
struct timezone {
        int tz_minuteswest;
        int tz_dsttime;
};
# 193 "/usr/include/sys/time.h" 3
extern int adjtime (struct timeval *, struct timeval *);
extern int settimeofday (struct timeval *, struct timezone *);



extern int stime (long *);
# 209 "/usr/include/sys/time.h" 3
extern int utimes (const char *, struct timeval *);
extern int setitimer (int, struct itimerval *, struct itimerval *);
extern int gettimeofday (struct timeval *, struct timezone *);





extern int getitimer (int, struct itimerval *);
# 201 "../../gcc/system.h" 2
# 213 "../../gcc/system.h"
# 1 "/usr/include/fcntl.h" 1 3
# 39 "/usr/include/fcntl.h" 3
# 1 "/usr/include/sys/fcntl.h" 1 3
# 68 "/usr/include/sys/fcntl.h" 3
struct flock {
        short l_type;
        short l_whence;
        off_t l_start;
        off_t l_len;
        pid_t l_pid;
};







extern int open (const char *, int , ...);
extern int creat (const char *, mode_t );
extern int fcntl (int , int ,...);
# 162 "/usr/include/sys/fcntl.h" 3
# 1 "/usr/include/sys/mode.h" 1 3
# 163 "/usr/include/sys/fcntl.h" 2 3
# 272 "/usr/include/sys/fcntl.h" 3
struct eflock {
        short l_type;
        short l_whence;
        off_t l_start;
        off_t l_len;
        pid_t l_pid;
        pid_t l_rpid;
        int l_rsys;
        short l_xxx;
        int l_cb;
};
# 295 "/usr/include/sys/fcntl.h" 3
typedef struct {
    ulong version;

    ulong operation;
    ulong action;
    ulong info_buf_size;
    void *info_buf;
    ulong spare[2];
} advfs_opT;
# 326 "/usr/include/sys/fcntl.h" 3
struct extentmapentry {
        unsigned long offset;
        unsigned long size;
};

struct extentmap {
        unsigned long arraysize;
        unsigned long numextents;
        unsigned long offset;
        struct extentmapentry *extent;
};
# 40 "/usr/include/fcntl.h" 2 3
# 214 "../../gcc/system.h" 2
# 251 "../../gcc/system.h"
# 1 "include/sys/wait.h" 1 3
# 90 "include/sys/wait.h" 3

extern pid_t wait(int *);

# 103 "include/sys/wait.h" 3

extern pid_t waitpid(pid_t , int *, int );

# 169 "include/sys/wait.h" 3

# 1 "/usr/include/sys/resource.h" 1 3
# 94 "/usr/include/sys/resource.h" 3
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;

};
# 152 "/usr/include/sys/resource.h" 3
struct rlimit {
        rlim_t rlim_cur;
        rlim_t rlim_max;
};







struct rusage_dev {
        struct rusage ru_rusage;
        dev_t ru_dev;
};
# 181 "/usr/include/sys/resource.h" 3

# 203 "/usr/include/sys/resource.h" 3
extern int getpriority (int, int);
extern int setpriority (int, int, int);
extern int setrlimit (int, struct rlimit *);

extern int getrlimit (int, struct rlimit *);
extern int getrusage (int, struct rusage *);

# 238 "/usr/include/sys/resource.h" 3
struct profil_args {
        unsigned int *buffer;
        void *highpc;
        void *lowpc;
        unsigned long scale;
};
# 171 "include/sys/wait.h" 2 3
union wait;
extern pid_t wait4 (pid_t, union wait *, int, struct rusage *);

# 319 "include/sys/wait.h" 3

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







# 252 "../../gcc/system.h" 2
# 312 "../../gcc/system.h"
# 1 "/usr/include/malloc.h" 1 3
# 66 "/usr/include/malloc.h" 3
struct mallinfo {
        int arena;
        int ordblks;
        int smblks;
        int hblks;
        int hblkhd;
        int usmblks;
        int fsmblks;
        int uordblks;
        int fordblks;
        int keepcost;
};
# 109 "/usr/include/malloc.h" 3
extern int mallopt(int, int);
extern struct mallinfo mallinfo(void);
extern size_t mallocblksize (void*);
extern void *acreate(void *, size_t, int, void *, void *(*)(size_t, void *));
extern int adelete(void *);
extern void *amalloc(size_t, void *);
extern void afree(void *, void *);
extern void *arealloc(void *, size_t, void *);
extern void *acalloc(size_t, size_t, void *);
extern int amallopt(int, int, void *);
extern size_t amallocblksize (void *, void *);
extern struct mallinfo amallinfo(void *);
# 313 "../../gcc/system.h" 2
# 331 "../../gcc/system.h"
extern const char *strsignal (int);
# 381 "../../gcc/system.h"
# 1 "/usr/include/sys/stat.h" 1 3
# 203 "/usr/include/sys/stat.h" 3
  struct stat {
        dev_t st_dev; int st_retired1; mode_t st_mode; nlink_t st_nlink; short st_nlink_reserved; uid_t st_uid; gid_t st_gid; dev_t st_rdev; dev_t st_ldev; off_t st_size; time_t st_retired2; int st_uatime; time_t st_retired3; int st_umtime; time_t st_retired4; int st_uctime; int st_retired5; int st_retired6; uint_t st_flags; uint_t st_gen; long st_spare[4]; ino_t st_ino; int st_ino_reserved; time_t st_atime; int st_atime_reserved; time_t st_mtime; int st_mtime_reserved; time_t st_ctime; int st_ctime_reserved; long st_blksize; long st_blocks;
  };
# 333 "/usr/include/sys/stat.h" 3
  extern int _F64_stat (const char *, struct stat *);

#pragma extern_prefix ""





  extern int _F64_fstat (int , struct stat *);

#pragma extern_prefix ""






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

#pragma extern_prefix ""
# 371 "/usr/include/sys/stat.h" 3
extern int mkdir (const char *, mode_t );
extern mode_t umask (mode_t );

extern int chmod (const char *, mode_t );

extern int fchmod (int, mode_t );



extern int mknod (const char *, mode_t, ... );


extern int mkfifo (const char *, mode_t );
# 382 "../../gcc/system.h" 2
# 490 "../../gcc/system.h"
# 1 "../../include/libiberty.h" 1
# 46 "../../include/libiberty.h"
# 1 "include/stddef.h" 1 3
# 47 "../../include/libiberty.h" 2







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



extern void freeargv (char **);




extern char **dupargv (char **) __attribute__ ((__malloc__));
# 86 "../../include/libiberty.h"
extern const char *lbasename (const char *);





extern char *concat (const char *, ...) __attribute__ ((__malloc__));
# 101 "../../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;
# 137 "../../include/libiberty.h"
extern int fdmatch (int fd1, int fd2);




extern char * getpwd (void);



extern long get_run_time (void);



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



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



extern const char *spaces (int count);




extern int errno_max (void);




extern const char *strerrno (int);



extern int strtoerrno (const char *);



extern char *xstrerror (int);




extern int signo_max (void);
# 193 "../../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 const char _hex_value[256];
extern void hex_init (void);
# 260 "../../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)));




extern int vasprintf (char **, const char *, va_list)
  __attribute__ ((__format__ (__printf__, 2, 0)));
# 286 "../../include/libiberty.h"
extern void * C_alloca (size_t) __attribute__ ((__malloc__));
# 491 "../../gcc/system.h" 2
# 1 "../../include/symcat.h" 1
# 492 "../../gcc/system.h" 2
# 33 "../../gcc/predict.c" 2
# 1 "../../gcc/tree.h" 1
# 22 "../../gcc/tree.h"
# 1 "../../gcc/machmode.h" 1
# 29 "../../gcc/machmode.h"
enum machine_mode {
# 1 "../../gcc/machmode.def" 1
# 74 "../../gcc/machmode.def"
VOIDmode,

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




PQImode,
PHImode,
PSImode,
PDImode,

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


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

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







V2QImode,
V2HImode,
V2SImode,
V2DImode,

V4QImode,
V4HImode,
V4SImode,
V4DImode,

V8QImode,
V8HImode,
V8SImode,
V8DImode,

V16QImode,

V2SFmode,
V2DFmode,

V4SFmode,
V4DFmode,

V8SFmode,
V8DFmode,
V16SFmode,



BLKmode,
# 159 "../../gcc/machmode.def"
CCmode,
# 31 "../../gcc/machmode.h" 2
MAX_MACHINE_MODE };
# 41 "../../gcc/machmode.h"
extern const char * const mode_name[(int) MAX_MACHINE_MODE];


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




extern const enum mode_class mode_class[(int) MAX_MACHINE_MODE];
# 80 "../../gcc/machmode.h"
extern const unsigned char mode_size[(int) MAX_MACHINE_MODE];




extern const unsigned char mode_unit_size[(int) MAX_MACHINE_MODE];
# 96 "../../gcc/machmode.h"
extern const unsigned short mode_bitsize[(int) MAX_MACHINE_MODE];
# 106 "../../gcc/machmode.h"
extern const unsigned long mode_mask_array[(int) MAX_MACHINE_MODE];



extern const enum machine_mode inner_mode_array[(int) MAX_MACHINE_MODE];
# 123 "../../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;
# 23 "../../gcc/tree.h" 2
# 1 "../../gcc/version.h" 1


extern const char *const version_string;
# 24 "../../gcc/tree.h" 2





enum tree_code {
# 1 "../../gcc/tree.def" 1
# 46 "../../gcc/tree.def"
ERROR_MARK,





IDENTIFIER_NODE,






TREE_LIST,


TREE_VEC,
# 84 "../../gcc/tree.def"
BLOCK,
# 129 "../../gcc/tree.def"
VOID_TYPE,
# 139 "../../gcc/tree.def"
INTEGER_TYPE,



REAL_TYPE,



COMPLEX_TYPE,



VECTOR_TYPE,
# 164 "../../gcc/tree.def"
ENUMERAL_TYPE,



BOOLEAN_TYPE,



CHAR_TYPE,



POINTER_TYPE,





OFFSET_TYPE,



REFERENCE_TYPE,






METHOD_TYPE,


FILE_TYPE,
# 209 "../../gcc/tree.def"
ARRAY_TYPE,





SET_TYPE,
# 225 "../../gcc/tree.def"
RECORD_TYPE,





UNION_TYPE,





QUAL_UNION_TYPE,







FUNCTION_TYPE,





LANG_TYPE,
# 262 "../../gcc/tree.def"
INTEGER_CST,


REAL_CST,




COMPLEX_CST,


VECTOR_CST,



STRING_CST,
# 336 "../../gcc/tree.def"
FUNCTION_DECL,
LABEL_DECL,
CONST_DECL,
TYPE_DECL,
VAR_DECL,
PARM_DECL,
RESULT_DECL,
FIELD_DECL,



NAMESPACE_DECL,






COMPONENT_REF,
# 363 "../../gcc/tree.def"
BIT_FIELD_REF,


INDIRECT_REF,


BUFFER_REF,



ARRAY_REF,




ARRAY_RANGE_REF,






VTABLE_REF,
# 409 "../../gcc/tree.def"
CONSTRUCTOR,
# 419 "../../gcc/tree.def"
COMPOUND_EXPR,


MODIFY_EXPR,



INIT_EXPR,






TARGET_EXPR,
# 443 "../../gcc/tree.def"
COND_EXPR,
# 466 "../../gcc/tree.def"
BIND_EXPR,




CALL_EXPR,




METHOD_CALL_EXPR,
# 490 "../../gcc/tree.def"
WITH_CLEANUP_EXPR,
# 507 "../../gcc/tree.def"
CLEANUP_POINT_EXPR,
# 556 "../../gcc/tree.def"
PLACEHOLDER_EXPR,





WITH_RECORD_EXPR,


PLUS_EXPR,
MINUS_EXPR,
MULT_EXPR,


TRUNC_DIV_EXPR,


CEIL_DIV_EXPR,


FLOOR_DIV_EXPR,


ROUND_DIV_EXPR,


TRUNC_MOD_EXPR,
CEIL_MOD_EXPR,
FLOOR_MOD_EXPR,
ROUND_MOD_EXPR,


RDIV_EXPR,



EXACT_DIV_EXPR,






FIX_TRUNC_EXPR,
FIX_CEIL_EXPR,
FIX_FLOOR_EXPR,
FIX_ROUND_EXPR,


FLOAT_EXPR,


NEGATE_EXPR,

MIN_EXPR,
MAX_EXPR,





ABS_EXPR,

FFS_EXPR,
# 628 "../../gcc/tree.def"
LSHIFT_EXPR,
RSHIFT_EXPR,
LROTATE_EXPR,
RROTATE_EXPR,


BIT_IOR_EXPR,
BIT_XOR_EXPR,
BIT_AND_EXPR,
BIT_ANDTC_EXPR,
BIT_NOT_EXPR,
# 649 "../../gcc/tree.def"
TRUTH_ANDIF_EXPR,
TRUTH_ORIF_EXPR,
TRUTH_AND_EXPR,
TRUTH_OR_EXPR,
TRUTH_XOR_EXPR,
TRUTH_NOT_EXPR,







LT_EXPR,
LE_EXPR,
GT_EXPR,
GE_EXPR,
EQ_EXPR,
NE_EXPR,


UNORDERED_EXPR,
ORDERED_EXPR,


UNLT_EXPR,
UNLE_EXPR,
UNGT_EXPR,
UNGE_EXPR,
UNEQ_EXPR,


IN_EXPR,
SET_LE_EXPR,
CARD_EXPR,
RANGE_EXPR,




CONVERT_EXPR,


NOP_EXPR,


NON_LVALUE_EXPR,
# 707 "../../gcc/tree.def"
VIEW_CONVERT_EXPR,





SAVE_EXPR,
# 722 "../../gcc/tree.def"
UNSAVE_EXPR,
# 731 "../../gcc/tree.def"
RTL_EXPR,



ADDR_EXPR,


REFERENCE_EXPR,



ENTRY_VALUE_EXPR,



FDESC_EXPR,



COMPLEX_EXPR,


CONJ_EXPR,



REALPART_EXPR,
IMAGPART_EXPR,




PREDECREMENT_EXPR,
PREINCREMENT_EXPR,
POSTDECREMENT_EXPR,
POSTINCREMENT_EXPR,


VA_ARG_EXPR,






TRY_CATCH_EXPR,
# 790 "../../gcc/tree.def"
TRY_FINALLY_EXPR,






GOTO_SUBROUTINE_EXPR,







LABEL_EXPR,



GOTO_EXPR,






RETURN_EXPR,



EXIT_EXPR,




LOOP_EXPR,




LABELED_BLOCK_EXPR,




EXIT_BLOCK_EXPR,
# 844 "../../gcc/tree.def"
EXPR_WITH_FILE_LOCATION,





SWITCH_EXPR,


EXC_PTR_EXPR,
# 31 "../../gcc/tree.h" 2

  LAST_AND_UNUSED_TREE_CODE

};
# 49 "../../gcc/tree.h"
extern char tree_code_type[256];
# 60 "../../gcc/tree.h"
extern int tree_code_length[256];




extern const char *tree_code_name[256];



enum built_in_class
{
  NOT_BUILT_IN = 0,
  BUILT_IN_FRONTEND,
  BUILT_IN_MD,
  BUILT_IN_NORMAL
};


extern const char *const built_in_class_names[4];





enum built_in_function
{
# 1 "../../gcc/builtins.def" 1
# 145 "../../gcc/builtins.def"
BUILT_IN_ALLOCA,




BUILT_IN_ABS,


BUILT_IN_LABS,



BUILT_IN_FABS,


BUILT_IN_FABSF,


BUILT_IN_FABSL,



BUILT_IN_LLABS,


BUILT_IN_IMAXABS,


BUILT_IN_CONJ,


BUILT_IN_CONJF,


BUILT_IN_CONJL,


BUILT_IN_CREAL,


BUILT_IN_CREALF,


BUILT_IN_CREALL,


BUILT_IN_CIMAG,


BUILT_IN_CIMAGF,


BUILT_IN_CIMAGL,



BUILT_IN_DIV,
BUILT_IN_LDIV,
BUILT_IN_FFLOOR,
BUILT_IN_FCEIL,
BUILT_IN_FMOD,
BUILT_IN_FREM,




BUILT_IN_BZERO,





BUILT_IN_BCMP,






BUILT_IN_FFS,


BUILT_IN_INDEX,


BUILT_IN_RINDEX,



BUILT_IN_MEMCPY,


BUILT_IN_MEMCMP,


BUILT_IN_MEMSET,



BUILT_IN_STRCAT,


BUILT_IN_STRNCAT,


BUILT_IN_STRCPY,


BUILT_IN_STRNCPY,


BUILT_IN_STRCMP,


BUILT_IN_STRNCMP,


BUILT_IN_STRLEN,


BUILT_IN_STRSTR,


BUILT_IN_STRPBRK,


BUILT_IN_STRSPN,


BUILT_IN_STRCSPN,


BUILT_IN_STRCHR,


BUILT_IN_STRRCHR,



BUILT_IN_SQRT,


BUILT_IN_SIN,


BUILT_IN_COS,


BUILT_IN_SQRTF,


BUILT_IN_SINF,


BUILT_IN_COSF,


BUILT_IN_SQRTL,


BUILT_IN_SINL,


BUILT_IN_COSL,



BUILT_IN_GETEXP,
BUILT_IN_GETMAN,

BUILT_IN_SAVEREGS,


BUILT_IN_CLASSIFY_TYPE,


BUILT_IN_NEXT_ARG,


BUILT_IN_ARGS_INFO,


BUILT_IN_CONSTANT_P,


BUILT_IN_FRAME_ADDRESS,


BUILT_IN_RETURN_ADDRESS,


BUILT_IN_AGGREGATE_INCOMING_ADDRESS,


BUILT_IN_APPLY_ARGS,


BUILT_IN_APPLY,


BUILT_IN_RETURN,


BUILT_IN_SETJMP,


BUILT_IN_LONGJMP,


BUILT_IN_TRAP,


BUILT_IN_PREFETCH,




BUILT_IN_PUTCHAR,


BUILT_IN_PUTS,


BUILT_IN_PRINTF,


BUILT_IN_FPUTC,






BUILT_IN_FPUTS,





BUILT_IN_FWRITE,


BUILT_IN_FPRINTF,





BUILT_IN_PUTCHAR_UNLOCKED,


BUILT_IN_PUTS_UNLOCKED,


BUILT_IN_PRINTF_UNLOCKED,


BUILT_IN_FPUTC_UNLOCKED,






BUILT_IN_FPUTS_UNLOCKED,





BUILT_IN_FWRITE_UNLOCKED,


BUILT_IN_FPRINTF_UNLOCKED,




BUILT_IN_ISGREATER,


BUILT_IN_ISGREATEREQUAL,


BUILT_IN_ISLESS,


BUILT_IN_ISLESSEQUAL,


BUILT_IN_ISLESSGREATER,


BUILT_IN_ISUNORDERED,




BUILT_IN_UNWIND_INIT,


BUILT_IN_DWARF_CFA,


BUILT_IN_DWARF_FP_REGNUM,


BUILT_IN_INIT_DWARF_REG_SIZES,


BUILT_IN_FROB_RETURN_ADDR,


BUILT_IN_EXTRACT_RETURN_ADDR,


BUILT_IN_EH_RETURN,


BUILT_IN_EH_RETURN_DATA_REGNO,



BUILT_IN_VARARGS_START,


BUILT_IN_STDARG_START,


BUILT_IN_VA_END,


BUILT_IN_VA_COPY,


BUILT_IN_EXPECT,




BUILT_IN_NEW,
BUILT_IN_VEC_NEW,
BUILT_IN_DELETE,
BUILT_IN_VEC_DELETE,
# 87 "../../gcc/tree.h" 2


  END_BUILTINS
};



extern const char *const built_in_names[(int) END_BUILTINS];


extern tree built_in_decls[(int) END_BUILTINS];
# 121 "../../gcc/tree.h"
struct tree_common
{
  tree chain;
  tree type;

  enum tree_code code : 8;

  unsigned side_effects_flag : 1;
  unsigned constant_flag : 1;
  unsigned addressable_flag : 1;
  unsigned volatile_flag : 1;
  unsigned readonly_flag : 1;
  unsigned unsigned_flag : 1;
  unsigned asm_written_flag: 1;
  unsigned unused_0 : 1;

  unsigned used_flag : 1;
  unsigned nothrow_flag : 1;
  unsigned static_flag : 1;
  unsigned public_flag : 1;
  unsigned private_flag : 1;
  unsigned protected_flag : 1;
  unsigned bounded_flag : 1;
  unsigned deprecated_flag : 1;

  unsigned lang_flag_0 : 1;
  unsigned lang_flag_1 : 1;
  unsigned lang_flag_2 : 1;
  unsigned lang_flag_3 : 1;
  unsigned lang_flag_4 : 1;
  unsigned lang_flag_5 : 1;
  unsigned lang_flag_6 : 1;
  unsigned unused_1 : 1;
};
# 332 "../../gcc/tree.h"
# 1 "tree-check.h" 1
# 333 "../../gcc/tree.h" 2
# 705 "../../gcc/tree.h"
struct tree_int_cst
{
  struct tree_common common;
  rtx rtl;




  struct {
    unsigned long low;
    long high;
  } int_cst;
};
# 732 "../../gcc/tree.h"
# 1 "../../gcc/real.h" 1
# 107 "../../gcc/real.h"
typedef struct {
  long r[(19 + sizeof (long))/(sizeof (long))];
} realvaluetype;
# 131 "../../gcc/real.h"
extern unsigned int significand_size (enum machine_mode);
# 144 "../../gcc/real.h"
extern void earith (realvaluetype *, int, realvaluetype *, realvaluetype *);

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


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



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

extern realvaluetype ereal_ldexp (realvaluetype, int);

extern void etartdouble (realvaluetype, long *);
extern void etarldouble (realvaluetype, long *);
extern void etardouble (realvaluetype, long *);
extern long etarsingle (realvaluetype);
extern void ereal_to_decimal (realvaluetype, char *);
extern int ereal_cmp (realvaluetype, realvaluetype);
extern int ereal_isneg (realvaluetype);
extern realvaluetype ereal_unto_float (long);
extern realvaluetype ereal_unto_double (long *);
extern realvaluetype ereal_from_float (long);
extern realvaluetype ereal_from_double (long *);
# 406 "../../gcc/real.h"
extern realvaluetype real_value_truncate (enum machine_mode, realvaluetype);
# 437 "../../gcc/real.h"
extern realvaluetype dconst0;
extern realvaluetype dconst1;
extern realvaluetype dconst2;
extern realvaluetype dconstm1;




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




union tree_node;
realvaluetype real_value_from_int_cst (union tree_node *, union tree_node *);
# 466 "../../gcc/real.h"
extern struct rtx_def *immed_real_const_1 (realvaluetype, enum machine_mode);
# 478 "../../gcc/real.h"
extern int exact_real_inverse (enum machine_mode, realvaluetype *);
extern int target_isnan (realvaluetype);
extern int target_isinf (realvaluetype);
extern int target_negative (realvaluetype);
extern void debug_real (realvaluetype);
extern realvaluetype ereal_atof (const char *, enum machine_mode);
# 733 "../../gcc/tree.h" 2

struct tree_real_cst
{
  struct tree_common common;
  rtx rtl;
  realvaluetype real_cst;
};





struct tree_string
{
  struct tree_common common;
  rtx rtl;
  int length;
  const char *pointer;
};





struct tree_complex
{
  struct tree_common common;
  rtx rtl;
  tree real;
  tree imag;
};




struct tree_vector
{
  struct tree_common common;
  rtx rtl;
  tree elements;
};

# 1 "../../gcc/hashtable.h" 1
# 21 "../../gcc/hashtable.h"
# 1 "../../include/obstack.h" 1
# 161 "../../include/obstack.h"
struct _obstack_chunk
{
  char *limit;
  struct _obstack_chunk *prev;
  char contents[4];
};

struct obstack
{
  long chunk_size;
  struct _obstack_chunk *chunk;
  char *object_base;
  char *next_free;
  char *chunk_limit;
  long int temp;
  int alignment_mask;




  struct _obstack_chunk *(*chunkfun) (void *, long);
  void (*freefun) (void *, struct _obstack_chunk *);
  void *extra_arg;





  unsigned use_extra_arg:1;
  unsigned maybe_empty_object:1;



  unsigned alloc_failed:1;


};




extern void _obstack_newchunk (struct obstack *, int);
extern void _obstack_free (struct obstack *, void *);
extern int _obstack_begin (struct obstack *, int, int,
                            void *(*) (long), void (*) (void *));
extern int _obstack_begin_1 (struct obstack *, int, int,
                             void *(*) (void *, long),
                             void (*) (void *, void *), void *);
extern int _obstack_memory_used (struct obstack *);
# 223 "../../include/obstack.h"
void obstack_init (struct obstack *obstack);

void * obstack_alloc (struct obstack *obstack, int size);

void * obstack_copy (struct obstack *obstack, void *address, int size);
void * obstack_copy0 (struct obstack *obstack, void *address, int size);

void obstack_free (struct obstack *obstack, void *block);

void obstack_blank (struct obstack *obstack, int size);

void obstack_grow (struct obstack *obstack, void *data, int size);
void obstack_grow0 (struct obstack *obstack, void *data, int size);

void obstack_1grow (struct obstack *obstack, int data_char);
void obstack_ptr_grow (struct obstack *obstack, void *data);
void obstack_int_grow (struct obstack *obstack, int data);

void * obstack_finish (struct obstack *obstack);

int obstack_object_size (struct obstack *obstack);

int obstack_room (struct obstack *obstack);
void obstack_make_room (struct obstack *obstack, int size);
void obstack_1grow_fast (struct obstack *obstack, int data_char);
void obstack_ptr_grow_fast (struct obstack *obstack, void *data);
void obstack_int_grow_fast (struct obstack *obstack, int data);
void obstack_blank_fast (struct obstack *obstack, int size);

void * obstack_base (struct obstack *obstack);
void * obstack_next_free (struct obstack *obstack);
int obstack_alignment_mask (struct obstack *obstack);
int obstack_chunk_size (struct obstack *obstack);
int obstack_memory_used (struct obstack *obstack);
# 267 "../../include/obstack.h"
extern void (*obstack_alloc_failed_handler) (void);





extern int obstack_exit_failure;
# 22 "../../gcc/hashtable.h" 2



typedef struct ht_identifier ht_identifier;
struct ht_identifier
{
  unsigned int len;
  const unsigned char *str;
};
# 39 "../../gcc/hashtable.h"
struct cpp_reader;
typedef struct ht hash_table;
typedef struct ht_identifier *hashnode;

enum ht_lookup_option {HT_NO_INSERT = 0, HT_ALLOC, HT_ALLOCED};


struct ht
{

  struct obstack stack;

  hashnode *entries;

  hashnode (*alloc_node) (hash_table *);

  unsigned int nslots;
  unsigned int nelements;


  struct cpp_reader *pfile;


  unsigned int searches;
  unsigned int collisions;
};

extern void gcc_obstack_init (struct obstack *);


extern hash_table *ht_create (unsigned int order);


extern void ht_destroy (hash_table *);

extern hashnode ht_lookup (hash_table *, const unsigned char *, unsigned int, enum ht_lookup_option);





typedef int (*ht_cb) (struct cpp_reader *, hashnode, const void *);
extern void ht_forall (hash_table *, ht_cb, const void *);


extern void ht_dump_statistics (hash_table *);



extern double approx_sqrt (double);
# 776 "../../gcc/tree.h" 2
# 791 "../../gcc/tree.h"
struct tree_identifier
{
  struct tree_common common;
  struct ht_identifier id;
};





struct tree_list
{
  struct tree_common common;
  tree purpose;
  tree value;
};







struct tree_vec
{
  struct tree_common common;
  int length;
  tree a[1];
};
# 879 "../../gcc/tree.h"
struct tree_exp
{
  struct tree_common common;
  int complexity;
  tree operands[1];
};
# 931 "../../gcc/tree.h"
struct tree_block
{
  struct tree_common common;

  unsigned handler_block_flag : 1;
  unsigned abstract_flag : 1;
  unsigned block_num : 30;

  tree vars;
  tree subblocks;
  tree supercontext;
  tree abstract_origin;
  tree fragment_origin;
  tree fragment_chain;
};
# 1208 "../../gcc/tree.h"
struct tree_type
{
  struct tree_common common;
  tree values;
  tree size;
  tree size_unit;
  tree attributes;
  unsigned int uid;

  unsigned int precision : 9;
  enum machine_mode mode : 7;

  unsigned string_flag : 1;
  unsigned no_force_blk_flag : 1;
  unsigned needs_constructing_flag : 1;
  unsigned transparent_union_flag : 1;
  unsigned packed_flag : 1;
  unsigned restrict_flag : 1;
  unsigned pointer_depth : 2;

  unsigned lang_flag_0 : 1;
  unsigned lang_flag_1 : 1;
  unsigned lang_flag_2 : 1;
  unsigned lang_flag_3 : 1;
  unsigned lang_flag_4 : 1;
  unsigned lang_flag_5 : 1;
  unsigned lang_flag_6 : 1;
  unsigned user_align : 1;

  unsigned int align;
  tree pointer_to;
  tree reference_to;
  union {int address; char *pointer; } symtab;
  tree name;
  tree minval;
  tree maxval;
  tree next_variant;
  tree main_variant;
  tree binfo;
  tree context;
  long alias_set;

  struct lang_type *lang_specific;
};
# 1754 "../../gcc/tree.h"
struct function;

struct tree_decl
{
  struct tree_common common;
  const char *filename;
  int linenum;
  unsigned int uid;
  tree size;
  enum machine_mode mode : 8;

  unsigned external_flag : 1;
  unsigned nonlocal_flag : 1;
  unsigned regdecl_flag : 1;
  unsigned inline_flag : 1;
  unsigned bit_field_flag : 1;
  unsigned virtual_flag : 1;
  unsigned ignored_flag : 1;
  unsigned abstract_flag : 1;

  unsigned in_system_header_flag : 1;
  unsigned common_flag : 1;
  unsigned defer_output : 1;
  unsigned transparent_union : 1;
  unsigned static_ctor_flag : 1;
  unsigned static_dtor_flag : 1;
  unsigned artificial_flag : 1;
  unsigned weak_flag : 1;

  unsigned non_addr_const_p : 1;
  unsigned no_instrument_function_entry_exit : 1;
  unsigned comdat_flag : 1;
  unsigned malloc_flag : 1;
  unsigned no_limit_stack : 1;
  enum built_in_class built_in_class : 2;
  unsigned pure_flag : 1;

  unsigned pointer_depth : 2;
  unsigned non_addressable : 1;
  unsigned user_align : 1;
  unsigned uninlinable : 1;


  unsigned lang_flag_0 : 1;
  unsigned lang_flag_1 : 1;
  unsigned lang_flag_2 : 1;
  unsigned lang_flag_3 : 1;
  unsigned lang_flag_4 : 1;
  unsigned lang_flag_5 : 1;
  unsigned lang_flag_6 : 1;
  unsigned lang_flag_7 : 1;

  union {


    enum built_in_function f;


    long i;


    struct {unsigned int align : 24; unsigned int off_align : 8;} a;
  } u1;

  tree size_unit;
  tree name;
  tree context;
  tree arguments;
  tree result;
  tree initial;
  tree abstract_origin;
  tree assembler_name;
  tree section_name;
  tree attributes;
  rtx rtl;
  rtx live_range_rtl;






  union {
    struct function *f;
    rtx r;
    tree t;
    int i;
  } u2;


  tree saved_tree;



  tree inlined_fns;

  tree vindex;
  long pointer_alias_set;

  struct lang_decl *lang_specific;
};





union tree_node
{
  struct tree_common common;
  struct tree_int_cst int_cst;
  struct tree_real_cst real_cst;
  struct tree_vector vector;
  struct tree_string string;
  struct tree_complex complex;
  struct tree_identifier identifier;
  struct tree_decl decl;
  struct tree_type type;
  struct tree_list list;
  struct tree_vec vec;
  struct tree_exp exp;
  struct tree_block block;
 };



enum tree_index
{
  TI_ERROR_MARK,
  TI_INTQI_TYPE,
  TI_INTHI_TYPE,
  TI_INTSI_TYPE,
  TI_INTDI_TYPE,
  TI_INTTI_TYPE,

  TI_UINTQI_TYPE,
  TI_UINTHI_TYPE,
  TI_UINTSI_TYPE,
  TI_UINTDI_TYPE,
  TI_UINTTI_TYPE,

  TI_INTEGER_ZERO,
  TI_INTEGER_ONE,
  TI_INTEGER_MINUS_ONE,
  TI_NULL_POINTER,

  TI_SIZE_ZERO,
  TI_SIZE_ONE,

  TI_BITSIZE_ZERO,
  TI_BITSIZE_ONE,
  TI_BITSIZE_UNIT,

  TI_COMPLEX_INTEGER_TYPE,
  TI_COMPLEX_FLOAT_TYPE,
  TI_COMPLEX_DOUBLE_TYPE,
  TI_COMPLEX_LONG_DOUBLE_TYPE,

  TI_FLOAT_TYPE,
  TI_DOUBLE_TYPE,
  TI_LONG_DOUBLE_TYPE,

  TI_VOID_TYPE,
  TI_PTR_TYPE,
  TI_CONST_PTR_TYPE,
  TI_PTRDIFF_TYPE,
  TI_VA_LIST_TYPE,

  TI_VOID_LIST_NODE,

  TI_UV4SF_TYPE,
  TI_UV4SI_TYPE,
  TI_UV8HI_TYPE,
  TI_UV8QI_TYPE,
  TI_UV4HI_TYPE,
  TI_UV2SI_TYPE,
  TI_UV2SF_TYPE,
  TI_UV16QI_TYPE,

  TI_V4SF_TYPE,
  TI_V16SF_TYPE,
  TI_V4SI_TYPE,
  TI_V8HI_TYPE,
  TI_V8QI_TYPE,
  TI_V4HI_TYPE,
  TI_V2SI_TYPE,
  TI_V2SF_TYPE,
  TI_V16QI_TYPE,

  TI_MAIN_IDENTIFIER,

  TI_MAX
};

extern tree global_trees[TI_MAX];
# 2020 "../../gcc/tree.h"
enum integer_type_kind
{
  itk_char,
  itk_signed_char,
  itk_unsigned_char,
  itk_short,
  itk_unsigned_short,
  itk_int,
  itk_unsigned_int,
  itk_long,
  itk_unsigned_long,
  itk_long_long,
  itk_unsigned_long_long,
  itk_none
};

typedef enum integer_type_kind integer_type_kind;



extern tree integer_types[itk_none];
# 2059 "../../gcc/tree.h"
extern double approx_sqrt (double);

extern char *permalloc (int);
extern char *expralloc (int);




extern size_t tree_size (tree);





extern tree make_node (enum tree_code);
extern tree make_lang_type (enum tree_code);
extern tree (*make_lang_type_fn) (enum tree_code);





extern tree copy_node (tree);



extern tree copy_list (tree);



extern tree make_tree_vec (int);




extern tree get_identifier (const char *);




extern tree get_identifier_with_length (const char *, unsigned int);





extern tree maybe_get_identifier (const char *);






extern tree build (enum tree_code, tree, ...);
extern tree build_nt (enum tree_code, ...);

extern tree build_int_2_wide (unsigned long, long);
extern tree build_vector (tree, tree);
extern tree build_real (tree, realvaluetype);
extern tree build_real_from_int_cst (tree, tree);
extern tree build_complex (tree, tree, tree);
extern tree build_string (int, const char *);
extern tree build1 (enum tree_code, tree, tree);
extern tree build_tree_list (tree, tree);
extern tree build_decl (enum tree_code, tree, tree);
extern tree build_block (tree, tree, tree, tree, tree);
extern tree build_expr_wfl (tree, const char *, int, int);



extern tree make_signed_type (int);
extern tree make_unsigned_type (int);
extern void initialize_sizetypes (void);
extern void set_sizetype (tree);
extern tree signed_or_unsigned_type (int, tree);
extern void fixup_unsigned_type (tree);
extern tree build_pointer_type (tree);
extern tree build_reference_type (tree);
extern tree build_type_no_quals (tree);
extern tree build_index_type (tree);
extern tree build_index_2_type (tree, tree);
extern tree build_array_type (tree, tree);
extern tree build_function_type (tree, tree);
extern tree build_method_type (tree, tree);
extern tree build_offset_type (tree, tree);
extern tree build_complex_type (tree);
extern tree array_type_nelts (tree);

extern tree value_member (tree, tree);
extern tree purpose_member (tree, tree);
extern tree binfo_member (tree, tree);
extern unsigned int attribute_hash_list (tree);
extern int attribute_list_equal (tree, tree);
extern int attribute_list_contained (tree, tree);
extern int tree_int_cst_equal (tree, tree);
extern int tree_int_cst_lt (tree, tree);
extern int tree_int_cst_compare (tree, tree);
extern int host_integerp (tree, int);
extern long tree_low_cst (tree, int);
extern int tree_int_cst_msb (tree);
extern int tree_int_cst_sgn (tree);
extern int tree_expr_nonnegative_p (tree);
extern int rtl_expr_nonnegative_p (rtx);
extern int index_type_equal (tree, tree);
extern tree get_inner_array_type (tree);





extern tree make_tree (tree, rtx);







extern tree build_type_attribute_variant (tree, tree);
extern tree build_decl_attribute_variant (tree, tree);


struct attribute_spec
{


  const char *const name;

  const int min_length;


  const int max_length;







  const _Bool decl_required;


  const _Bool type_required;




  const _Bool function_type_required;
# 2221 "../../gcc/tree.h"
  tree (*const handler) (tree *node, tree name, tree args, int flags, _Bool *no_add_attrs);

};

extern const struct attribute_spec default_target_attribute_table[];



enum attribute_flags
{



  ATTR_FLAG_DECL_NEXT = 1,



  ATTR_FLAG_FUNCTION_NEXT = 2,



  ATTR_FLAG_ARRAY_NEXT = 4,


  ATTR_FLAG_TYPE_IN_PLACE = 8,



  ATTR_FLAG_BUILT_IN = 16
};



extern tree merge_decl_attributes (tree, tree);
extern tree merge_type_attributes (tree, tree);
extern int default_comp_type_attributes (tree, tree);
extern void default_set_default_type_attributes (tree);
extern void default_insert_attributes (tree, tree *);
extern _Bool default_function_attribute_inlinable_p (tree);
extern _Bool default_ms_bitfield_layout_p (tree);



extern void split_specs_attrs (tree, tree *, tree *);



extern tree strip_attrs (tree);



extern int valid_machine_attribute (tree, tree, tree, tree);




extern int is_attribute_p (const char *, tree);




extern tree lookup_attribute (const char *, tree);



extern tree merge_attributes (tree, tree);
# 2298 "../../gcc/tree.h"
extern tree get_qualified_type (tree, int);




extern tree build_qualified_type (tree, int);
# 2317 "../../gcc/tree.h"
extern tree build_type_copy (tree);





extern void layout_type (tree);
# 2332 "../../gcc/tree.h"
typedef struct record_layout_info_s
{

  tree t;


  tree offset;

  unsigned int offset_align;

  tree bitpos;

  unsigned int record_align;

  unsigned int unpacked_align;


  unsigned int unpadded_align;

  tree prev_field;


  tree pending_statics;
  int packed_maybe_necessary;
} *record_layout_info;

extern void set_lang_adjust_rli (void (*) (record_layout_info));

extern record_layout_info start_record_layout (tree);
extern tree bit_from_pos (tree, tree);
extern tree byte_from_pos (tree, tree);
extern void pos_from_byte (tree *, tree *, unsigned int, tree);

extern void pos_from_bit (tree *, tree *, unsigned int, tree);

extern void normalize_offset (tree *, tree *, unsigned int);

extern tree rli_size_unit_so_far (record_layout_info);
extern tree rli_size_so_far (record_layout_info);
extern void normalize_rli (record_layout_info);
extern void place_field (record_layout_info, tree);
extern void compute_record_mode (tree);
extern void finish_record_layout (record_layout_info);






extern tree type_hash_canon (unsigned int, tree);
# 2391 "../../gcc/tree.h"
extern void layout_decl (tree, unsigned);






extern enum machine_mode mode_for_size_tree (tree, enum mode_class, int);




extern tree non_lvalue (tree);
extern tree pedantic_non_lvalue (tree);

extern tree convert (tree, tree);
extern unsigned int expr_align (tree);
extern tree size_in_bytes (tree);
extern long int_size_in_bytes (tree);
extern tree bit_position (tree);
extern long int_bit_position (tree);
extern tree byte_position (tree);
extern long int_byte_position (tree);




enum size_type_kind
{
  SIZETYPE,
  SSIZETYPE,
  USIZETYPE,
  BITSIZETYPE,
  SBITSIZETYPE,
  UBITSIZETYPE,
  TYPE_KIND_LAST};

extern tree sizetype_tab[(int) TYPE_KIND_LAST];
# 2437 "../../gcc/tree.h"
extern tree size_binop (enum tree_code, tree, tree);
extern tree size_diffop (tree, tree);
extern tree size_int_wide (long, enum size_type_kind);

extern tree size_int_type_wide (long, tree);







extern tree round_up (tree, int);
extern tree round_down (tree, int);
extern tree get_pending_sizes (void);
extern int is_pending_size (tree);
extern void put_pending_size (tree);
extern void put_pending_sizes (tree);
# 2464 "../../gcc/tree.h"
extern unsigned int maximum_field_alignment;


extern unsigned int set_alignment;





extern tree chainon (tree, tree);



extern tree tree_cons (tree, tree, tree);



extern tree tree_last (tree);



extern tree nreverse (tree);




extern int list_length (tree);



extern int fields_length (tree);



extern int integer_zerop (tree);



extern int integer_onep (tree);




extern int integer_all_onesp (tree);




extern int integer_pow2p (tree);




extern int staticp (tree);




extern int lvalue_or_else (tree, const char *);





extern tree save_expr (tree);




extern int first_rtl_op (enum tree_code);





extern tree unsave_expr (tree);




extern void unsave_expr_1 (tree);



extern tree unsave_expr_now (tree);






extern void (*lang_unsave) (tree *);
extern void (*lang_unsave_expr_now) (tree);




extern int unsafe_for_reeval (tree);



extern int (*lang_unsafe_for_reeval) (tree);







extern int contains_placeholder_p (tree);




extern int has_cleanups (tree);






extern tree substitute_in_expr (tree, tree, tree);







extern tree variable_size (tree);





extern tree stabilize_reference (tree);





extern tree stabilize_reference_1 (tree);






extern tree get_unwidened (tree, tree);






extern tree get_narrower (tree, int *);






extern tree type_for_mode (enum machine_mode, int);






extern tree type_for_size (unsigned, int);






extern tree unsigned_type (tree);






extern tree signed_type (tree);





extern tree maybe_build_cleanup (tree);





extern tree get_inner_reference (tree, long *, long *, tree *, enum machine_mode *, int *, int *);






extern int handled_component_p (tree);




extern tree get_containing_scope (tree);



extern tree decl_function_context (tree);



extern tree decl_type_context (tree);






extern const char *function_cannot_inline_p (tree);


extern int real_zerop (tree);





extern const char *input_filename;


extern int lineno;




extern int pedantic_lvalues;




extern int immediate_size_expand;



extern tree current_function_decl;


extern tree current_function_func_begin_label;



extern int all_types_permanent;
# 2729 "../../gcc/tree.h"
extern const char *(*decl_printable_name) (tree, int);




extern void (*incomplete_decl_finalize_hook) (tree);



extern tree builtin_function (const char *, tree, int, enum built_in_class, const char *);




extern char *perm_calloc (int, long);
extern void clean_symbol_name (char *);
extern tree get_file_function_name_long (const char *);
extern tree get_set_constructor_bits (tree, char *, int);
extern tree get_set_constructor_bytes (tree, unsigned char *, int);

extern tree get_callee_fndecl (tree);
extern void set_decl_assembler_name (tree);
extern int type_num_arguments (tree);



extern int in_control_zone_p (void);
extern void expand_fixups (rtx);
extern tree expand_start_stmt_expr (int);
extern tree expand_end_stmt_expr (tree);
extern void expand_expr_stmt (tree);
extern void expand_expr_stmt_value (tree, int, int);
extern int warn_if_unused_value (tree);
extern void expand_decl_init (tree);
extern void clear_last_expr (void);
extern void expand_label (tree);
extern void expand_goto (tree);
extern void expand_asm (tree);
extern void expand_start_cond (tree, int);
extern void expand_end_cond (void);
extern void expand_start_else (void);
extern void expand_start_elseif (tree);
extern struct nesting *expand_start_loop (int);
extern struct nesting *expand_start_loop_continue_elsewhere (int);
extern struct nesting *expand_start_null_loop (void);
extern void expand_loop_continue_here (void);
extern void expand_end_loop (void);
extern void expand_end_null_loop (void);
extern int expand_continue_loop (struct nesting *);
extern int expand_exit_loop (struct nesting *);
extern int expand_exit_loop_if_false (struct nesting *, tree);

extern int expand_exit_loop_top_cond (struct nesting *, tree);

extern int expand_exit_something (void);

extern void expand_return (tree);
extern int optimize_tail_recursion (tree, rtx);
extern void expand_start_bindings_and_block (int, tree);


extern void expand_end_bindings (tree, int, int);
extern void warn_about_unused_variables (tree);
extern void start_cleanup_deferral (void);
extern void end_cleanup_deferral (void);
extern int is_body_block (tree);

extern int conditional_context (void);
extern struct nesting * current_nesting_level (void);
extern tree last_cleanup_this_contour (void);
extern void expand_start_case (int, tree, tree, const char *);

extern void expand_end_case_type (tree, tree);

extern int add_case_node (tree, tree, tree, tree *);

extern int pushcase (tree, tree (*) (tree, tree), tree, tree *);


extern int pushcase_range (tree, tree, tree (*) (tree, tree), tree, tree *);


extern void using_eh_for_cleanups (void);
extern int stmt_loop_nest_empty (void);
# 2822 "../../gcc/tree.h"
extern tree fold (tree);

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



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


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




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



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



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



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



extern int operand_equal_p (tree, tree, int);
extern tree invert_truthvalue (tree);





extern tree (*lang_type_promotes_to) (tree);
extern tree fold_builtin (tree);




extern void copy_lang_decl (tree);


extern int yyparse (void);



extern void pushlevel (int);





extern tree poplevel (int, int, int);

extern void set_block (tree);




extern tree pushdecl (tree);

extern tree getdecls (void);

extern tree gettags (void);

extern tree build_range_type (tree, tree, tree);


extern void record_component_aliases (tree);
extern long get_alias_set (tree);
extern int alias_sets_conflict_p (long, long);

extern int readonly_fields_p (tree);
extern int objects_must_conflict_p (tree, tree);






extern void (*lang_set_decl_assembler_name) (tree);

struct obstack;


extern int really_constant_p (tree);
extern int int_fits_type_p (tree, tree);
extern int tree_log2 (tree);
extern int tree_floor_log2 (tree);
extern void preserve_data (void);
extern int object_permanent_p (tree);
extern int type_precision (tree);
extern int simple_cst_equal (tree, tree);
extern int compare_tree_int (tree, unsigned long);

extern int type_list_equal (tree, tree);
extern int chain_member (tree, tree);
extern int chain_member_purpose (tree, tree);
extern int chain_member_value (tree, tree);
extern tree listify (tree);
extern tree type_hash_lookup (unsigned int, tree);
extern void type_hash_add (unsigned int, tree);
extern unsigned int type_hash_list (tree);
extern int simple_cst_list_equal (tree, tree);
extern void dump_tree_statistics (void);
extern void print_obstack_statistics (const char *, struct obstack *);


extern void print_obstack_name (char *, FILE *, const char *);


extern void expand_function_end (const char *, int, int);
extern void expand_function_start (tree, int);
extern void expand_pending_sizes (tree);

extern int real_onep (tree);
extern int real_twop (tree);
extern void gcc_obstack_init (struct obstack *);
extern void init_obstacks (void);
extern void build_common_tree_nodes (int);
extern void build_common_tree_nodes_2 (int);
extern void mark_tree_hashtable (void *);


extern void setjmp_protect_args (void);
extern void setjmp_protect (tree);
extern void expand_main_function (void);
extern void mark_varargs (void);
extern void init_dummy_function_start (void);
extern void expand_dummy_function_end (void);
extern void init_function_for_compilation (void);
extern void init_function_start (tree, const char *, int);
extern void assign_parms (tree);
extern void put_var_into_stack (tree);
extern void flush_addressof (tree);
extern void uninitialized_vars_warning (tree);
extern void setjmp_args_warning (void);
extern void mark_all_temps_used (void);
extern void init_temp_slots (void);
extern void combine_temp_slots (void);
extern void free_temp_slots (void);
extern void pop_temp_slots (void);
extern void push_temp_slots (void);
extern void preserve_temp_slots (rtx);
extern void preserve_rtl_expr_temps (tree);
extern int aggregate_value_p (tree);
extern void free_temps_for_rtl_expr (tree);
extern void instantiate_virtual_regs (tree, rtx);
extern void unshare_all_rtl (tree, rtx);
extern int max_parm_reg_num (void);
extern void push_function_context (void);
extern void pop_function_context (void);
extern void push_function_context_to (tree);
extern void pop_function_context_from (tree);
extern void ggc_mark_struct_function (struct function *);



extern void print_rtl (FILE *, rtx);



extern void debug_tree (tree);

extern void print_node (FILE *, const char *, tree, int);

extern void print_node_brief (FILE *, const char *, tree, int);

extern void indent_to (FILE *, int);



extern int apply_args_register_offset (int);
extern rtx expand_builtin_return_addr
        (enum built_in_function, int, rtx);
extern void check_max_integer_computation_mode (tree);


extern void start_sequence_for_rtl_expr (tree);
extern rtx emit_line_note (const char *, int);



extern int setjmp_call_p (tree);
# 3022 "../../gcc/tree.h"
extern tree decl_attributes (tree *, tree, int);






extern void insert_default_attributes (tree);


extern const struct attribute_spec *format_attribute_table;


extern const struct attribute_spec *lang_attribute_table;


extern int lang_attribute_common;



extern int mark_addressable (tree);
extern void incomplete_type_error (tree, tree);
extern tree truthvalue_conversion (tree);
extern int global_bindings_p (void);
extern void insert_block (tree);


extern void save_for_inline (tree);
extern void set_decl_abstract_flags (tree, int);
extern void output_inline_function (tree);
extern void set_decl_origin_self (tree);


extern void fixup_signed_type (tree);
extern void internal_reference_types (void);


extern void make_decl_rtl (tree, const char *);
extern void make_decl_one_only (tree);
extern int supports_one_only (void);
extern void variable_section (tree, int);


extern int div_and_round_double (enum tree_code, int, unsigned long, long, unsigned long, long, unsigned long *, long *, unsigned long *, long *);
# 3076 "../../gcc/tree.h"
extern void emit_nop (void);
extern void expand_computed_goto (tree);
extern _Bool parse_output_constraint (const char **, int, int, int, _Bool *, _Bool *, _Bool *);


extern void expand_asm_operands (tree, tree, tree, tree, int, const char *, int);

extern int any_pending_cleanups (int);
extern void init_stmt (void);
extern void init_stmt_for_function (void);
extern int drop_through_at_end_p (void);
extern void expand_start_target_temps (void);
extern void expand_end_target_temps (void);
extern void expand_elseif (tree);
extern void save_stack_pointer (void);
extern void expand_decl (tree);
extern int expand_decl_cleanup (tree, tree);
extern int expand_decl_cleanup_eh (tree, tree, int);
extern void expand_anon_union_decl (tree, tree, tree);
extern void move_cleanups_up (void);
extern void expand_start_case_dummy (void);
extern void expand_end_case_dummy (void);
extern tree case_index_expr_type (void);
extern long all_cases_count (tree, int *);
extern void check_for_full_enumeration_handling (tree);
extern void declare_nonlocal_label (tree);



extern tree get_file_function_name (int);





extern char *dwarf2out_cfi_label (void);



extern void dwarf2out_def_cfa (const char *, unsigned, long);



extern void dwarf2out_window_save (const char *);




extern void dwarf2out_args_size (const char *, long);



extern void dwarf2out_reg_save (const char *, unsigned, long);



extern void dwarf2out_return_save (const char *, long);



extern void dwarf2out_return_reg (const char *, unsigned);



typedef tree (*walk_tree_fn) (tree *, int *, void *);





enum tree_dump_index
{
  TDI_all,
  TDI_class,
  TDI_original,
  TDI_optimized,
  TDI_inlined,

  TDI_end
};







typedef struct dump_info *dump_info_p;

extern int dump_flag (dump_info_p, int, tree);
extern int dump_enabled_p (enum tree_dump_index);
extern FILE *dump_begin (enum tree_dump_index, int *);
extern void dump_end (enum tree_dump_index, FILE *);
extern void dump_node (tree, int, FILE *);
extern int dump_switch_p (const char *);
extern const char *dump_flag_name (enum tree_dump_index);
# 3180 "../../gcc/tree.h"
extern void fancy_abort (const char *, int, const char *)
    __attribute__ ((__noreturn__));
# 34 "../../gcc/predict.c" 2
# 1 "../../gcc/rtl.h" 1
# 25 "../../gcc/rtl.h"
struct function;

# 1 "../../gcc/machmode.h" 1
# 28 "../../gcc/rtl.h" 2
# 41 "../../gcc/rtl.h"
enum rtx_code {


# 1 "../../gcc/rtl.def" 1
# 70 "../../gcc/rtl.def"
UNKNOWN ,



NIL ,




INCLUDE ,






EXPR_LIST ,



INSN_LIST ,
# 129 "../../gcc/rtl.def"
MATCH_OPERAND ,






MATCH_SCRATCH ,




MATCH_DUP ,







MATCH_OPERATOR ,
# 158 "../../gcc/rtl.def"
MATCH_PARALLEL ,




MATCH_OP_DUP ,




MATCH_PAR_DUP ,




MATCH_INSN ,
# 192 "../../gcc/rtl.def"
DEFINE_INSN ,







DEFINE_PEEPHOLE ,
# 211 "../../gcc/rtl.def"
DEFINE_SPLIT ,
# 239 "../../gcc/rtl.def"
DEFINE_INSN_AND_SPLIT ,



DEFINE_PEEPHOLE2 ,



DEFINE_COMBINE ,
# 260 "../../gcc/rtl.def"
DEFINE_EXPAND ,
# 276 "../../gcc/rtl.def"
DEFINE_DELAY ,
# 317 "../../gcc/rtl.def"
DEFINE_FUNCTION_UNIT ,


DEFINE_ASM_ATTRIBUTES ,
# 333 "../../gcc/rtl.def"
DEFINE_COND_EXEC ,





SEQUENCE ,


ADDRESS ,
# 353 "../../gcc/rtl.def"
DEFINE_ATTR ,


ATTR ,







SET_ATTR ,
# 379 "../../gcc/rtl.def"
SET_ATTR_ALTERNATIVE ,




EQ_ATTR ,
# 394 "../../gcc/rtl.def"
ATTR_FLAG ,
# 407 "../../gcc/rtl.def"
INSN ,



JUMP_INSN ,






CALL_INSN ,


BARRIER ,
# 430 "../../gcc/rtl.def"
CODE_LABEL ,






NOTE ,
# 450 "../../gcc/rtl.def"
COND_EXEC ,


PARALLEL ,







ASM_INPUT ,
# 475 "../../gcc/rtl.def"
ASM_OPERANDS ,
# 486 "../../gcc/rtl.def"
UNSPEC ,


UNSPEC_VOLATILE ,



ADDR_VEC ,
# 518 "../../gcc/rtl.def"
ADDR_DIFF_VEC ,
# 529 "../../gcc/rtl.def"
PREFETCH ,
# 541 "../../gcc/rtl.def"
SET ,




USE ,




CLOBBER ,





CALL ,



RETURN ,





TRAP_IF ,




RESX ,






CONST_INT ,






CONST_DOUBLE ,


CONST_VECTOR ,


CONST_STRING ,





CONST ,



PC ,


VALUE ,
# 614 "../../gcc/rtl.def"
REG ,






SCRATCH ,
# 631 "../../gcc/rtl.def"
SUBREG ,
# 644 "../../gcc/rtl.def"
STRICT_LOW_PART ,





CONCAT ,




MEM ,





LABEL_REF ,





SYMBOL_REF ,






CC0 ,
# 683 "../../gcc/rtl.def"
ADDRESSOF ,
# 701 "../../gcc/rtl.def"
QUEUED ,
# 713 "../../gcc/rtl.def"
IF_THEN_ELSE ,
# 722 "../../gcc/rtl.def"
COND ,


COMPARE ,


PLUS ,


MINUS ,


NEG ,

MULT ,


DIV ,

MOD ,


UDIV ,
UMOD ,


AND ,

IOR ,

XOR ,

NOT ,




ASHIFT ,
ROTATE ,
ASHIFTRT ,
LSHIFTRT ,
ROTATERT ,





SMIN ,
SMAX ,
UMIN ,
UMAX ,
# 781 "../../gcc/rtl.def"
PRE_DEC ,
PRE_INC ,
POST_DEC ,
POST_INC ,
# 798 "../../gcc/rtl.def"
PRE_MODIFY ,
POST_MODIFY ,



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


UNORDERED ,
ORDERED ,


UNEQ ,
UNGE ,
UNGT ,
UNLE ,
UNLT ,


LTGT ,




SIGN_EXTEND ,


ZERO_EXTEND ,


TRUNCATE ,


FLOAT_EXTEND ,
FLOAT_TRUNCATE ,


FLOAT ,







FIX ,


UNSIGNED_FLOAT ,




UNSIGNED_FIX ,


ABS ,


SQRT ,




FFS ,
# 882 "../../gcc/rtl.def"
SIGN_EXTRACT ,


ZERO_EXTRACT ,




HIGH ,



LO_SUM ,
# 907 "../../gcc/rtl.def"
RANGE_INFO ,
# 922 "../../gcc/rtl.def"
RANGE_REG ,





RANGE_VAR ,



RANGE_LIVE ,




CONSTANT_P_RTX ,
# 958 "../../gcc/rtl.def"
CALL_PLACEHOLDER ,






VEC_MERGE ,





VEC_SELECT ,




VEC_CONCAT ,





VEC_DUPLICATE ,


SS_PLUS ,


US_PLUS ,


SS_MINUS ,


US_MINUS ,


SS_TRUNCATE ,


US_TRUNCATE ,
# 1014 "../../gcc/rtl.def"
PHI ,
# 45 "../../gcc/rtl.h" 2


  LAST_AND_UNUSED_RTX_CODE};






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


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


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


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




typedef struct
{

  unsigned min_align: 8;

  unsigned base_after_vec: 1;
  unsigned min_after_vec: 1;

  unsigned max_after_vec: 1;

  unsigned min_after_base: 1;

  unsigned max_after_base: 1;


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





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



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



struct rtx_def
{

  enum rtx_code code: 16;


  enum machine_mode mode : 8;






  unsigned int jump : 1;


  unsigned int call : 1;
# 149 "../../gcc/rtl.h"
  unsigned int unchanging : 1;







  unsigned int volatil : 1;
# 175 "../../gcc/rtl.h"
  unsigned int in_struct : 1;






  unsigned int used : 1;




  unsigned integrated : 1;
# 196 "../../gcc/rtl.h"
  unsigned frame_related : 1;




  rtunion fld[1];
};
# 222 "../../gcc/rtl.h"
struct rtvec_def {
  int num_elem;
  rtx elem[1];
};
# 451 "../../gcc/rtl.h"
enum reg_note
{



  REG_DEAD = 1,


  REG_INC,
# 470 "../../gcc/rtl.h"
  REG_EQUIV,




  REG_EQUAL,





  REG_WAS_0,





  REG_RETVAL,




  REG_LIBCALL,






  REG_NONNEG,



  REG_NO_CONFLICT,


  REG_UNUSED,
# 515 "../../gcc/rtl.h"
  REG_CC_SETTER, REG_CC_USER,




  REG_LABEL,





  REG_DEP_ANTI, REG_DEP_OUTPUT,





  REG_BR_PROB,




  REG_EXEC_COUNT,



  REG_NOALIAS,



  REG_SAVE_AREA,





  REG_BR_PRED,




  REG_FRAME_RELATED_EXPR,




  REG_EH_CONTEXT,





  REG_EH_REGION,


  REG_SAVE_NOTE,





  REG_MAYBE_DEAD,


  REG_NORETURN,



  REG_NON_LOCAL_GOTO,



  REG_SETJMP,


  REG_ALWAYS_RETURN,



  REG_VTABLE_REF
};
# 607 "../../gcc/rtl.h"
extern const char * const reg_note_name[];
# 663 "../../gcc/rtl.h"
enum insn_note
{

  NOTE_INSN_BIAS = -100,



  NOTE_INSN_DELETED,



  NOTE_INSN_BLOCK_BEG,
  NOTE_INSN_BLOCK_END,


  NOTE_INSN_LOOP_BEG,
  NOTE_INSN_LOOP_END,


  NOTE_INSN_LOOP_CONT,

  NOTE_INSN_LOOP_VTOP,





  NOTE_INSN_LOOP_END_TOP_COND,






  NOTE_INSN_FUNCTION_END,


  NOTE_INSN_PROLOGUE_END,


  NOTE_INSN_EPILOGUE_BEG,


  NOTE_INSN_DELETED_LABEL,




  NOTE_INSN_FUNCTION_BEG,



  NOTE_INSN_EH_REGION_BEG,
  NOTE_INSN_EH_REGION_END,




  NOTE_INSN_REPEATED_LINE_NUMBER,



  NOTE_INSN_RANGE_BEG,
  NOTE_INSN_RANGE_END,


  NOTE_INSN_LIVE,


  NOTE_INSN_BASIC_BLOCK,



  NOTE_INSN_EXPECTED_VALUE,

  NOTE_INSN_MAX
};



extern const char * const note_insn_name[NOTE_INSN_MAX - NOTE_INSN_BIAS];
# 840 "../../gcc/rtl.h"
extern unsigned int subreg_lsb (rtx);
extern unsigned int subreg_regno_offset (unsigned int, enum machine_mode, unsigned int, enum machine_mode);



extern unsigned int subreg_regno (rtx);
# 1211 "../../gcc/rtl.h"
extern int rtx_equal_function_value_matters;


extern int generating_concat_p;




extern int ceil_log2 (unsigned long);




extern rtx expand_builtin_expect_jump (tree, rtx, rtx);


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

extern rtx plus_constant_wide (rtx, long);
extern rtx plus_constant_for_output_wide (rtx, 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, enum machine_mode);



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


extern rtx copy_rtx_if_shared (rtx);


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


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


extern rtx gen_lowpart_if_possible (enum machine_mode, rtx);


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

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

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



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

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

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

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


extern rtx immed_double_const (long, long, 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, int);

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

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

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

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


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


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


extern rtx *find_constant_term_loc (rtx *);


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


extern rtx split_insns (rtx, rtx);


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


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


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



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


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


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


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



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



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



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



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


extern rtx gen_mem_addressof (rtx, tree);


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



extern rtx set_unique_reg_note (rtx, enum reg_note, rtx);
# 1448 "../../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 get_integer_term (rtx);
extern rtx get_related_value (rtx);
extern rtx get_jump_table_offset (rtx, rtx *);
extern int reg_mentioned_p (rtx, rtx);
extern int count_occurrences (rtx, rtx, int);
extern int reg_referenced_p (rtx, rtx);
extern int reg_used_between_p (rtx, rtx, rtx);
extern int reg_referenced_between_p (rtx, rtx, rtx);
extern int reg_set_between_p (rtx, rtx, rtx);
extern int regs_set_between_p (rtx, rtx, rtx);
extern int commutative_operand_precedence (rtx);
extern int swap_commutative_operands_p (rtx, rtx);
extern int modified_between_p (rtx, rtx, rtx);
extern int no_labels_between_p (rtx, rtx);
extern int no_jumps_between_p (rtx, rtx);
extern int modified_in_p (rtx, rtx);
extern int insn_dependent_p (rtx, rtx);
extern int reg_set_p (rtx, rtx);
extern rtx single_set_2 (rtx, rtx);
extern int multiple_sets (rtx);
extern int set_noop_p (rtx);
extern int noop_move_p (rtx);
extern rtx find_last_value (rtx, rtx *, rtx, int);
extern int refers_to_regno_p (unsigned int, unsigned int, rtx, rtx *);

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


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


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

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

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

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



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







extern int max_parallel;


extern void free_reg_info (void);


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



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

extern rtx get_first_nonparm_insn (void);

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


extern rtx const_int_rtx[64 * 2 + 1];





extern rtx const_true_rtx;

extern rtx const_tiny_rtx[3][(int) MAX_MACHINE_MODE];
# 1584 "../../gcc/rtl.h"
enum global_rtl_index
{
  GR_PC,
  GR_CC0,
  GR_STACK_POINTER,
  GR_FRAME_POINTER,
# 1599 "../../gcc/rtl.h"
  GR_HARD_FRAME_POINTER,





  GR_ARG_POINTER,


  GR_VIRTUAL_INCOMING_ARGS,
  GR_VIRTUAL_STACK_ARGS,
  GR_VIRTUAL_STACK_DYNAMIC,
  GR_VIRTUAL_OUTGOING_ARGS,
  GR_VIRTUAL_CFA,

  GR_MAX
};


extern rtx global_rtl[GR_MAX];
# 1632 "../../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_sse (enum rtx_code, enum machine_mode mode, const char *arg0, const char *arg1, rtx arg2);


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

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

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



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



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



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

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



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



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

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


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

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

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



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

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

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

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

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


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


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

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






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





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


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


extern rtx gen_rtx_fmt_uuuu (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1, rtx arg2, rtx arg3);
# 1643 "../../gcc/rtl.h" 2







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

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

extern rtx gen_lowpart_SUBREG (enum machine_mode, rtx);
# 1728 "../../gcc/rtl.h"
extern rtx find_next_ref (rtx, rtx);

extern rtx output_constant_def (tree, int);
extern rtx immed_real_const (tree);
# 1741 "../../gcc/rtl.h"
extern int flow2_completed;




extern int reload_completed;




extern int reload_in_progress;







extern int cse_not_expected;



extern int no_new_pseudos;





extern int rtx_to_tree_code (enum rtx_code);


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


struct cse_basic_block_data;
# 1787 "../../gcc/rtl.h"
extern int rtx_cost (rtx, enum rtx_code);
extern int address_cost (rtx, enum machine_mode);
extern void delete_trivially_dead_insns (rtx, int, int);

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

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




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

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


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



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


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

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




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

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


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

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



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

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

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


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


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


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




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

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



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





extern int gcse_main (rtx, FILE *);



extern void mark_elimination (int, int);

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




extern void build_insn_chain (rtx);


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

extern void delete_null_pointer_checks (rtx);



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

extern void combine_stack_adjustments (void);



extern void dbr_schedule (rtx, FILE *);




extern void dump_local_alloc (FILE *);

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


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



extern void reg_to_stack (rtx, FILE *);



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



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


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




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



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



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



extern void rrotate_double (unsigned long, long, long, unsigned int, unsigned 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);
# 35 "../../gcc/predict.c" 2
# 1 "tm_p.h" 1

# 1 "../../gcc/config/alpha/alpha-protos.h" 1
# 21 "../../gcc/config/alpha/alpha-protos.h"
extern int alpha_next_sequence_number;

extern void literal_section (void);
extern void override_options (void);
extern int zap_mask (long);
extern int direct_return (void);

extern int alpha_sa_size (void);
extern int alpha_pv_save_size (void);
extern int alpha_using_fp (void);
extern void alpha_write_verstamp (FILE *);
extern void alpha_expand_prologue (void);
extern void alpha_expand_epilogue (void);
extern void alpha_output_filename (FILE *, const char *);
extern void alpha_output_lineno (FILE *, int);


extern int reg_or_0_operand (rtx, enum machine_mode);
extern int reg_or_6bit_operand (rtx, enum machine_mode);
extern int reg_or_8bit_operand (rtx, enum machine_mode);
extern int cint8_operand (rtx, enum machine_mode);
extern int add_operand (rtx, enum machine_mode);
extern int sext_add_operand (rtx, enum machine_mode);
extern int const48_operand (rtx, enum machine_mode);
extern int and_operand (rtx, enum machine_mode);
extern int or_operand (rtx, enum machine_mode);
extern int mode_width_operand (rtx, enum machine_mode);
extern int mode_mask_operand (rtx, enum machine_mode);
extern int mul8_operand (rtx, enum machine_mode);
extern int fp0_operand (rtx, enum machine_mode);
extern int reg_or_fp0_operand (rtx, enum machine_mode);
extern int hard_fp_register_operand (rtx, enum machine_mode);
extern int hard_int_register_operand (rtx, enum machine_mode);
extern int reg_or_cint_operand (rtx, enum machine_mode);
extern int some_operand (rtx, enum machine_mode);
extern int some_ni_operand (rtx, enum machine_mode);
extern int input_operand (rtx, enum machine_mode);
extern int current_file_function_operand (rtx, enum machine_mode);
extern int direct_call_operand (rtx, enum machine_mode);
extern int local_symbolic_operand (rtx, enum machine_mode);
extern int small_symbolic_operand (rtx, enum machine_mode);
extern int some_small_symbolic_operand (rtx, enum machine_mode);
extern int global_symbolic_operand (rtx, enum machine_mode);
extern int call_operand (rtx, enum machine_mode);
extern int symbolic_operand (rtx, enum machine_mode);
extern int alpha_comparison_operator (rtx, enum machine_mode);
extern int alpha_zero_comparison_operator (rtx, enum machine_mode);
extern int alpha_swapped_comparison_operator (rtx, enum machine_mode);
extern int signed_comparison_operator (rtx, enum machine_mode);
extern int alpha_fp_comparison_operator (rtx, enum machine_mode);
extern int divmod_operator (rtx, enum machine_mode);
extern int aligned_memory_operand (rtx, enum machine_mode);
extern int unaligned_memory_operand (rtx, enum machine_mode);
extern int reg_or_unaligned_mem_operand (rtx, enum machine_mode);
extern int any_memory_operand (rtx, enum machine_mode);
extern int reg_not_elim_operand (rtx, enum machine_mode);
extern int normal_memory_operand (rtx, enum machine_mode);
extern int reg_no_subreg_operand (rtx, enum machine_mode);
extern int addition_operation (rtx, enum machine_mode);

extern _Bool alpha_const_ok_for_letter_p (long, int);
extern _Bool alpha_const_double_ok_for_letter_p (rtx, int);
extern _Bool alpha_extra_constraint (rtx, int);

extern rtx alpha_tablejump_addr_vec (rtx);
extern rtx alpha_tablejump_best_label (rtx);

extern _Bool alpha_legitimate_address_p (enum machine_mode, rtx, int);
extern rtx alpha_legitimize_address (rtx, rtx, enum machine_mode);
extern rtx alpha_legitimize_reload_address (rtx, enum machine_mode, int, int, int);


extern rtx split_small_symbolic_operand (rtx);

extern void get_aligned_mem (rtx, rtx *, rtx *);
extern rtx get_unaligned_address (rtx, int);
extern enum reg_class alpha_preferred_reload_class (rtx, enum reg_class);

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



extern void alpha_set_memflags (rtx, rtx);
extern rtx alpha_emit_set_const (rtx, enum machine_mode, long, int);

extern rtx alpha_emit_set_long_const (rtx, long, long);

extern _Bool alpha_expand_mov (enum machine_mode, rtx *);
extern _Bool alpha_expand_mov_nobwx (enum machine_mode, rtx *);
extern void alpha_emit_floatuns (rtx[]);
extern rtx alpha_emit_conditional_branch (enum rtx_code);
extern rtx alpha_emit_setcc (enum rtx_code);
extern rtx alpha_emit_conditional_move (rtx, enum machine_mode);
extern int alpha_split_conditional_move (enum rtx_code, rtx, rtx, rtx, rtx);

extern void alpha_emit_xfloating_arith (enum rtx_code, rtx[]);
extern void alpha_emit_xfloating_cvt (enum rtx_code, rtx[]);
extern void alpha_split_tfmode_pair (rtx[]);
extern void alpha_split_tfmode_frobsign (rtx[], rtx (*)(rtx, rtx, rtx));

extern void alpha_expand_unaligned_load (rtx, rtx, long, long, int);

extern void alpha_expand_unaligned_store (rtx, rtx, long, long);

extern int alpha_expand_block_move (rtx []);
extern int alpha_expand_block_clear (rtx []);
extern rtx alpha_return_addr (int, rtx);
extern rtx alpha_gp_save_rtx (void);
extern void print_operand (FILE *, rtx, int);
extern void print_operand_address (FILE *, rtx);
extern void alpha_initialize_trampoline (rtx, rtx, rtx, int, int, int);
extern void alpha_reorg (rtx);



extern int check_float_value (enum machine_mode, realvaluetype *, int);
# 153 "../../gcc/config/alpha/alpha-protos.h"
extern rtx alpha_need_linkage (const char *, int);



extern tree alpha_build_va_list (void);

extern void alpha_va_start (int, tree, rtx);
extern rtx alpha_va_arg (tree, tree);
extern rtx function_arg (int, enum machine_mode, tree, int);


extern void alpha_start_function (FILE *, const char *, tree);
extern void alpha_end_function (FILE *, const char *, tree);
extern void alpha_output_mi_thunk_osf (FILE *, tree, long, tree);

extern void alpha_encode_section_info (tree);



extern rtx unicosmk_add_call_info_word (rtx);
# 3 "tm_p.h" 2

# 1 "tm-preds.h" 1







extern int reg_or_0_operand (rtx, enum machine_mode);
extern int reg_or_6bit_operand (rtx, enum machine_mode);
extern int reg_or_8bit_operand (rtx, enum machine_mode);
extern int cint8_operand (rtx, enum machine_mode);
extern int reg_or_cint_operand (rtx, enum machine_mode);
extern int add_operand (rtx, enum machine_mode);
extern int sext_add_operand (rtx, enum machine_mode);
extern int const48_operand (rtx, enum machine_mode);
extern int and_operand (rtx, enum machine_mode);
extern int or_operand (rtx, enum machine_mode);
extern int mode_mask_operand (rtx, enum machine_mode);
extern int mul8_operand (rtx, enum machine_mode);
extern int mode_width_operand (rtx, enum machine_mode);
extern int reg_or_fp0_operand (rtx, enum machine_mode);
extern int alpha_comparison_operator (rtx, enum machine_mode);
extern int alpha_zero_comparison_operator (rtx, enum machine_mode);
extern int alpha_swapped_comparison_operator (rtx, enum machine_mode);
extern int signed_comparison_operator (rtx, enum machine_mode);
extern int alpha_fp_comparison_operator (rtx, enum machine_mode);
extern int divmod_operator (rtx, enum machine_mode);
extern int fp0_operand (rtx, enum machine_mode);
extern int current_file_function_operand (rtx, enum machine_mode);
extern int direct_call_operand (rtx, enum machine_mode);
extern int local_symbolic_operand (rtx, enum machine_mode);
extern int small_symbolic_operand (rtx, enum machine_mode);
extern int global_symbolic_operand (rtx, enum machine_mode);
extern int call_operand (rtx, enum machine_mode);
extern int input_operand (rtx, enum machine_mode);
extern int some_operand (rtx, enum machine_mode);
extern int some_ni_operand (rtx, enum machine_mode);
extern int aligned_memory_operand (rtx, enum machine_mode);
extern int unaligned_memory_operand (rtx, enum machine_mode);
extern int reg_or_unaligned_mem_operand (rtx, enum machine_mode);
extern int any_memory_operand (rtx, enum machine_mode);
extern int hard_fp_register_operand (rtx, enum machine_mode);
extern int hard_int_register_operand (rtx, enum machine_mode);
extern int reg_not_elim_operand (rtx, enum machine_mode);
extern int reg_no_subreg_operand (rtx, enum machine_mode);
extern int addition_operation (rtx, enum machine_mode);
extern int symbolic_operand (rtx, enum machine_mode);
extern int some_small_symbolic_operand (rtx, enum machine_mode);
# 5 "tm_p.h" 2
# 36 "../../gcc/predict.c" 2
# 1 "../../gcc/hard-reg-set.h" 1
# 41 "../../gcc/hard-reg-set.h"
typedef unsigned long HARD_REG_ELT_TYPE;
# 395 "../../gcc/hard-reg-set.h"
extern char fixed_regs[64];



extern HARD_REG_ELT_TYPE fixed_reg_set;






extern char call_used_regs[64];



extern HARD_REG_ELT_TYPE call_used_reg_set;


extern HARD_REG_ELT_TYPE losing_caller_save_reg_set;







extern char call_fixed_regs[64];



extern HARD_REG_ELT_TYPE call_fixed_reg_set;






extern char global_regs[64];
# 441 "../../gcc/hard-reg-set.h"
extern HARD_REG_ELT_TYPE regs_invalidated_by_call;




extern int reg_alloc_order[64];



extern int inv_reg_alloc_order[64];




extern HARD_REG_ELT_TYPE reg_class_contents[(int) LIM_REG_CLASSES];



extern unsigned int reg_class_size[(int) LIM_REG_CLASSES];



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



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




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




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



extern int n_non_fixed_regs;



extern const char * reg_names[64];
# 37 "../../gcc/predict.c" 2
# 1 "../../gcc/basic-block.h" 1
# 25 "../../gcc/basic-block.h"
# 1 "../../gcc/bitmap.h" 1
# 43 "../../gcc/bitmap.h"
typedef struct bitmap_element_def
{
  struct bitmap_element_def *next;
  struct bitmap_element_def *prev;
  unsigned int indx;
  unsigned long bits[2];
} bitmap_element;


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

} bitmap_head, *bitmap;


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


extern bitmap_element bitmap_zero_bits;


extern void bitmap_clear (bitmap);


extern void bitmap_copy (bitmap, bitmap);


extern int bitmap_equal_p (bitmap, bitmap);


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



extern void bitmap_ior_and_compl (bitmap, bitmap, bitmap);


extern void bitmap_clear_bit (bitmap, int);


extern void bitmap_set_bit (bitmap, int);


extern int bitmap_bit_p (bitmap, int);


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


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


extern bitmap bitmap_initialize (bitmap);


extern void bitmap_release_memory (void);






extern int bitmap_union_of_diff (bitmap, bitmap, bitmap, bitmap);
extern int bitmap_first_set_bit (bitmap);
extern int bitmap_last_set_bit (bitmap);
# 26 "../../gcc/basic-block.h" 2
# 1 "../../gcc/sbitmap.h" 1
# 31 "../../gcc/sbitmap.h"
typedef struct simple_bitmap_def
{
  unsigned int n_bits;
  unsigned int size;
  unsigned int bytes;
  unsigned long elms[1];
} *sbitmap;

typedef unsigned long *sbitmap_ptr;
# 91 "../../gcc/sbitmap.h"
struct int_list;

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


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

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

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

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

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

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

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




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







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

extern void debug_sbitmap (sbitmap);
# 27 "../../gcc/basic-block.h" 2
# 1 "../../gcc/varray.h" 1
# 36 "../../gcc/varray.h"
struct const_equiv_data {
# 50 "../../gcc/varray.h"
  struct rtx_def *rtx;



  unsigned age;
};


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


typedef struct varray_head_tag {
  size_t num_elements;
  size_t elements_used;

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



extern varray_type varray_init (size_t, size_t, const char *);
# 165 "../../gcc/varray.h"
extern varray_type varray_grow (varray_type, size_t);
# 28 "../../gcc/basic-block.h" 2
# 1 "../../include/partition.h" 1
# 46 "../../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 "../../gcc/basic-block.h" 2


typedef bitmap_head regset_head;

typedef bitmap regset;
# 74 "../../gcc/basic-block.h"
extern void reg_set_to_hard_reg_set (HARD_REG_ELT_TYPE *, bitmap);
# 116 "../../gcc/basic-block.h"
typedef long gcov_type;


typedef struct edge_def {

  struct edge_def *pred_next, *succ_next;


  struct basic_block_def *src, *dest;


  rtx insns;


  void *aux;

  int flags;
  int probability;
  gcov_type count;

} *edge;
# 174 "../../gcc/basic-block.h"
typedef struct basic_block_def {

  rtx head, end;


  tree head_tree;
  tree end_tree;


  edge pred, succ;




  regset local_set;



  regset cond_local_set;





  regset global_live_at_start;

  regset global_live_at_end;


  void *aux;


  int index;


  int loop_depth;


  gcov_type count;


  int frequency;


  int flags;
} *basic_block;
# 228 "../../gcc/basic-block.h"
extern int n_basic_blocks;



extern int n_edges;



extern varray_type basic_block_info;





extern regset regs_live_at_setjmp;



extern rtx label_value_list, tail_recursion_label_list;

extern struct obstack flow_obstack;
# 278 "../../gcc/basic-block.h"
extern struct basic_block_def entry_exit_blocks[2];



extern varray_type basic_block_for_insn;



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

extern void free_basic_block_vars (int);

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

extern edge make_edge (basic_block, basic_block, int);

extern edge make_single_succ_edge (basic_block, basic_block, int);

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

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


struct loop
{

  int num;


  basic_block header;


  basic_block latch;


  basic_block pre_header;




  edge *pre_header_edges;


  int num_pre_header_edges;



  basic_block first;



  basic_block last;


  sbitmap nodes;


  int num_nodes;


  edge *entry_edges;


  int num_entries;


  edge *exit_edges;


  int num_exits;


  sbitmap exits_doms;


  int depth;



  int level;


  struct loop *outer;


  struct loop *inner;


  struct loop *next;


  int shared;


  int invalid;


  void *aux;





  rtx vtop;



  rtx cont;


  rtx cont_dominator;


  rtx start;


  rtx end;



  rtx top;


  rtx scan_start;


  rtx sink;
# 442 "../../gcc/basic-block.h"
  rtx exit_labels;



  int exit_count;
};



struct loops
{

  int num;


  int levels;



  struct loop *array;


  struct loop *tree_root;


  struct cfg
  {

    sbitmap *dom;


    int *dfs_order;



    int *rc_order;
  } cfg;


  sbitmap shared_headers;
};

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


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


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


struct edge_list
{
  int num_blocks;
  int num_edges;
  edge *index_to_edge;
};
# 539 "../../gcc/basic-block.h"
struct edge_list * create_edge_list (void);
void free_edge_list (struct edge_list *);
void print_edge_list (FILE *, struct edge_list *);
void verify_edge_list (FILE *, struct edge_list *);
int find_edge_index (struct edge_list *, basic_block, basic_block);



enum update_life_extent
{
  UPDATE_LIFE_LOCAL = 0,
  UPDATE_LIFE_GLOBAL = 1,
  UPDATE_LIFE_GLOBAL_RM_NOTES = 2
};
# 588 "../../gcc/basic-block.h"
extern void life_analysis (rtx, FILE *, int);
extern void update_life_info (sbitmap, enum update_life_extent, int);

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


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


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



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



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

extern int optimize_mode_switching (FILE *);


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


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


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

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

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




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

typedef struct conflict_graph_def *conflict_graph;




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




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

extern int conflict_graph_conflict_p (conflict_graph, int, int);

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


extern void conflict_graph_merge_regs (conflict_graph, int, int);

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

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



enum cdi_direction
{
  CDI_DOMINATORS,
  CDI_POST_DOMINATORS
};

extern void calculate_dominance_info (int *, sbitmap *, enum cdi_direction);
# 38 "../../gcc/predict.c" 2
# 1 "insn-config.h" 1
# 39 "../../gcc/predict.c" 2
# 1 "../../gcc/regs.h" 1
# 42 "../../gcc/regs.h"
extern int max_regno;


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


  int sets;


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

} reg_info;

extern varray_type reg_n_info;
# 157 "../../gcc/regs.h"
extern short *reg_renumber;




extern char regs_ever_live[64];



extern const char * reg_names[64];






extern enum machine_mode reg_raw_mode[64];
# 196 "../../gcc/regs.h"
extern rtx regs_may_share;




extern int caller_save_needed;
# 230 "../../gcc/regs.h"
extern void allocate_reg_info (size_t, int, int);
# 40 "../../gcc/predict.c" 2
# 1 "../../gcc/flags.h" 1
# 26 "../../gcc/flags.h"
extern const char *main_input_filename;

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

};


extern enum debug_info_type write_symbols;

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


extern enum debug_info_level debug_info_level;



extern int use_gnu_debug_info_extensions;



extern int optimize;



extern int optimize_size;




extern int quiet_flag;



extern int time_report;




extern int mem_report;



extern int inhibit_warnings;



extern int warn_system_headers;



extern int extra_warnings;





extern void set_Wunused (int setting);

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



extern int warn_notreached;



extern int warn_inline;



extern int warn_uninitialized;







extern int warn_unknown_pragmas;



extern int warn_shadow;



extern int warn_switch;




extern int warn_return_type;



extern int warn_missing_noreturn;





extern int warn_cast_align;





extern int warn_larger_than;
extern long larger_than_size;




extern int warn_aggregate_return;



extern int warn_packed;



extern int warn_padded;



extern int warn_disabled_optimization;




extern int warn_deprecated_decl;



extern int profile_flag;



extern int profile_arc_flag;



extern int flag_test_coverage;



extern int flag_branch_probabilities;



extern int flag_reorder_blocks;



extern int flag_rename_registers;




extern int pedantic;




extern int in_system_header;




extern int flag_print_asm_name;





extern int flag_signed_char;



extern int flag_short_enums;





extern int flag_caller_saves;



extern int flag_pcc_struct_return;




extern int flag_force_mem;




extern int flag_force_addr;




extern int flag_defer_pop;




extern int flag_float_store;



extern int flag_strength_reduce;






extern int flag_unroll_loops;




extern int flag_unroll_all_loops;




extern int flag_move_all_movables;



extern int flag_prefetch_loop_arrays;




extern int flag_reduce_all_givs;




extern int flag_cse_follow_jumps;




extern int flag_cse_skip_blocks;



extern int flag_expensive_optimizations;




extern int flag_writable_strings;





extern int flag_no_function_cse;




extern int flag_omit_frame_pointer;



extern int flag_no_peephole;



extern int flag_volatile;



extern int flag_volatile_global;



extern int flag_volatile_static;



extern int flag_optimize_sibling_calls;




extern int flag_errno_math;






extern int flag_unsafe_math_optimizations;





extern int flag_trapping_math;





extern int flag_complex_divide_method;



extern int flag_rerun_loop_opt;




extern int flag_inline_functions;





extern int flag_keep_inline_functions;







extern int flag_no_inline;




extern int flag_really_no_inline;



extern int flag_syntax_only;



extern int flag_gen_aux_info;



extern int flag_shared_data;






extern int flag_schedule_insns;
extern int flag_schedule_insns_after_reload;
# 418 "../../gcc/flags.h"
extern int flag_schedule_interblock;
extern int flag_schedule_speculative;
extern int flag_schedule_speculative_load;
extern int flag_schedule_speculative_load_dangerous;



extern int flag_branch_on_count_reg;





extern int flag_single_precision_constant;



extern int flag_delayed_branch;




extern int flag_dump_unnumbered;





extern int flag_pretend_float;




extern int flag_pedantic_errors;




extern int flag_pic;




extern int flag_exceptions;



extern int flag_unwind_tables;



extern int flag_asynchronous_unwind_tables;




extern int flag_no_common;





extern int flag_inhibit_size_directive;




extern int flag_function_sections;



extern int flag_data_sections;
# 498 "../../gcc/flags.h"
extern int flag_verbose_asm;
# 507 "../../gcc/flags.h"
extern int flag_debug_asm;

extern int flag_dump_rtl_in_asm;



extern int flag_gnu_linker;


extern int flag_pack_struct;
# 525 "../../gcc/flags.h"
extern int flag_argument_noalias;





extern int flag_strict_aliasing;



extern int flag_stack_check;


extern int flag_regmove;


extern int flag_instrument_function_entry_exit;


extern int flag_peephole2;


extern int flag_guess_branch_prob;






extern int flag_bounded_pointers;







extern int flag_bounds_check;




extern int flag_merge_constants;




extern int flag_renumber_insns;







extern int frame_pointer_needed;



extern int flag_trapv;


extern int g_switch_value;
extern int g_switch_set;






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


extern int dump_for_graph;


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





extern int flag_no_ident;



extern int flag_gcse_lm;



extern int flag_gcse_sm;




extern int flag_eliminate_dwarf2_dups;



extern int flag_detailed_statistics;


extern int flag_non_call_exceptions;
# 41 "../../gcc/predict.c" 2
# 1 "../../gcc/output.h" 1
# 24 "../../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)));



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 (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 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);
# 218 "../../gcc/output.h"
extern void named_section (tree, const char *, int);


extern void function_section (tree);


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



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




extern void declare_weak (tree);

extern void merge_weak (tree, tree);



extern void weak_finish (void);
# 248 "../../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 assemble_asm (tree);





extern void assemble_start_function (tree, const char *);



extern void assemble_end_function (tree, const char *);
# 283 "../../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_global (const char *);


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






extern void assemble_name (FILE *, const char *);
# 327 "../../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);
# 351 "../../gcc/output.h"
extern void assemble_real (realvaluetype, enum machine_mode, unsigned);
# 360 "../../gcc/output.h"
extern void clear_const_double_mem (void);


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);
# 389 "../../gcc/output.h"
extern tree initializer_constant_valid_p (tree, tree);
# 399 "../../gcc/output.h"
extern void output_constant (tree, long, unsigned int);
# 410 "../../gcc/output.h"
extern rtx final_sequence;






extern int sdb_begin_function_line;





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;
# 480 "../../gcc/output.h"
extern const char *user_label_prefix;
# 491 "../../gcc/output.h"
extern void default_function_pro_epilogue (FILE *, long);


extern void default_exception_section (void);


extern void default_eh_frame_section (void);


extern void no_asm_to_stream (FILE *);
# 517 "../../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 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 assemble_vtable_entry (struct rtx_def *, long);
extern void assemble_vtable_inherit (struct rtx_def *, struct rtx_def *);
# 42 "../../gcc/predict.c" 2
# 1 "../../gcc/function.h" 1
# 22 "../../gcc/function.h"
struct var_refs_queue
{
  rtx modified;
  enum machine_mode promoted_mode;
  int unsignedp;
  struct var_refs_queue *next;
};






struct sequence_stack
{

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

extern struct sequence_stack *sequence_stack;



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

struct emit_status
{


  int x_reg_rtx_no;


  int x_first_label_num;






  rtx x_first_insn;
  rtx x_last_insn;




  tree sequence_rtl_expr;





  struct sequence_stack *sequence_stack;



  int x_cur_insn_uid;



  int x_last_linenum;
  const char *x_last_filename;





  int regno_pointer_align_length;




  unsigned char *regno_pointer_align;



  tree *regno_decl;



  rtx *x_regno_reg_rtx;
};
# 119 "../../gcc/function.h"
struct expr_status
{


  int x_pending_stack_adjust;
# 140 "../../gcc/function.h"
  int x_inhibit_defer_pop;





  int x_stack_pointer_delta;




  rtx x_saveregs_value;


  rtx x_apply_args_value;


  rtx x_forced_labels;


  rtx x_pending_chain;
};
# 174 "../../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;



  int args_info;





  rtx return_rtx;


  rtx internal_arg_pointer;



  const char *cannot_inline;



  struct initial_value_struct *hard_reg_initial_vals;


  int x_function_call_count;




  tree x_nonlocal_labels;





  rtx x_nonlocal_goto_handler_slots;



  rtx x_nonlocal_goto_handler_labels;




  rtx x_nonlocal_goto_stack_level;





  rtx x_cleanup_label;




  rtx x_return_label;



  rtx x_save_expr_regs;



  rtx x_stack_slot_list;


  tree x_rtl_expr_chain;



  rtx x_tail_recursion_label;


  rtx x_tail_recursion_reentry;





  rtx x_arg_pointer_save_area;




  rtx x_clobber_return_insn;




  long x_frame_offset;




  tree x_context_display;
# 317 "../../gcc/function.h"
  tree x_trampoline_list;


  rtx x_parm_birth_insn;



  rtx x_last_parm_insn;



  unsigned int x_max_parm_reg;





  rtx *x_parm_reg_stack_loc;


  struct temp_slot *x_temp_slots;


  int x_temp_slot_level;


  int x_var_temp_slot_level;





  int x_target_temp_slot_level;



  struct var_refs_queue *fixup_var_refs_queue;


  int inlinable;
  int no_debugging_symbols;

  void *original_arg_vector;
  tree original_decl_initial;


  rtx inl_last_parm_insn;

  int inl_max_label_num;


  int profile_label_no;




  struct machine_function *machine;

  int stack_alignment_needed;

  int preferred_stack_boundary;


  struct language_function *language;





  rtx epilogue_delay_list;





  unsigned int returns_struct : 1;



  unsigned int returns_pcc_struct : 1;


  unsigned int returns_pointer : 1;


  unsigned int needs_context : 1;


  unsigned int calls_setjmp : 1;


  unsigned int calls_longjmp : 1;



  unsigned int calls_alloca : 1;


  unsigned int calls_eh_return : 1;



  unsigned int has_nonlocal_label : 1;



  unsigned int has_nonlocal_goto : 1;


  unsigned int contains_functions : 1;


  unsigned int has_computed_jump : 1;




  unsigned int is_thunk : 1;



  unsigned int instrument_entry_exit : 1;


  unsigned int profile : 1;



  unsigned int limit_stack : 1;



  unsigned int varargs : 1;



  unsigned int stdarg : 1;





  unsigned int x_whole_function_mode_p : 1;
# 468 "../../gcc/function.h"
  unsigned int x_dont_save_pending_sizes_p : 1;


  unsigned int uses_const_pool : 1;


  unsigned int uses_pic_offset_table : 1;


  unsigned int uses_eh_lsda : 1;


  unsigned int arg_pointer_save_area_init : 1;
};


extern struct function *cfun;


extern int virtuals_instantiated;
# 549 "../../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 get_frame_size (void);

extern long get_func_frame_size (struct function *);



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



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


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


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

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

extern rtx get_first_block_beg (void);


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


extern rtx get_arg_pointer_save_area (struct function *);

extern void init_virtual_regs (struct emit_status *);


extern void init_function_once (void);
# 43 "../../gcc/predict.c" 2
# 1 "../../gcc/except.h" 1
# 29 "../../gcc/except.h"
struct function;

struct inline_remap;



struct eh_status;


struct eh_region;


extern int doing_eh (int);




extern void expand_eh_region_start (void);



extern void expand_eh_region_end_cleanup (tree);



extern void expand_start_all_catch (void);




extern void expand_start_catch (tree);


extern void expand_end_catch (void);


extern void expand_end_all_catch (void);




extern void expand_eh_region_end_allowed (tree, tree);



extern void expand_eh_region_end_must_not_throw (tree);




extern void expand_eh_region_end_throw (tree);




extern void expand_eh_region_end_fixup (tree);



extern void begin_protect_partials (void);




extern void add_partial_entry (tree);



extern void end_protect_partials (void);



extern void for_each_eh_label (void (*) (rtx));


extern _Bool can_throw_internal (rtx);
extern _Bool can_throw_external (rtx);


extern _Bool nothrow_function_p (void);



extern void finish_eh_generation (void);

extern void init_eh (void);
extern void init_eh_for_function (void);

extern rtx reachable_handlers (rtx);
extern void maybe_remove_eh_handler (rtx);

extern void convert_from_eh_region_ranges (void);
extern void convert_to_eh_region_ranges (void);
extern void find_exception_handler_labels (void);
extern _Bool current_function_has_exception_handlers (void);
extern void output_function_exception_table (void);

extern void expand_builtin_unwind_init (void);
extern rtx expand_builtin_eh_return_data_regno (tree);
extern rtx expand_builtin_extract_return_addr (tree);
extern void expand_builtin_init_dwarf_reg_sizes (tree);
extern rtx expand_builtin_frob_return_addr (tree);
extern rtx expand_builtin_dwarf_fp_regnum (void);
extern void expand_builtin_eh_return (tree, tree);
extern void expand_eh_return (void);
extern rtx get_exception_pointer (struct function *);
extern int duplicate_eh_regions (struct function *, struct inline_remap *);


extern void sjlj_emit_function_exit_after (rtx);
# 147 "../../gcc/except.h"
extern tree (*lang_protect_cleanup_actions) (void);


extern int (*lang_eh_type_covers) (tree a, tree b);


extern tree (*lang_eh_runtime_type) (tree);
# 44 "../../gcc/predict.c" 2
# 1 "../../gcc/toplev.h" 1
# 29 "../../gcc/toplev.h"
extern int toplev_main (int, char **);
extern int read_integral_parameter (const char *, const char *, const int);

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


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



                                              __attribute__ ((__noreturn__));
# 58 "../../gcc/toplev.h"
extern void warning (const char *, ...);
extern void error (const char *, ...);
extern void fatal_error (const char *, ...)
                                               __attribute__ ((__noreturn__));
extern void pedwarn (const char *, ...);
extern void pedwarn_with_file_and_line (const char *, int, const char *, ...);

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

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

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

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

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

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

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

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


extern void announce_function (union tree_node *);

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

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

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


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

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




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


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

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


extern struct ht *ident_hash;




extern void set_fast_math_flags (void);
extern void set_no_fast_math_flags (void);
# 130 "../../gcc/toplev.h"
extern int exact_log2_wide (unsigned long);
extern int floor_log2_wide (unsigned long);
# 45 "../../gcc/predict.c" 2
# 1 "../../gcc/recog.h" 1
# 28 "../../gcc/recog.h"
enum op_type {
  OP_IN,
  OP_OUT,
  OP_INOUT
};

struct operand_alternative
{


  const char *constraint;


  enum reg_class class;



  unsigned int reject;


  int matches;



  int matched;


  unsigned int earlyclobber:1;

  unsigned int memory_ok:1;

  unsigned int offmem_ok:1;

  unsigned int nonoffmem_ok:1;

  unsigned int decmem_ok:1;

  unsigned int incmem_ok:1;

  unsigned int is_address:1;


  unsigned int anything_ok:1;
};


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



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

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

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

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

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

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



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


extern int volatile_ok;



extern int which_alternative;



struct recog_data
{







  rtx operand[30];


  rtx *operand_loc[30];


  const char *constraints[30];


  enum machine_mode operand_mode[30];


  enum op_type operand_type[30];



  rtx *dup_loc[4];



  char dup_num[4];
# 191 "../../gcc/recog.h"
  char n_operands;


  char n_dups;


  char n_alternatives;


  rtx insn;
};

extern struct recog_data recog_data;



extern struct operand_alternative recog_op_alt[30][30];




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

struct insn_operand_data
{
  const insn_operand_predicate_fn predicate;

  const char *const constraint;

  const enum machine_mode mode : 16;

  const char strict_low;

  const char eliminable;
};
# 236 "../../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[];
# 46 "../../gcc/predict.c" 2
# 1 "../../gcc/expr.h" 1
# 52 "../../gcc/expr.h"
enum expand_modifier {EXPAND_NORMAL, EXPAND_SUM, EXPAND_CONST_ADDRESS,
                        EXPAND_INITIALIZER, EXPAND_WRITE};
# 69 "../../gcc/expr.h"
struct args_size
{
  long constant;
  tree var;
};
# 119 "../../gcc/expr.h"
enum direction {none, upward, downward};
# 256 "../../gcc/expr.h"
enum optab_methods
{
  OPTAB_DIRECT,
  OPTAB_LIB,
  OPTAB_WIDEN,
  OPTAB_LIB_WIDEN,
  OPTAB_MUST_WIDEN
};




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

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




extern int have_insn_for (enum rtx_code, enum machine_mode);


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





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



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



extern void emit_indirect_jump (rtx);



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




int can_conditionally_move_p (enum machine_mode mode);
# 316 "../../gcc/expr.h"
extern rtx negate_rtx (enum machine_mode, rtx);


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


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



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






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



extern rtx get_condition (rtx, rtx *);


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


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

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

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





extern void init_expr_once (void);


extern void init_expr (void);



extern void init_stor_layout_once (void);


extern void finish_expr_for_function (void);



extern rtx protect_from_queue (rtx, int);


extern void emit_queue (void);


extern int queued_subexp_p (rtx);



extern void convert_move (rtx, rtx, int);


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


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



extern rtx emit_block_move (rtx, rtx, rtx);



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



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



extern void emit_group_load (rtx, rtx, int);



extern void emit_group_store (rtx, rtx, int);



extern rtx copy_blkmode_from_reg (rtx,rtx,tree);



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, rtx (*) (void *, long, enum machine_mode), void *, unsigned int);
# 452 "../../gcc/expr.h"
extern void store_by_pieces (rtx, unsigned long, rtx (*) (void *, 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);



extern void emit_push_insn (rtx, enum machine_mode, tree, rtx, unsigned int, int, rtx, int, rtx, rtx, int, rtx);




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





extern rtx store_expr (tree, rtx, int);





extern rtx force_operand (rtx, rtx);
# 495 "../../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);




extern tree string_constant (tree, tree *);


extern void jumpifnot (tree, rtx);


extern void jumpif (tree, rtx);



extern void do_jump (tree, rtx, rtx);



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





extern rtx expr_size (tree);

extern rtx lookup_static_chain (tree);



extern rtx fix_lexical_addr (rtx, tree);


extern rtx trampoline_address (tree);



extern rtx hard_function_value (tree, tree, int);

extern rtx prepare_call_address (rtx, tree, rtx *, int, int);

extern rtx expand_call (tree, rtx, int);

extern rtx expand_shift (enum tree_code, enum machine_mode, rtx, tree, rtx, int);

extern rtx expand_divmod (int, enum tree_code, enum machine_mode, rtx, rtx, rtx, int);

extern void locate_and_pad_parm (enum machine_mode, tree, int, tree, struct args_size *, struct args_size *, struct args_size *, struct args_size *);




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


extern rtx label_rtx (tree);



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


extern void set_mem_align (rtx, unsigned int);


extern void set_mem_expr (rtx, tree);


extern void set_mem_offset (rtx, rtx);





extern rtx change_address (rtx, enum machine_mode, rtx);
# 636 "../../gcc/expr.h"
extern rtx adjust_address_1 (rtx, enum machine_mode, long, int, int);

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





extern rtx offset_address (rtx, rtx, 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);



extern rtx validize_mem (rtx);





extern void maybe_set_unchanging (rtx, tree);




extern void set_mem_attributes (rtx, tree, int);



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



extern enum machine_mode promote_mode (tree, enum machine_mode, int *, int);




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, 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, unsigned long, enum machine_mode, rtx, long);


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



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

extern rtx assemble_static_space (int);




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



extern int safe_from_p (rtx, tree, int);



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


extern rtx init_one_libfunc (const char *);

extern void do_jump_by_parts_equality_rtx (rtx, rtx, rtx);
extern void do_jump_by_parts_greater_rtx (enum machine_mode, int, rtx, rtx, rtx, rtx);




extern void mark_seen_cases (tree, unsigned char *, long, int);
# 47 "../../gcc/predict.c" 2
# 1 "../../gcc/predict.h" 1
# 23 "../../gcc/predict.h"
enum br_predictor
{
# 1 "../../gcc/predict.def" 1
# 40 "../../gcc/predict.def"
PRED_COMBINED,


PRED_DS_THEORY,



PRED_FIRST_MATCH,


PRED_NO_PREDICTION,


PRED_UNCONDITIONAL,





PRED_LOOP_ITERATIONS,



PRED_BUILTIN_EXPECT,



PRED_NORETURN,



PRED_LOOP_BRANCH,



PRED_LOOP_EXIT,




PRED_LOOP_CONDITION,


PRED_LOOP_PRECONDITIONING,


PRED_LOOP_HEADER,


PRED_POINTER,


PRED_OPCODE_POSITIVE,
PRED_OPCODE_NONEQUAL,
PRED_FPOPCODE,


PRED_CALL,


PRED_ERROR_RETURN,
# 26 "../../gcc/predict.h" 2


  END_PREDICTORS
};

enum prediction
{
   NOT_TAKEN,
   TAKEN
};

extern void predict_insn_def (rtx, enum br_predictor, enum prediction);

extern void predict_insn (rtx, enum br_predictor, int);



extern void predict_edge (edge, enum br_predictor, int);
extern void predict_edge_def (edge, enum br_predictor, enum prediction);
# 48 "../../gcc/predict.c" 2
# 58 "../../gcc/predict.c"
static void combine_predictions_for_insn (rtx, basic_block);
static void dump_prediction (enum br_predictor, int, basic_block, int);

static void estimate_loops_at_level (struct loop *loop);
static void propagate_freq (basic_block);
static void estimate_bb_frequencies (struct loops *);
static void counts_to_freqs (void);




struct predictor_info
{
  const char *const name;
  const int hitrate;

  const int flags;
};
# 86 "../../gcc/predict.c"
static const struct predictor_info predictor_info[]= {
# 1 "../../gcc/predict.def" 1
# 40 "../../gcc/predict.def"
{"combined", (10000), 0},


{"DS theory", (10000), 0},



{"first match", (10000), 0},


{"no prediction", (10000), 0},


{"unconditional jump", (10000), 1},





{"loop iterations", (10000), 1},



{"__builtin_expect", (10000 - (10000 / 10 - 1)), 1},



{"noreturn call", ((int) ((99) * 10000 + 50) / 100), 1},



{"loop branch", ((int) ((89) * 10000 + 50) / 100), 1},



{"loop exit", ((int) ((90) * 10000 + 50) / 100), 1},




{"loop condition", (10000 - (10000 / 10 - 1)), 0},


{"loop preconditioning", (10000 - (10000 / 10 - 1)), 0},


{"loop header", ((int) ((64) * 10000 + 50) / 100), 0},


{"pointer", ((int) ((81) * 10000 + 50) / 100), 0},


{"opcode values positive", ((int) ((79) * 10000 + 50) / 100), 0},
{"opcode values nonequal", ((int) ((71) * 10000 + 50) / 100), 0},
{"fp_opcode", ((int) ((90) * 10000 + 50) / 100), 0},


{"call", ((int) ((70) * 10000 + 50) / 100), 0},


{"error return", ((int) ((52) * 10000 + 50) / 100), 0},
# 88 "../../gcc/predict.c" 2


  {((void *)0), 0, 0}
};


void
predict_insn (insn, predictor, probability)
     rtx insn;
     int probability;
     enum br_predictor predictor;
{
  if (!any_condjump_p (insn))
    fancy_abort ("../../gcc/predict.c", 101, __FUNCTION__);

  (((insn)->fld[6]).rtx)
    = gen_rtx_fmt_ee (EXPR_LIST, (REG_BR_PRED), (gen_rtx_fmt_ee (CONCAT, (VOIDmode), (gen_rtx_CONST_INT (VOIDmode, (long) ((int) predictor))), (gen_rtx_CONST_INT (VOIDmode, (long) ((int) probability))))), ((((insn)->fld[6]).rtx)));




}



void
predict_insn_def (insn, predictor, taken)
     rtx insn;
     enum br_predictor predictor;
     enum prediction taken;
{
   int probability = predictor_info[(int) predictor].hitrate;

   if (taken != TAKEN)
     probability = 10000 - probability;

   predict_insn (insn, predictor, probability);
}



void
predict_edge (e, predictor, probability)
     edge e;
     int probability;
     enum br_predictor predictor;
{
  rtx last_insn;
  last_insn = e->src->end;



  if (!any_condjump_p (last_insn))
    return;


  if (e->flags & 1)
    probability = 10000 - probability;

  predict_insn (last_insn, predictor, probability);
}



void
predict_edge_def (e, predictor, taken)
     edge e;
     enum br_predictor predictor;
     enum prediction taken;
{
   int probability = predictor_info[(int) predictor].hitrate;

   if (taken != TAKEN)
     probability = 10000 - probability;

   predict_edge (e, predictor, probability);
}




void
invert_br_probabilities (insn)
     rtx insn;
{
  rtx note;

  for (note = (((insn)->fld[6]).rtx); note; note = (((note)->fld[1]).rtx))
    if (((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_BR_PROB)
      (((note)->fld[0]).rtx) = gen_rtx_CONST_INT (VOIDmode, (long) (10000 - ((((((note)->fld[0]).rtx))->fld[0]).rtwint)));
    else if (((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_BR_PRED)
      ((((((note)->fld[0]).rtx))->fld[1]).rtx)
        = gen_rtx_CONST_INT (VOIDmode, (long) (10000 - (((((((((note)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint)));
}



static void
dump_prediction (predictor, probability, bb, used)
     enum br_predictor predictor;
     int probability;
     basic_block bb;
     int used;
{
  edge e = bb->succ;

  if (!rtl_dump_file)
    return;

  while (e->flags & 1)
    e = e->succ_next;

  fprintf (rtl_dump_file, "  %s heuristics%s: %.1f%%",
           predictor_info[predictor].name,
           used ? "" : " (ignored)", probability * 100.0 / 10000);

  if (bb->count)
    {
      fprintf (rtl_dump_file, "  exec ");
      fprintf (rtl_dump_file, "%ld", bb->count);
      fprintf (rtl_dump_file, " hit ");
      fprintf (rtl_dump_file, "%ld", e->count);
      fprintf (rtl_dump_file, " (%.1f%%)", e->count * 100.0 / bb->count);
    }

  fprintf (rtl_dump_file, "\n");
}




static void
combine_predictions_for_insn (insn, bb)
     rtx insn;
     basic_block bb;
{
  rtx prob_note = find_reg_note (insn, REG_BR_PROB, 0);
  rtx *pnote = &(((insn)->fld[6]).rtx);
  rtx note;
  int best_probability = (10000 / 2);
  int best_predictor = END_PREDICTORS;
  int combined_probability = 10000 / 2;
  int d;
  _Bool first_match = 0;
  _Bool found = 0;

  if (rtl_dump_file)
    fprintf (rtl_dump_file, "Predictions for insn %i bb %i\n", (((insn)->fld[0]).rtint),
             bb->index);




  for (note = (((insn)->fld[6]).rtx); note; note = (((note)->fld[1]).rtx))
    if (((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_BR_PRED)
      {
        int predictor = (((((((((note)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtwint);
        int probability = (((((((((note)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint);

        found = 1;
        if (best_predictor > predictor)
          best_probability = probability, best_predictor = predictor;

        d = (combined_probability * probability
             + (10000 - combined_probability)
             * (10000 - probability));


        if (d == 0)

          combined_probability = 10000 / 2;
        else
          combined_probability = (((double) combined_probability) * probability
                                  * 10000 / d + 0.5);
      }





  if (predictor_info [best_predictor].flags & 1)
    first_match = 1;

  if (!found)
    dump_prediction (PRED_NO_PREDICTION, combined_probability, bb, 1);
  else
    {
      dump_prediction (PRED_DS_THEORY, combined_probability, bb, !first_match);
      dump_prediction (PRED_FIRST_MATCH, best_probability, bb, first_match);
    }

  if (first_match)
    combined_probability = best_probability;
  dump_prediction (PRED_COMBINED, combined_probability, bb, 1);

  while (*pnote)
    {
      if (((enum reg_note) ((enum machine_mode) (*pnote)->mode)) == REG_BR_PRED)
        {
          int predictor = (((((((((*pnote)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtwint);
          int probability = (((((((((*pnote)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint);

          dump_prediction (predictor, probability, bb,
                           !first_match || best_predictor == predictor);
          *pnote = (((*pnote)->fld[1]).rtx);
        }
      else
        pnote = &(((*pnote)->fld[1]).rtx);
    }

  if (!prob_note)
    {
      (((insn)->fld[6]).rtx)
        = gen_rtx_fmt_ee (EXPR_LIST, (REG_BR_PROB), (gen_rtx_CONST_INT (VOIDmode, (long) (combined_probability))), ((((insn)->fld[6]).rtx)));




      if (bb->succ->succ_next)
        {
          ((bb)->succ->flags & 1 ? (bb)->succ->succ_next : (bb)->succ)->probability = combined_probability;
          ((bb)->succ->flags & 1 ? (bb)->succ : (bb)->succ->succ_next)->probability
            = 10000 - combined_probability;
        }
    }
}







void
estimate_probability (loops_info)
     struct loops *loops_info;
{
  sbitmap *dominators, *post_dominators;
  int i;
  int found_noreturn = 0;

  dominators = sbitmap_vector_alloc (n_basic_blocks, n_basic_blocks);
  post_dominators = sbitmap_vector_alloc (n_basic_blocks, n_basic_blocks);
  calculate_dominance_info (((void *)0), dominators, CDI_DOMINATORS);
  calculate_dominance_info (((void *)0), post_dominators, CDI_POST_DOMINATORS);



  for (i = 0; i < loops_info->num; i++)
    {
      int j;
      int exits;
      struct loop *loop = &loops_info->array[i];

      flow_loop_scan (loops_info, loop, 8);
      exits = loop->num_exits;

      for (j = loop->first->index; j <= loop->last->index; ++j)
        if (((loop->nodes)->elms [(j) / ((unsigned) (8 * 8))] >> (j) % ((unsigned) (8 * 8)) & 1))
          {
            int header_found = 0;
            edge e;



            for (e = (((basic_block_info)->data.bb[(j)]))->succ; e; e = e->succ_next)
              if (e->dest == loop->header
                  && e->src == loop->latch)
                {
                  header_found = 1;
                  predict_edge_def (e, PRED_LOOP_BRANCH, TAKEN);
                }



            if (!header_found)
              for (e = (((basic_block_info)->data.bb[(j)]))->succ; e; e = e->succ_next)
                if (e->dest->index < 0
                    || !((loop->nodes)->elms [(e->dest->index) / ((unsigned) (8 * 8))] >> (e->dest->index) % ((unsigned) (8 * 8)) & 1))
                  predict_edge
                    (e, PRED_LOOP_EXIT,
                     (10000
                      - predictor_info [(int) PRED_LOOP_EXIT].hitrate)
                     / exits);
          }
    }


  for (i = 0; i < n_basic_blocks; i++)
    {
      basic_block bb = (((basic_block_info)->data.bb[(i)]));
      rtx last_insn = bb->end;
      rtx cond, earliest;
      edge e;




      if (bb->succ == ((void *)0) && !found_noreturn)
        {
          int y;





          found_noreturn = 1;
          for (y = 0; y < n_basic_blocks; y++)
            if (!((post_dominators[y])->elms [(i) / ((unsigned) (8 * 8))] >> (i) % ((unsigned) (8 * 8)) & 1))
              for (e = (((basic_block_info)->data.bb[(y)]))->succ; e; e = e->succ_next)
                if (e->dest->index >= 0
                    && ((post_dominators[e->dest->index])->elms [(i) / ((unsigned) (8 * 8))] >> (i) % ((unsigned) (8 * 8)) & 1))
                  predict_edge_def (e, PRED_NORETURN, NOT_TAKEN);
        }

      if (((enum rtx_code) (last_insn)->code) != JUMP_INSN || ! any_condjump_p (last_insn))
        continue;

      for (e = bb->succ; e; e = e->succ_next)
        {


          if (e->dest == (&entry_exit_blocks[1])
              || (e->dest->succ && !e->dest->succ->succ_next
                  && e->dest->succ->dest == (&entry_exit_blocks[1])))
            predict_edge_def (e, PRED_ERROR_RETURN, NOT_TAKEN);



          if (e->dest != (&entry_exit_blocks[1]) && e->dest != bb
              && ((dominators[e->dest->index])->elms [(e->src->index) / ((unsigned) (8 * 8))] >> (e->src->index) % ((unsigned) (8 * 8)) & 1)
              && !((post_dominators[e->src->index])->elms [(e->dest->index) / ((unsigned) (8 * 8))] >> (e->dest->index) % ((unsigned) (8 * 8)) & 1))
            {
              rtx insn;





              for (insn = e->dest->head; insn != (((e->dest->end)->fld[2]).rtx);
                   insn = (((insn)->fld[2]).rtx))
                if (((enum rtx_code) (insn)->code) == CALL_INSN


                    && ! ((insn)->unchanging))
                  {
                    predict_edge_def (e, PRED_CALL, NOT_TAKEN);
                    break;
                  }
            }
        }

      cond = get_condition (last_insn, &earliest);
      if (! cond)
        continue;




      if ((rtx_class[(int) (((enum rtx_code) (cond)->code))]) == '<'
          && (((((enum rtx_code) ((((cond)->fld[0]).rtx))->code) == REG) && (((((cond)->fld[0]).rtx))->frame_related))
              || ((((enum rtx_code) ((((cond)->fld[1]).rtx))->code) == REG) && (((((cond)->fld[1]).rtx))->frame_related))))
        {
          if (((enum rtx_code) (cond)->code) == EQ)
            predict_insn_def (last_insn, PRED_POINTER, NOT_TAKEN);
          else if (((enum rtx_code) (cond)->code) == NE)
            predict_insn_def (last_insn, PRED_POINTER, TAKEN);
        }
      else





        switch (((enum rtx_code) (cond)->code))
          {
          case CONST_INT:

            predict_insn_def (last_insn, PRED_UNCONDITIONAL,
                              cond == (const_int_rtx[64]) ? NOT_TAKEN : TAKEN);
            break;

          case EQ:
          case UNEQ:



            if (((mode_class[(int) (((enum machine_mode) ((((cond)->fld[0]).rtx))->mode))]) == MODE_FLOAT || (mode_class[(int) (((enum machine_mode) ((((cond)->fld[0]).rtx))->mode))]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (((enum machine_mode) ((((cond)->fld[0]).rtx))->mode))]) == MODE_VECTOR_FLOAT))
              ;


            else if ((((cond)->fld[1]).rtx) == (const_int_rtx[64])
                     || (((cond)->fld[0]).rtx) == (const_int_rtx[64]))
              ;
            else
              predict_insn_def (last_insn, PRED_OPCODE_NONEQUAL, NOT_TAKEN);
            break;

          case NE:
          case LTGT:



            if (((mode_class[(int) (((enum machine_mode) ((((cond)->fld[0]).rtx))->mode))]) == MODE_FLOAT || (mode_class[(int) (((enum machine_mode) ((((cond)->fld[0]).rtx))->mode))]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (((enum machine_mode) ((((cond)->fld[0]).rtx))->mode))]) == MODE_VECTOR_FLOAT))
              ;


            else if ((((cond)->fld[1]).rtx) == (const_int_rtx[64])
                     || (((cond)->fld[0]).rtx) == (const_int_rtx[64]))
              ;
            else
              predict_insn_def (last_insn, PRED_OPCODE_NONEQUAL, TAKEN);
            break;

          case ORDERED:
            predict_insn_def (last_insn, PRED_FPOPCODE, TAKEN);
            break;

          case UNORDERED:
            predict_insn_def (last_insn, PRED_FPOPCODE, NOT_TAKEN);
            break;

          case LE:
          case LT:
            if ((((cond)->fld[1]).rtx) == (const_int_rtx[64]) || (((cond)->fld[1]).rtx) == (const_int_rtx[64 +1])
                || (((cond)->fld[1]).rtx) == (const_int_rtx[64 -1]))
              predict_insn_def (last_insn, PRED_OPCODE_POSITIVE, NOT_TAKEN);
            break;

          case GE:
          case GT:
            if ((((cond)->fld[1]).rtx) == (const_int_rtx[64]) || (((cond)->fld[1]).rtx) == (const_int_rtx[64 +1])
                || (((cond)->fld[1]).rtx) == (const_int_rtx[64 -1]))
              predict_insn_def (last_insn, PRED_OPCODE_POSITIVE, TAKEN);
            break;

          default:
            break;
          }
    }


  for (i = 0; i < n_basic_blocks; i++)
    if (((enum rtx_code) (((((basic_block_info)->data.bb[(i)]))->end))->code) == JUMP_INSN
        && any_condjump_p (((((basic_block_info)->data.bb[(i)]))->end)))
      combine_predictions_for_insn (((((basic_block_info)->data.bb[(i)]))->end), (((basic_block_info)->data.bb[(i)])));

  free(post_dominators);
  free(dominators);

  estimate_bb_frequencies (loops_info);
}





void
expected_value_to_br_prob ()
{
  rtx insn, cond, ev = (rtx) 0, ev_reg = (rtx) 0;

  for (insn = get_insns (); insn ; insn = (((insn)->fld[2]).rtx))
    {
      switch (((enum rtx_code) (insn)->code))
        {
        case NOTE:

          if ((((insn)->fld[4]).rtint) == NOTE_INSN_EXPECTED_VALUE)
            {
              ev = (((insn)->fld[3]).rtx);
              ev_reg = (((ev)->fld[0]).rtx);
              delete_insn (insn);
            }
          continue;

        case CODE_LABEL:

          ev = (rtx) 0;
          continue;

        case JUMP_INSN:


          if (((enum rtx_code) (insn)->code) != JUMP_INSN || ev == (rtx) 0
              || ! any_condjump_p (insn))
            continue;
          break;

        default:

          if (ev && reg_set_p (ev_reg, insn))
            ev = (rtx) 0;
          continue;
        }
# 593 "../../gcc/predict.c"
      cond = ((((((pc_set (insn))->fld[1]).rtx))->fld[0]).rtx);
      cond = canonicalize_condition (insn, cond, 0, ((void *)0), ev_reg);
      if (! cond || (((cond)->fld[0]).rtx) != ev_reg
          || ((enum rtx_code) ((((cond)->fld[1]).rtx))->code) != CONST_INT)
        continue;




      cond = gen_rtx_fmt_ee (((enum rtx_code) (cond)->code), VOIDmode,
                             (((ev)->fld[1]).rtx), (((cond)->fld[1]).rtx));
      cond = simplify_rtx (cond);


      if (cond != const_true_rtx && cond != (const_int_rtx[64]))
        fancy_abort ("../../gcc/predict.c", 608, __FUNCTION__);
      predict_insn_def (insn, PRED_BUILTIN_EXPECT,
                        cond == const_true_rtx ? TAKEN : NOT_TAKEN);
    }
}




typedef struct block_info_def
{

  volatile double frequency;


  basic_block next;


  int tovisit:1;


  int npredecessors;
} *block_info;


typedef struct edge_info_def
{






  volatile double back_edge_prob;

  int back_edge:1;
} *edge_info;







static void
propagate_freq (head)
     basic_block head;
{
  basic_block bb = head;
  basic_block last = bb;
  edge e;
  basic_block nextbb;
  int n;



  for (n = 0; n < n_basic_blocks; n++)
    {
      basic_block bb = (((basic_block_info)->data.bb[(n)]));
      if (((block_info) (bb)->aux)->tovisit)
        {
          int count = 0;

          for (e = bb->pred; e; e = e->pred_next)
            if (((block_info) (e->src)->aux)->tovisit && !(e->flags & 32))
              count++;
            else if (((block_info) (e->src)->aux)->tovisit
                     && rtl_dump_file && !((edge_info) (e)->aux)->back_edge)
              fprintf (rtl_dump_file,
                       "Irreducible region hit, ignoring edge to %i->%i\n",
                       e->src->index, bb->index);
          ((block_info) (bb)->aux)->npredecessors = count;
        }
    }

  ((block_info) (head)->aux)->frequency = 1;
  for (; bb; bb = nextbb)
    {
      double cyclic_probability = 0, frequency = 0;

      nextbb = ((block_info) (bb)->aux)->next;
      ((block_info) (bb)->aux)->next = ((void *)0);


      if (bb != head)
        {






          for (e = bb->pred; e; e = e->pred_next)
            if (((edge_info) (e)->aux)->back_edge)
              cyclic_probability += ((edge_info) (e)->aux)->back_edge_prob;
            else if (!(e->flags & 32))
              frequency += (e->probability
                            * ((block_info) (e->src)->aux)->frequency /
                            10000);

          if (cyclic_probability > 1.0 - 1.0 / 10000)
            cyclic_probability = 1.0 - 1.0 / 10000;

          ((block_info) (bb)->aux)->frequency = frequency / (1 - cyclic_probability);
        }

      ((block_info) (bb)->aux)->tovisit = 0;


      for (e = bb->succ; e; e = e->succ_next)
        if (e->dest == head)
          ((edge_info) (e)->aux)->back_edge_prob
            = ((e->probability * ((block_info) (bb)->aux)->frequency)
               / 10000);


      for (e = bb->succ; e; e = e->succ_next)
        if (!(e->flags & 32)
            && ((block_info) (e->dest)->aux)->npredecessors)
          {
            ((block_info) (e->dest)->aux)->npredecessors--;
            if (!((block_info) (e->dest)->aux)->npredecessors)
              {
                if (!nextbb)
                  nextbb = e->dest;
                else
                  ((block_info) (last)->aux)->next = e->dest;

                last = e->dest;
              }
           }
    }
}



static void
estimate_loops_at_level (first_loop)
     struct loop *first_loop;
{
  struct loop *l, *loop = first_loop;

  for (loop = first_loop; loop; loop = loop->next)
    {
      int n;
      edge e;

      estimate_loops_at_level (loop->inner);


      for (e = loop->latch->succ; e->dest != loop->header; e = e->succ_next)
        ;

      ((edge_info) (e)->aux)->back_edge = 1;



      if (loop->shared)
        {
          for (l = loop->next; l; l = l->next)
            if (l->header == loop->header)
              break;

          if (l)
            continue;
        }


      for (l = loop->shared ? first_loop : loop; l != loop->next; l = l->next)
        if (loop->header == l->header)
          do { unsigned int word_num_; unsigned int bit_num_ = (0) % (unsigned int) ((unsigned) (8 * 8)); unsigned int size_ = (l->nodes)->size; unsigned long *ptr_ = (l->nodes)->elms; for (word_num_ = (0) / (unsigned int) ((unsigned) (8 * 8)); word_num_ < size_; word_num_++, bit_num_ = 0) { unsigned long word_ = ptr_[word_num_]; if (word_ != 0) for (; bit_num_ < ((unsigned) (8 * 8)); bit_num_++) { unsigned long _mask = (unsigned long) 1 << bit_num_; if ((word_ & _mask) != 0) { word_ &= ~ _mask; (n) = word_num_ * ((unsigned) (8 * 8)) + bit_num_; ((block_info) ((((basic_block_info)->data.bb[(n)])))->aux)->tovisit = 1; if (word_ == 0) break; } } } } while (0);



      propagate_freq (loop->header);
    }
}



static void
counts_to_freqs ()
{
  long count_max = 1;
  int i;

  for (i = 0; i < n_basic_blocks; i++)
    count_max = (((((basic_block_info)->data.bb[(i)]))->count) > (count_max) ? ((((basic_block_info)->data.bb[(i)]))->count) : (count_max));

  for (i = -2; i < n_basic_blocks; i++)
    {
      basic_block bb;

      if (i == -2)
        bb = (&entry_exit_blocks[0]);
      else if (i == -1)
        bb = (&entry_exit_blocks[1]);
      else
        bb = (((basic_block_info)->data.bb[(i)]));

      bb->frequency = (bb->count * 10000 + count_max / 2) / count_max;
    }
}






_Bool
expensive_function_p (threshold)
        int threshold;
{
  unsigned int sum = 0;
  int i;
  unsigned int limit;



  if (threshold > 10000)
    fancy_abort ("../../gcc/predict.c", 828, __FUNCTION__);




  if ((&entry_exit_blocks[0])->frequency == 0)
    return 1;


  limit = (&entry_exit_blocks[0])->frequency * threshold;
  for (i = 0; i < n_basic_blocks; i++)
    {
      basic_block bb = (((basic_block_info)->data.bb[(i)]));
      rtx insn;

      for (insn = bb->head; insn != (((bb->end)->fld[2]).rtx);
           insn = (((insn)->fld[2]).rtx))
        if (active_insn_p (insn))
          {
            sum += bb->frequency;
            if (sum > limit)
              return 1;
        }
    }

  return 0;
}



static void
estimate_bb_frequencies (loops)
     struct loops *loops;
{
  int i;
  double freq_max = 0;

  mark_dfs_back_edges ();
  if (flag_branch_probabilities)
    {
      counts_to_freqs ();
      return;
    }



  for (i = 0; i < n_basic_blocks; i++)
    {
      rtx last_insn = ((((basic_block_info)->data.bb[(i)]))->end);
      int probability;
      edge fallthru, branch;

      if (((enum rtx_code) (last_insn)->code) != JUMP_INSN || !any_condjump_p (last_insn)

          || (((basic_block_info)->data.bb[(i)]))->succ->succ_next == ((void *)0))
        {



          int nedges = 0;
          edge e;

          for (e = (((basic_block_info)->data.bb[(i)]))->succ; e; e = e->succ_next)
            {
              nedges++;
              if (e->probability != 0)
                break;
            }
          if (!e)
            for (e = (((basic_block_info)->data.bb[(i)]))->succ; e; e = e->succ_next)
              e->probability = (10000 + nedges / 2) / nedges;
        }
      else
        {
          probability = ((((((find_reg_note (last_insn, REG_BR_PROB, 0))->fld[0]).rtx))->fld[0]).rtwint);

          fallthru = (((basic_block_info)->data.bb[(i)]))->succ;
          if (!fallthru->flags & 1)
            fallthru = fallthru->succ_next;
          branch = (((basic_block_info)->data.bb[(i)]))->succ;
          if (branch->flags & 1)
            branch = branch->succ_next;

          branch->probability = probability;
          fallthru->probability = 10000 - probability;
        }
    }

  (&entry_exit_blocks[0])->succ->probability = 10000;


  alloc_aux_for_blocks (sizeof (struct block_info_def));
  alloc_aux_for_edges (sizeof (struct edge_info_def));
  for (i = -2; i < n_basic_blocks; i++)
    {
      edge e;
      basic_block bb;

      if (i == -2)
        bb = (&entry_exit_blocks[0]);
      else if (i == -1)
        bb = (&entry_exit_blocks[1]);
      else
        bb = (((basic_block_info)->data.bb[(i)]));

      ((block_info) (bb)->aux)->tovisit = 0;
      for (e = bb->succ; e; e = e->succ_next)
        ((edge_info) (e)->aux)->back_edge_prob = ((double) e->probability
                                         / 10000);
    }



  estimate_loops_at_level (loops->tree_root);


  for (i = 0; i < n_basic_blocks; i++)
    ((block_info) ((((basic_block_info)->data.bb[(i)])))->aux)->tovisit = 1;

  ((block_info) ((&entry_exit_blocks[0]))->aux)->tovisit = 1;
  ((block_info) ((&entry_exit_blocks[1]))->aux)->tovisit = 1;
  propagate_freq ((&entry_exit_blocks[0]));

  for (i = 0; i < n_basic_blocks; i++)
    if (((block_info) ((((basic_block_info)->data.bb[(i)])))->aux)->frequency > freq_max)
      freq_max = ((block_info) ((((basic_block_info)->data.bb[(i)])))->aux)->frequency;

  for (i = -2; i < n_basic_blocks; i++)
    {
      basic_block bb;
      volatile double tmp;

      if (i == -2)
        bb = (&entry_exit_blocks[0]);
      else if (i == -1)
        bb = (&entry_exit_blocks[1]);
      else
        bb = (((basic_block_info)->data.bb[(i)]));


      tmp = ((block_info) (bb)->aux)->frequency * 10000;
      tmp /= freq_max;
      tmp += 0.5;
      bb->frequency = tmp;
    }

  free_aux_for_blocks ();
  free_aux_for_edges ();
}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]