>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 "" # 1 "" # 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 (); }