This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
bootstrap/8452: Internal Compiler Error building GCC 3.2 on Tru64 5.0A
- From: lwe at cfdrc dot com
- To: gcc-gnats at gcc dot gnu dot org
- Cc: mlu at cfdrc dot com
- Date: 4 Nov 2002 21:39:02 -0000
- Subject: bootstrap/8452: Internal Compiler Error building GCC 3.2 on Tru64 5.0A
- Reply-to: lwe at cfdrc dot com
>Number: 8452
>Category: bootstrap
>Synopsis: Internal Compiler Error building GCC 3.2 on Tru64 5.0A
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon Nov 04 13:46:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator: lwe@cfdrc.com
>Release: gcc 3.2
>Organization:
>Environment:
alphaev56-dec-osf5.0
>Description:
System type:
heaven.cfdrc.com> ../../config.guess
alphaev56-dec-osf5.0
GCC Version:
heaven.cfdrc.com> stage2/xgcc -v
Using built-in specs.
Configured with: ../configure --enable-threads=posix --enable-shared
Thread model: posix
gcc version 3.2
Command line that caused the error:
heaven.cfdrc.com> stage2/xgcc -Bstage2/ -B/usr/local/alphaev56-dec-osf5.0/bin/ -c -DIN_GCC -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -pedantic -Wno-long-long -save-temps -DHAVE_CONFIG_H -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/config -I../../gcc/../include ../../gcc/predict.c -o predict.o
../../gcc/predict.c: In function `propagate_freq':
../../gcc/predict.c:708: Internal compiler error in @œ
@, at F:537426288
Please submit a full bug report,
with preprocessed source if appropriate.
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/plain; name="predict.i"
Content-Disposition: inline; filename="predict.i"
# 1 "../../gcc/predict.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "../../gcc/predict.c"
# 31 "../../gcc/predict.c"
# 1 "config.h" 1
# 1 "auto-host.h" 1
# 3 "config.h" 2
struct rtx_def;
typedef struct rtx_def *rtx;
struct rtvec_def;
typedef struct rtvec_def *rtvec;
union tree_node;
typedef union tree_node *tree;
# 1 "../../include/ansidecl.h" 1
# 17 "config.h" 2
# 1 "../../gcc/config/alpha/alpha.h" 1
# 57 "../../gcc/config/alpha/alpha.h"
enum processor_type
{PROCESSOR_EV4,
PROCESSOR_EV5,
PROCESSOR_EV6};
extern enum processor_type alpha_cpu;
enum alpha_trap_precision
{
ALPHA_TP_PROG,
ALPHA_TP_FUNC,
ALPHA_TP_INSN
};
enum alpha_fp_rounding_mode
{
ALPHA_FPRM_NORM,
ALPHA_FPRM_MINF,
ALPHA_FPRM_CHOP,
ALPHA_FPRM_DYN
};
enum alpha_fp_trap_mode
{
ALPHA_FPTM_N,
ALPHA_FPTM_U,
ALPHA_FPTM_SU,
ALPHA_FPTM_SUI
};
extern int target_flags;
extern enum alpha_trap_precision alpha_tp;
extern enum alpha_fp_rounding_mode alpha_fprm;
extern enum alpha_fp_trap_mode alpha_fptm;
# 265 "../../gcc/config/alpha/alpha.h"
extern const char *alpha_cpu_string;
extern const char *alpha_tune_string;
extern const char *alpha_fprm_string;
extern const char *alpha_fptm_string;
extern const char *alpha_tp_string;
extern const char *alpha_mlat_string;
# 721 "../../gcc/config/alpha/alpha.h"
enum reg_class {
NO_REGS, R24_REG, R25_REG, R27_REG,
GENERAL_REGS, FLOAT_REGS, ALL_REGS,
LIM_REG_CLASSES
};
# 888 "../../gcc/config/alpha/alpha.h"
extern int alpha_memory_latency;
# 1192 "../../gcc/config/alpha/alpha.h"
struct alpha_compare
{
struct rtx_def *op0, *op1;
int fp_p;
};
extern struct alpha_compare alpha_compare;
# 2086 "../../gcc/config/alpha/alpha.h"
extern long alpha_arg_offset;
extern long alpha_auto_offset;
# 2149 "../../gcc/config/alpha/alpha.h"
extern int sdb_label_count;
# 18 "config.h" 2
# 1 "../../gcc/config/dbx.h" 1
# 19 "config.h" 2
# 1 "../../gcc/config/alpha/osf.h" 1
# 20 "config.h" 2
# 1 "../../gcc/config/alpha/osf5.h" 1
# 21 "config.h" 2
# 1 "../../gcc/defaults.h" 1
# 22 "config.h" 2
# 30 "config.h"
# 1 "insn-constants.h" 1
# 31 "config.h" 2
# 1 "insn-flags.h" 1
# 260 "insn-flags.h"
struct rtx_def;
extern struct rtx_def *gen_addvsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addvdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negvsi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negvdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subvsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subvdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulvsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_muldi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulvdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umuldi3_highpart (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_anddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendsidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_andnotdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_iordi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_one_cmpldi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_xordi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashldi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_lshrdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ashrdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqidi2x (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendhidi2x (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqisi2x (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendhisi2x (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqihi2x (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extxl_le (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extxl_be (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extqh_le (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extqh_be (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extlh_le (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extlh_be (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extwh_le (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extwh_be (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insbl_le (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insbl_be (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_inswl_le (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_inswl_be (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insll_le (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insll_be (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insql_le (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insql_be (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insxh (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mskxl_le (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mskxl_be (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mskxh (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_abssf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_adddf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncdfdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_truncsfdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatdisf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatdidf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_truncdfsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divdf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mulsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_muldf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subdf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sqrtdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sminqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_uminqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smaxqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umaxqi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sminhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_uminhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smaxhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umaxhi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_blockage (void);
extern struct rtx_def *gen_jump (struct rtx_def *);
extern struct rtx_def *gen_indirect_jump (struct rtx_def *);
extern struct rtx_def *gen_imb (void);
extern struct rtx_def *gen_trap (void);
extern struct rtx_def *gen_umk_laum (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umk_lalm (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umk_lal (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdi_er_high_g (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdi_er_maybe_g (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_force_movdi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_inqi_help (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_inhi_help (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_outqi_help (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_outhi_help (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_prologue_stack_probe_loop (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_prologue_mcount (void);
extern struct rtx_def *gen_init_fp (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_nt_lda (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_builtin_longjmp_internal (struct rtx_def *);
extern struct rtx_def *gen_arg_home (void);
extern struct rtx_def *gen_arg_home_umk (void);
extern struct rtx_def *gen_prefetch (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_trapb (void);
extern struct rtx_def *gen_nop (void);
extern struct rtx_def *gen_fnop (void);
extern struct rtx_def *gen_unop (void);
extern struct rtx_def *gen_realign (struct rtx_def *);
extern struct rtx_def *gen_extendsidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_adddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_udivsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_modsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umodsi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_udivdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_moddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_moddi3_dft (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_moddi3_umk (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umoddi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umoddi3_dft (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umoddi3_umk (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendqihi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendqisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendqidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendhisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_zero_extendhidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_ffsdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqihi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendqidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendhisi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendhidi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_extendqidi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_extendqidi_le (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_extendqidi_be (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_extendhidi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_extendhidi_le (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_extendhidi_be (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_abstf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_negtf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_addtf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_fix_trunctfdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatditf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatunsdisf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatunsdidf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_floatunsditf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendsfdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extendsftf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extenddftf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_trunctfdf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_trunctfsf2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_divtf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_multf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_subtf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absdi2 (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absdi2_same (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_absdi2_diff (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smaxdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_smindi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umaxdi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_umindi3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_maxdf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_mindf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_maxsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_minsf3 (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpdf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmptf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_cmpdi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_beq (struct rtx_def *);
extern struct rtx_def *gen_bne (struct rtx_def *);
extern struct rtx_def *gen_blt (struct rtx_def *);
extern struct rtx_def *gen_ble (struct rtx_def *);
extern struct rtx_def *gen_bgt (struct rtx_def *);
extern struct rtx_def *gen_bge (struct rtx_def *);
extern struct rtx_def *gen_bltu (struct rtx_def *);
extern struct rtx_def *gen_bleu (struct rtx_def *);
extern struct rtx_def *gen_bgtu (struct rtx_def *);
extern struct rtx_def *gen_bgeu (struct rtx_def *);
extern struct rtx_def *gen_bunordered (struct rtx_def *);
extern struct rtx_def *gen_bordered (struct rtx_def *);
extern struct rtx_def *gen_seq (struct rtx_def *);
extern struct rtx_def *gen_sne (struct rtx_def *);
extern struct rtx_def *gen_slt (struct rtx_def *);
extern struct rtx_def *gen_sle (struct rtx_def *);
extern struct rtx_def *gen_sgt (struct rtx_def *);
extern struct rtx_def *gen_sge (struct rtx_def *);
extern struct rtx_def *gen_sltu (struct rtx_def *);
extern struct rtx_def *gen_sleu (struct rtx_def *);
extern struct rtx_def *gen_sgtu (struct rtx_def *);
extern struct rtx_def *gen_sgeu (struct rtx_def *);
extern struct rtx_def *gen_sunordered (struct rtx_def *);
extern struct rtx_def *gen_sordered (struct rtx_def *);
extern struct rtx_def *gen_movsicc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdicc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movsfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdfcc (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sibcall (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_osf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_nt (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_umk (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_vms (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_value (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_sibcall_value (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_value_osf (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_value_nt (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_value_vms (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_call_value_umk (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_untyped_call (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_return (void);
extern struct rtx_def *gen_tablejump (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movsf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movtf (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movsi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movdi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_aligned_loadqi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_aligned_loadhi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_loadqi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_loadqi_le (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_loadqi_be (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_loadhi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_loadhi_le (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_loadhi_be (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_aligned_store (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_storeqi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_storeqi_le (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_storeqi_be (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_storehi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_storehi_le (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_unaligned_storehi_be (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movqi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movhi (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_inqi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_inhi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_outqi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_reload_outhi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extv (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_extzv (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_insv (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_movstrqi (struct rtx_def *, struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_clrstrqi (struct rtx_def *, struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_probe_stack (struct rtx_def *);
extern struct rtx_def *gen_allocate_stack (struct rtx_def *, struct rtx_def *);
extern struct rtx_def *gen_prologue (void);
extern struct rtx_def *gen_prologue_ldgp (void);
extern struct rtx_def *gen_epilogue (void);
extern struct rtx_def *gen_sibcall_epilogue (void);
extern struct rtx_def *gen_builtin_longjmp (struct rtx_def *);
extern struct rtx_def *gen_builtin_setjmp_receiver_er (struct rtx_def *);
extern struct rtx_def *gen_builtin_setjmp_receiver (struct rtx_def *);
extern struct rtx_def *gen_exception_receiver_er (void);
extern struct rtx_def *gen_exception_receiver (void);
extern struct rtx_def *gen_nonlocal_goto_receiver (void);
extern struct rtx_def *gen_umk_mismatch_args (struct rtx_def *);
# 32 "config.h" 2
# 32 "../../gcc/predict.c" 2
# 1 "../../gcc/system.h" 1
# 33 "../../gcc/system.h"
# 1 "include/stdarg.h" 1 3
# 43 "include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 110 "include/stdarg.h" 3
typedef __gnuc_va_list va_list;
# 34 "../../gcc/system.h" 2
# 47 "../../gcc/system.h"
# 1 "include/stddef.h" 1 3
# 147 "include/stddef.h" 3
typedef long int ptrdiff_t;
# 201 "include/stddef.h" 3
typedef long unsigned int size_t;
# 294 "include/stddef.h" 3
typedef unsigned int wchar_t;
# 48 "../../gcc/system.h" 2
# 1 "include/stdio.h" 1 3
# 62 "include/stdio.h" 3
# 1 "/usr/include/standards.h" 1 3
# 63 "include/stdio.h" 2 3
# 106 "include/stdio.h" 3
typedef long fpos_t;
# 146 "include/stdio.h" 3
# 1 "/usr/include/sys/seek.h" 1 3
# 147 "include/stdio.h" 2 3
typedef struct {
int _cnt;
unsigned int _flag2;
unsigned char *_ptr;
unsigned char *_base;
int _bufsiz;
short _flag;
short _file;
char *__newbase;
void *_lock;
unsigned char *_bufendp;
} FILE;
extern FILE _iob[];
# 178 "include/stdio.h" 3
extern size_t fread (void *, size_t, size_t, FILE *);
extern size_t fwrite (const void *, size_t, size_t, FILE *);
extern int _flsbuf (int, FILE *);
extern int _filbuf (FILE *);
extern int ferror (FILE *);
extern int feof (FILE *);
extern void clearerr (FILE *);
extern int putchar (int);
extern int getchar (void);
extern int putc (int, FILE *);
extern int getc (FILE *);
extern int remove (const char *);
extern int rename (const char *, const char *);
extern FILE *tmpfile (void);
extern char *tmpnam (char *);
extern int fclose (FILE *);
extern int fflush (FILE *);
extern FILE *fopen (const char *, const char *);
extern FILE *freopen (const char *, const char *, FILE *);
extern void setbuf (FILE *, char *);
extern int setvbuf (FILE *, char *, int, size_t);
extern int fprintf (FILE *, const char *, ...);
extern int fscanf (FILE *, const char *, ...);
extern int printf (const char *, ...);
extern int scanf (const char *, ...);
extern int sprintf (char *, const char *, ...);
extern int sscanf (const char *, const char *, ...);
extern int snprintf (char *, size_t, const char *, ...);
# 221 "include/stdio.h" 3
# 1 "include/va_list.h" 1 3
# 222 "include/stdio.h" 2 3
extern int vfprintf (FILE *, const char *, __gnuc_va_list);
extern int vprintf (const char *, __gnuc_va_list);
extern int vsprintf (char *, const char *, __gnuc_va_list);
extern int vsnprintf (char *, size_t, const char*, __gnuc_va_list);
# 242 "include/stdio.h" 3
extern int fgetc (FILE *);
extern char *fgets (char *, int, FILE *);
extern int fputc (int, FILE *);
extern int fputs (const char *, FILE *);
extern char *gets (char *);
extern int puts (const char *);
extern int ungetc (int, FILE *);
extern int fseek (FILE *, long, int);
# 278 "include/stdio.h" 3
extern int fsetpos (FILE *, const fpos_t *);
extern int fgetpos (FILE *, fpos_t *);
extern long ftell (FILE *);
extern void rewind (FILE *);
extern void perror (const char *);
# 436 "include/stdio.h" 3
# 1 "include/sys/types.h" 1 3
# 126 "include/sys/types.h" 3
typedef unsigned int wctype_t;
# 135 "include/sys/types.h" 3
# 1 "/usr/include/time_t.h" 1 3
# 34 "/usr/include/time_t.h" 3
typedef int time_t;
# 136 "include/sys/types.h" 2 3
typedef int clock_t;
# 157 "include/sys/types.h" 3
typedef long ssize_t;
typedef unsigned char uchar_t;
typedef unsigned short ushort_t;
typedef unsigned int uint_t;
typedef unsigned long ulong_t;
typedef volatile unsigned char vuchar_t;
typedef volatile unsigned short vushort_t;
typedef volatile unsigned int vuint_t;
typedef volatile unsigned long vulong_t;
typedef struct { long r[1]; } *physadr_t;
typedef struct label_t {
long val[10];
} label_t;
# 238 "include/sys/types.h" 3
typedef int level_t;
typedef int daddr_t;
typedef char * caddr_t;
typedef long * qaddr_t;
typedef char * addr_t;
typedef uint_t ino_t;
typedef short cnt_t;
typedef int dev_t;
typedef int chan_t;
typedef long off_t;
typedef long t_scalar_t;
typedef unsigned long t_uscalar_t;
# 270 "include/sys/types.h" 3
typedef unsigned long rlim_t;
typedef int paddr_t;
typedef ushort_t nlink_t;
typedef int key_t;
typedef uint_t mode_t;
typedef uint_t uid_t;
typedef uint_t gid_t;
typedef void * mid_t;
typedef int pid_t;
typedef union cpid {
struct {
unsigned int pid:19;
unsigned int nodeid:8;
unsigned int seqnum:4;
unsigned int signbit:1;
} cluster_fields;
pid_t ipid;
} cpid_t;
typedef char slab_t[12];
typedef ulong_t shmatt_t;
typedef ulong_t msgqnum_t;
typedef ulong_t msglen_t;
typedef unsigned int wint_t;
# 339 "include/sys/types.h" 3
typedef unsigned long sigset_t;
# 356 "include/sys/types.h" 3
typedef struct __pthread_attr_t {
long __valid;
char* __name;
unsigned long __arg;
unsigned long __reserved[19];
} pthread_attr_t;
typedef struct __pthread_mutexattr_t {
long __valid;
unsigned long __reserved[15];
} pthread_mutexattr_t;
typedef struct __pthread_condattr_t {
long __valid;
unsigned long __reserved[13];
} pthread_condattr_t;
typedef struct __pthread_rwlockattr_t {
long __valid;
unsigned long __reserved[15];
} pthread_rwlockattr_t;
# 406 "include/sys/types.h" 3
typedef struct __pthread_t {
void* __reserved1;
void* __reserved2;
unsigned short __size;
unsigned char __version;
unsigned char __reserved3;
unsigned char __external;
unsigned char __reserved4[2];
unsigned char __creator;
unsigned long __sequence;
unsigned long __reserved5[2];
void* __per_kt_area;
void* __stack_base;
void* __stack_reserve;
void* __stack_yellow;
void* __stack_guard;
unsigned long __stack_size;
void** __tsd_values;
unsigned long __tsd_count;
unsigned int __reserved6;
unsigned int __reserved7;
unsigned int __thread_flags;
int __thd_errno;
void* __stack_hiwater;
} *pthread_t, pthreadTeb_t;
typedef struct __pthread_mutex_t {
unsigned int __lock;
unsigned int __valid;
char* __name;
unsigned int __arg;
unsigned int __depth;
unsigned long __sequence;
unsigned long __owner;
void* __block;
} pthread_mutex_t;
typedef struct __pthread_cond_t {
unsigned int __state;
unsigned int __valid;
char* __name;
unsigned int __arg;
unsigned int __reserved1;
unsigned long __sequence;
void* __block;
} pthread_cond_t;
typedef struct __pthread_rwlock_t {
unsigned int __valid;
unsigned int __flags;
char* __name;
unsigned int __arg;
unsigned int __readers;
unsigned int __rwaits;
unsigned int __wwaits;
unsigned long __sequence;
unsigned long __wrid;
void* __block;
unsigned long __reserved1;
} pthread_rwlock_t;
typedef unsigned int pthread_key_t;
typedef struct __pthread_once_t {
long __state;
long __reserved[10];
} pthread_once_t;
# 482 "include/sys/types.h" 3
typedef long timer_t;
# 506 "include/sys/types.h" 3
typedef void (*sig_t) (int,void (*)(int));
# 519 "include/sys/types.h" 3
typedef pid_t id_t;
typedef unsigned int useconds_t;
# 533 "include/sys/types.h" 3
typedef uint_t major_t;
typedef uint_t minor_t;
typedef uint_t devs_t;
typedef uint_t unit_t;
# 556 "include/sys/types.h" 3
# 1 "/usr/include/mach/machine/vm_types.h" 1 3
# 67 "/usr/include/mach/machine/vm_types.h" 3
typedef unsigned long vm_offset_t;
typedef unsigned long vm_size_t;
# 557 "include/sys/types.h" 2 3
typedef uchar_t uchar;
typedef ushort_t ushort;
typedef uint_t uint;
typedef ulong_t ulong;
typedef physadr_t physadr;
typedef uchar_t u_char;
typedef ushort_t u_short;
typedef uint_t u_int;
typedef ulong_t u_long;
typedef vuchar_t vu_char;
typedef vushort_t vu_short;
typedef vuint_t vu_int;
typedef vulong_t vu_long;
typedef struct _quad { int val[2]; } quad;
typedef long swblk_t;
typedef u_long fixpt_t;
# 1 "/usr/include/sys/select.h" 1 3
# 50 "/usr/include/sys/select.h" 3
# 1 "include/sys/types.h" 1 3
# 51 "/usr/include/sys/select.h" 2 3
# 166 "/usr/include/sys/select.h" 3
typedef int fd_mask;
# 190 "/usr/include/sys/select.h" 3
typedef struct fd_set {
fd_mask fds_bits[((((unsigned)4096)+(((sizeof(fd_mask) * 8))-1))/((sizeof(fd_mask) * 8)))];
} fd_set;
# 243 "/usr/include/sys/select.h" 3
extern void bzero (void *, size_t);
struct timeval;
int select (int, fd_set *, fd_set *, fd_set *, struct timeval *);
# 590 "include/sys/types.h" 2 3
typedef unsigned char sa_family_t;
typedef unsigned int in_addr_t;
typedef unsigned short in_port_t;
# 1 "/usr/include/sys/common_protos.h" 1 3
# 605 "include/sys/types.h" 2 3
# 437 "include/stdio.h" 2 3
# 454 "include/stdio.h" 3
extern int fileno (FILE *);
extern FILE *fdopen (int, const char *);
# 474 "include/stdio.h" 3
extern char *cuserid (char *);
# 493 "include/stdio.h" 3
# 1 "../../include/getopt.h" 1 3
# 36 "../../include/getopt.h" 3
extern char *optarg;
# 50 "../../include/getopt.h" 3
extern int optind;
extern int opterr;
extern int optopt;
# 82 "../../include/getopt.h" 3
struct option
{
const char *name;
int has_arg;
int *flag;
int val;
};
# 118 "../../include/getopt.h" 3
extern int getopt_long (int argc, char *const *argv, const char *shortopts,
const struct option *longopts, int *longind);
extern int getopt_long_only (int argc, char *const *argv,
const char *shortopts,
const struct option *longopts, int *longind);
extern int _getopt_internal (int argc, char *const *argv,
const char *shortopts,
const struct option *longopts, int *longind,
int long_only);
# 494 "include/stdio.h" 2 3
extern char *ctermid (char *);
extern int getw (FILE *);
extern int pclose (FILE *);
extern int putw (int, FILE*);
extern FILE *popen (const char *, const char *);
extern char *tempnam (const char*, const char*);
# 1 "include/sys/limits.h" 1 3
# 86 "include/sys/limits.h" 3
# 1 "/usr/include/machine/machlimits.h" 1 3
# 87 "include/sys/limits.h" 2 3
# 152 "include/sys/limits.h" 3
# 1 "/usr/include/sys/syslimits.h" 1 3
# 153 "include/sys/limits.h" 2 3
# 249 "include/sys/limits.h" 3
# 1 "/usr/include/machine/machtime.h" 1 3
# 250 "include/sys/limits.h" 2 3
# 267 "include/sys/limits.h" 3
# 1 "/usr/include/sys/rt_limits.h" 1 3
# 268 "include/sys/limits.h" 2 3
# 511 "include/stdio.h" 2 3
# 541 "include/stdio.h" 3
extern void setbuffer (FILE *, char*, int);
extern void setlinebuf (FILE *);
# 51 "../../gcc/system.h" 2
# 110 "../../gcc/system.h"
# 1 "../../include/safe-ctype.h" 1
# 44 "../../include/safe-ctype.h"
enum {
_sch_isblank = 0x0001,
_sch_iscntrl = 0x0002,
_sch_isdigit = 0x0004,
_sch_islower = 0x0008,
_sch_isprint = 0x0010,
_sch_ispunct = 0x0020,
_sch_isspace = 0x0040,
_sch_isupper = 0x0080,
_sch_isxdigit = 0x0100,
_sch_isidst = 0x0200,
_sch_isvsp = 0x0400,
_sch_isnvsp = 0x0800,
_sch_isalpha = _sch_isupper|_sch_islower,
_sch_isalnum = _sch_isalpha|_sch_isdigit,
_sch_isidnum = _sch_isidst|_sch_isdigit,
_sch_isgraph = _sch_isalnum|_sch_ispunct,
_sch_iscppsp = _sch_isvsp|_sch_isnvsp,
_sch_isbasic = _sch_isprint|_sch_iscppsp
};
extern const unsigned short _sch_istable[256];
# 97 "../../include/safe-ctype.h"
extern const unsigned char _sch_toupper[256];
extern const unsigned char _sch_tolower[256];
# 111 "../../gcc/system.h" 2
# 1 "/usr/include/errno.h" 1 3
# 77 "/usr/include/errno.h" 3
extern int *_errno (void);
extern int _Geterrno (void);
extern int _Seterrno (int);
extern int __geterrno (void);
extern int __seterrno (int);
extern int errno;
# 293 "/usr/include/errno.h" 3
extern void perror (const char *);
extern char *sys_errlist[];
extern int sys_nerr;
# 115 "../../gcc/system.h" 2
# 1 "include/string.h" 1 3
# 98 "include/string.h" 3
extern void *memchr (const void *, int , size_t );
extern void *memcpy (void *, const void *, size_t );
extern void *memset (void *, int , size_t );
extern size_t strcspn (const char *, const char *);
extern size_t strlen (const char *);
extern size_t strspn (const char *, const char *);
extern void *memmove (void *, const void *, size_t );
extern char *strcpy (char *, const char *);
extern char *strncpy (char *, const char *, size_t );
extern char *strcat (char *, const char *);
extern char *strncat (char *, const char *, size_t );
extern int memcmp (const void *, const void *,size_t );
extern int strcmp (const char *, const char *);
extern int strcoll (const char *, const char *);
extern int strncmp (const char *,const char *,size_t );
extern size_t strxfrm (char *, const char *, size_t );
extern char *strchr (const char *, int );
extern char *strpbrk (const char *, const char *);
extern char *strrchr (const char *, int );
extern char *strstr (const char *, const char *);
extern char *strtok (char *, const char *);
extern char *strerror (int);
extern char *strtok_r (char *, const char *, char **);
# 139 "include/string.h" 3
extern void *memccpy (void *, const void *, int , size_t );
# 148 "include/string.h" 3
extern void swab (const void *, void *, ssize_t);
extern char *strdup (const char *);
# 1 "/usr/include/strings.h" 1 3
# 79 "/usr/include/strings.h" 3
extern int bcmp (const void *, const void *, size_t );
extern void bcopy (const void *, void *, size_t);
extern void bzero (void *, size_t);
extern int ffs (int);
extern char *index (const char*, int);
extern char *rindex (const char*, int);
extern int strcasecmp (const char *, const char *);
extern int strncasecmp (const char *, const char *, size_t );
# 1 "include/string.h" 1 3
# 98 "/usr/include/strings.h" 2 3
# 162 "include/string.h" 2 3
# 172 "include/string.h" 3
extern char * basename (char *);
extern char * dirname (char *);
# 122 "../../gcc/system.h" 2
# 134 "../../gcc/system.h"
# 1 "include/stdlib.h" 1 3
# 129 "include/stdlib.h" 3
typedef struct
div_t
{
int quot;
int rem; } div_t;
typedef struct
ldiv_t
{
long int quot;
long int rem; } ldiv_t;
# 160 "include/stdlib.h" 3
extern int __getmbcurmax (void);
extern int mblen (const char *, size_t);
extern size_t mbstowcs (wchar_t *, const char *, size_t);
extern int mbtowc (wchar_t *, const char *, size_t);
extern size_t wcstombs (char *, const wchar_t *, size_t);
extern int wctomb (char *, wchar_t);
extern int rpmatch (const char *);
extern void *valloc (size_t );
extern double atof (const char *);
extern int atoi (const char *);
extern long int atol (const char *);
extern double strtod (const char *, char **);
extern float strtof (const char *, char **);
extern long int strtol (const char *, char **, int );
extern long double strtold (const char *, char **);
extern unsigned long int strtoul (const char *, char **, int );
extern int rand (void);
extern void srand (unsigned int );
extern void *calloc (size_t , size_t );
extern void free (void *);
extern void *malloc (size_t );
extern void *realloc (void *, size_t );
# 207 "include/stdlib.h" 3
extern long a64l (const char *);
extern char * l64a (long);
extern int ttyslot (void);
extern char *ptsname (int);
# 234 "include/stdlib.h" 3
extern void abort (void);
extern int atexit (void (*)(void));
extern void exit (int );
extern char *getenv (const char *);
extern int system (const char *);
extern void *bsearch (const void *, const void *, size_t , size_t , int(*)(const void *, const void *));
extern void qsort (void *, size_t , size_t ,int(*)(const void *, const void *));
extern int abs (int );
extern div_t div (int , int );
extern long int labs (long int );
extern ldiv_t ldiv (long int , long int );
# 256 "include/stdlib.h" 3
extern int _Prand_r (unsigned int *);
# 290 "include/stdlib.h" 3
extern double drand48 (void);
extern double erand48 (unsigned short []);
extern long jrand48 (unsigned short []);
extern void lcong48 (unsigned short []);
extern long lrand48 (void);
extern long mrand48 (void);
extern long nrand48 (unsigned short []);
extern unsigned short *seed48 (unsigned short []);
extern void srand48 (long);
extern int putenv (const char *);
extern void setkey (const char *);
# 327 "include/stdlib.h" 3
extern char *initstate (unsigned int, char *, size_t);
extern char *setstate (const char *);
extern int grantpt (int);
extern int getsubopt (char **, char *const *, char **);
extern int random (void);
extern int srandom (unsigned int);
extern char *realpath (const char *, char *);
extern int unlockpt (int);
# 353 "include/stdlib.h" 3
extern int clearenv (void);
extern char *getpass (const char *);
extern char *mktemp (char *);
extern int mkstemp (char *);
# 373 "include/stdlib.h" 3
char *ecvt (double, int, int *, int *);
char *fcvt (double, int, int *, int *);
char *gcvt (double, int, char *);
# 135 "../../gcc/system.h" 2
# 157 "../../gcc/system.h"
# 1 "include/unistd.h" 1 3
# 74 "include/unistd.h" 3
# 1 "/usr/include/sys/access.h" 1 3
# 75 "include/unistd.h" 2 3
# 91 "include/unistd.h" 3
extern char **environ;
struct sockaddr_in;
# 102 "include/unistd.h" 3
extern ssize_t pread (int, void *, size_t, off_t);
extern ssize_t pwrite (int , const void *, size_t, off_t);
extern ssize_t read (int, void *, size_t);
extern ssize_t write (int , const void *, size_t);
extern int access (const char *, int );
extern unsigned int alarm (unsigned int );
extern int chdir (const char *);
extern int chown (const char *, uid_t , gid_t );
extern int chroot (const char *);
extern int close (int );
extern size_t confstr (int, char *, size_t);
# 134 "include/unistd.h" 3
extern int dup (int );
extern int dup2 (int , int );
extern int execl (const char *, const char *, ...);
extern int execv (const char *, char *const[]);
extern int execle (const char *, const char *, ...);
extern int execve (const char *, char *const[], char *const[]);
extern int execlp (const char *, const char *, ...);
extern int execvp (const char *, char *const[]);
extern void _exit (int );
extern pid_t fork (void);
extern long fpathconf (int , int );
extern int fsync (int);
extern int fdatasync (int);
extern char *getcwd (char *, size_t );
extern gid_t getegid (void);
extern uid_t geteuid (void);
extern gid_t getgid (void);
extern int getgroups (int , gid_t []);
extern char *getlogin (void);
extern pid_t getpgrp (void);
extern pid_t getpid (void);
extern pid_t getppid (void);
extern uid_t getuid (void);
extern int isatty (int );
extern int link (const char *, const char *);
extern off_t lseek (int , off_t , int );
extern long pathconf (const char *, int );
extern int pause (void);
# 184 "include/unistd.h" 3
extern int pipe (int []);
extern int rmdir (const char *);
extern int setgid (gid_t );
extern int setpgid (pid_t , pid_t );
extern pid_t setsid (void);
extern int setuid (uid_t );
extern unsigned int sleep (unsigned int );
extern int usleep (useconds_t );
# 209 "include/unistd.h" 3
extern long sysconf (int );
extern pid_t tcgetpgrp (int );
extern int tcsetpgrp (int , pid_t );
extern char *ttyname (int );
extern int unlink (const char *);
extern void swab (const void *, void *, ssize_t);
# 229 "include/unistd.h" 3
extern int _Pgetlogin_r (char *, size_t);
extern int _Pttyname_r (int, char *, size_t);
extern ssize_t pread (int, void *, size_t, off_t);
extern ssize_t pwrite (int, const void *, size_t, off_t);
extern int pthread_atfork (void (*)(void), void (*)(void), void (*)(void));
# 569 "include/unistd.h" 3
extern int fchown (int, uid_t, gid_t);
extern int ftruncate (int, off_t);
extern int readlink (const char *, char *, int);
extern int symlink (const char *, const char *);
extern int setgroups (int, gid_t []);
extern int truncate (const char *, off_t);
extern char *crypt (const char *, const char *);
extern char *cuserid (char *);
extern char *ctermid (char *);
extern void encrypt (char [], int);
extern char *getpass (const char *);
extern int nice (int);
# 609 "include/unistd.h" 3
extern int brk (char *);
extern int gethostname (char *, int);
extern int getpagesize (void);
extern pid_t getpgid (pid_t);
extern pid_t getsid (pid_t);
extern char *getwd (char *);
extern int lchown (const char *, uid_t, gid_t);
extern int lockf (int, int, off_t);
# 630 "include/unistd.h" 3
extern void *sbrk (ssize_t);
extern unsigned int ualarm (unsigned int, unsigned int);
extern void sync (void);
# 653 "include/unistd.h" 3
extern int setpgrp (pid_t, pid_t);
extern int setregid (gid_t, gid_t);
extern int setreuid (uid_t, uid_t);
extern pid_t vfork (void);
extern int getdtablesize (void);
extern char *gettxt (const char *, const char *);
extern char *getenv (const char *);
extern int bindresvport (int, struct sockaddr_in *);
extern char *crypt16 (const char *, const char *);
extern int rcmd (char **, u_short, char *, char *, char *, int *);
extern int rcmd2 (char **, u_short, char *, char *, char *, int *, int);
extern int rename (const char *, const char *);
extern int rexec (char **, int, char *, char *, char *, int *);
extern int rresvport (int *);
extern int rresvport2 (int *, int);
extern int ruserok (char *, int, char *, char *);
extern int seteuid (uid_t);
extern int setegid (gid_t);
extern int setlogin (char *);
extern int setrgid (gid_t);
extern int setruid (uid_t);
extern int syscall (int, ...);
# 158 "../../gcc/system.h" 2
# 1 "/usr/include/sys/param.h" 1 3
# 83 "/usr/include/sys/param.h" 3
# 1 "/usr/include/machine/machparam.h" 1 3
# 43 "/usr/include/machine/machparam.h" 3
# 1 "/usr/include/machine/endian.h" 1 3
# 108 "/usr/include/machine/endian.h" 3
extern unsigned short ntohs(unsigned short), htons(unsigned short);
extern unsigned int ntohl(unsigned int), htonl(unsigned int);
# 44 "/usr/include/machine/machparam.h" 2 3
# 63 "/usr/include/machine/machparam.h" 3
typedef long pt_entry_t;
# 76 "/usr/include/machine/machparam.h" 3
struct kernel_parameters {
struct vm_parameters {
long nbpg;
long pgofset;
long pgshift;
long nvabits;
unsigned long seg1_base;
unsigned long unity_base;
unsigned long address_mask;
pt_entry_t *selfmap;
pt_entry_t *othermap;
} vm;
};
# 143 "/usr/include/machine/machparam.h" 3
extern pt_entry_t * pmap_selfmap;
# 84 "/usr/include/sys/param.h" 2 3
# 157 "/usr/include/sys/param.h" 3
# 1 "/usr/include/sys/signal.h" 1 3
# 54 "/usr/include/sys/signal.h" 3
# 1 "/usr/include/sys/siginfo.h" 1 3
# 34 "/usr/include/sys/siginfo.h" 3
# 1 "/usr/include/sys/sysmisc.h" 1 3
# 45 "/usr/include/sys/sysmisc.h" 3
typedef struct sigaltstack {
caddr_t ss_sp;
int ss_flags;
size_t ss_size;
} stack_t;
# 63 "/usr/include/sys/sysmisc.h" 3
typedef union sigval {
int sival_int;
void *sival_ptr;
} sigval_t;
# 79 "/usr/include/sys/sysmisc.h" 3
typedef struct sigevent_event {
union sigval _sigev_value;
int _sigev_signo;
int _sigev_notify;
} sigevent_event_t;
typedef struct sigevent {
sigevent_event_t _sigev_sigevent;
union {
int _sigev[(((64)/sizeof(int)) - 4)];
struct {
void (*_sigev_notify_function) (sigval_t);
pthread_attr_t *_sigev_notify_attributes;
} _sigev_un_s;
} _sigev_un;
} sigevent_t;
# 123 "/usr/include/sys/sysmisc.h" 3
typedef struct timespec {
time_t tv_sec;
long tv_nsec;
} timespec_t;
struct uuprof {
short *pr_base;
unsigned long pr_size;
unsigned long pr_off;
unsigned long pr_scale;
};
# 35 "/usr/include/sys/siginfo.h" 2 3
# 47 "/usr/include/sys/siginfo.h" 3
typedef struct siginfo {
int si_signo;
int si_errno;
int si_code;
union {
int _sipad[(((128)/sizeof(int)) - 4)];
struct {
pid_t _pid;
union {
struct {
uid_t _uid;
} _kill;
struct {
int _status;
clock_t _utime;
clock_t _stime;
} _sigchld;
} _pinfo;
struct {
sigval_t _sigval;
} _sigrt;
} _sigproc;
struct {
caddr_t _addr;
} _sigfault;
struct {
long _band;
int _fd;
} _sigpoll;
struct {
sigval_t _siganonval;
} _siganon;
} _sifields;
} siginfo_t;
# 55 "/usr/include/sys/signal.h" 2 3
# 81 "/usr/include/sys/signal.h" 3
extern void (*signal (int, void (*)(int))) (int);
extern int raise (int);
# 144 "/usr/include/sys/signal.h" 3
typedef void (*__sigfp)(int);
# 206 "/usr/include/sys/signal.h" 3
struct sigaction {
union {
void (*_handler) (int);
void (*_sigaction) (int, siginfo_t *, void *);
} _sa_un;
# 228 "/usr/include/sys/signal.h" 3
sigset_t sa_mask;
int sa_flags;
int sa_signo;
};
extern int kill (pid_t , int);
# 253 "/usr/include/sys/signal.h" 3
extern int sigaction
(int, const struct sigaction *, struct sigaction *);
# 267 "/usr/include/sys/signal.h" 3
extern int sigprocmask (int, const sigset_t *, sigset_t *);
extern int sigsuspend (const sigset_t *);
extern int sigemptyset (sigset_t *);
extern int sigfillset (sigset_t *);
extern int sigaddset (sigset_t *, int);
extern int sigdelset (sigset_t *, int);
extern int sigismember (const sigset_t *, int);
extern int sigpending (sigset_t *);
extern int sigwaitinfo (const sigset_t *, siginfo_t *);
extern int sigtimedwait (const sigset_t *, siginfo_t *, const struct timespec *);
extern int sigqueue (pid_t, int, const union sigval);
# 299 "/usr/include/sys/signal.h" 3
extern int pthread_sigmask (int, const sigset_t *, sigset_t *);
extern int pthread_kill (pthread_t, int);
# 309 "/usr/include/sys/signal.h" 3
# 1 "/usr/include/machine/signal.h" 1 3
# 53 "/usr/include/machine/signal.h" 3
typedef int sig_atomic_t;
# 146 "/usr/include/machine/signal.h" 3
# 1 "/usr/include/machine/context.h" 1 3
# 40 "/usr/include/machine/context.h" 3
typedef char * __caddr_t;
# 58 "/usr/include/machine/context.h" 3
struct sigcontext {
# 67 "/usr/include/machine/context.h" 3
long sc_onstack;
long sc_mask;
long sc_pc;
long sc_ps;
long sc_regs[32];
long sc_ownedfp;
long sc_fpregs[32];
unsigned long sc_fpcr;
unsigned long sc_fp_control;
long sc_reserved1;
int sc_kreserved1;
int sc_kreserved2;
size_t sc_ssize;
caddr_t sc_sbase;
unsigned long sc_traparg_a0;
unsigned long sc_traparg_a1;
unsigned long sc_traparg_a2;
unsigned long sc_fp_trap_pc;
unsigned long sc_fp_trigger_sum;
unsigned long sc_fp_trigger_inst;
};
# 147 "/usr/include/machine/signal.h" 2 3
# 310 "/usr/include/sys/signal.h" 2 3
# 322 "/usr/include/sys/signal.h" 3
extern sigset_t cantmasksigset;
# 331 "/usr/include/sys/signal.h" 3
struct sigvec {
void (*sv_handler) (int);
int sv_mask;
int sv_flags;
};
# 344 "/usr/include/sys/signal.h" 3
extern int sigvec (int, struct sigvec *, struct sigvec *);
extern int killpg (pid_t, int);
# 355 "/usr/include/sys/signal.h" 3
struct sigstack {
char *ss_sp;
int ss_onstack;
};
extern char *__sys_siglist[];
extern int __sys_nsig;
# 466 "/usr/include/sys/signal.h" 3
extern int sigpause (int);
# 475 "/usr/include/sys/signal.h" 3
extern int sigreturn (struct sigcontext *);
extern int sigblock (int);
extern int sigsetmask (int);
extern int sigstack (struct sigstack *, struct sigstack *);
extern int siginterrupt (int, int);
# 491 "/usr/include/sys/signal.h" 3
extern int _Psigwait (const sigset_t *set, int *sig);
# 510 "/usr/include/sys/signal.h" 3
extern void (*sigset (int, void (*)(int))) (int);
extern int sighold (int);
extern int sigrelse (int);
# 529 "/usr/include/sys/signal.h" 3
extern int sigignore (int);
# 540 "/usr/include/sys/signal.h" 3
extern int sigaltstack (stack_t *, stack_t *);
# 1 "/usr/include/sys/procset.h" 1 3
# 40 "/usr/include/sys/procset.h" 3
typedef enum idop {
POP_DIFF,
POP_AND,
POP_OR,
POP_XOR
# 67 "/usr/include/sys/procset.h" 3
} idop_t;
typedef enum idtype {
P_PID,
P_PPID,
P_PGID,
P_SID,
P_CID,
P_UID,
P_GID,
P_ALL
} idtype_t;
typedef struct procset {
idop_t p_op;
idtype_t p_lidtype;
id_t p_lid;
idtype_t p_ridtype;
id_t p_rid;
} procset_t;
# 542 "/usr/include/sys/signal.h" 2 3
extern int sigsendset (const procset_t *, int);
extern int sigsend (idtype_t, id_t, int);
int (*ssignal (int, int (*)(int))) (int);
int gsignal (int);
# 158 "/usr/include/sys/param.h" 2 3
# 162 "../../gcc/system.h" 2
# 1 "include/limits.h" 1 3
# 11 "include/limits.h" 3
# 1 "include/syslimits.h" 1 3
# 12 "include/limits.h" 2 3
# 168 "../../gcc/system.h" 2
# 1 "../../gcc/hwint.h" 1
# 172 "../../gcc/system.h" 2
# 200 "../../gcc/system.h"
# 1 "/usr/include/sys/time.h" 1 3
# 68 "/usr/include/sys/time.h" 3
struct timeval {
time_t tv_sec;
int tv_usec;
};
# 105 "/usr/include/sys/time.h" 3
struct itimerval {
struct timeval it_interval;
struct timeval it_value;
};
# 133 "/usr/include/sys/time.h" 3
# 1 "include/time.h" 1 3
# 100 "include/time.h" 3
struct tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
long tm_gmtoff;
char *tm_zone;
};
extern time_t time (time_t *);
extern char *ctime (const time_t *);
extern struct tm *gmtime (const time_t *);
extern struct tm *localtime (const time_t *);
extern time_t mktime (struct tm *);
extern double difftime (time_t , time_t );
# 139 "include/time.h" 3
extern char *asctime (const struct tm *);
extern clock_t clock (void);
extern size_t strftime (char *, size_t , const char *,const struct tm *);
# 157 "include/time.h" 3
extern char * _Pasctime_r (const struct tm *, char *);
extern char * _Pctime_r (const time_t *, char *);
extern struct tm * _Pgmtime_r (const time_t *, struct tm *);
extern struct tm * _Plocaltime_r (const time_t *, struct tm *);
# 212 "include/time.h" 3
# 1 "/usr/include/sys/timers.h" 1 3
# 97 "/usr/include/sys/timers.h" 3
typedef int clockid_t;
# 109 "/usr/include/sys/timers.h" 3
struct itimerspec {
struct timespec it_interval;
struct timespec it_value;
};
# 135 "/usr/include/sys/timers.h" 3
int clock_gettime (clockid_t, struct timespec *);
int clock_settime (clockid_t, const struct timespec *);
int clock_getdrift (int, int *);
int clock_setdrift (int, const int, int *);
int timer_create (clockid_t, struct sigevent *, timer_t *);
int timer_delete (timer_t);
int timer_gettime (timer_t, struct itimerspec *);
int timer_settime (timer_t, int, const struct itimerspec *, struct itimerspec *);
int timer_getoverrun (timer_t);
int nanosleep (const struct timespec *, struct timespec *);
int clock_getres (clockid_t, struct timespec *);
# 213 "include/time.h" 2 3
# 222 "include/time.h" 3
extern char *tzname[];
extern void tzset (void);
extern long timezone;
extern int daylight;
extern char *strptime (const char *, const char *, struct tm *);
# 258 "include/time.h" 3
extern struct tm *getdate (char *);
extern int getdate_err;
# 134 "/usr/include/sys/time.h" 2 3
# 176 "/usr/include/sys/time.h" 3
struct timezone {
int tz_minuteswest;
int tz_dsttime;
};
# 193 "/usr/include/sys/time.h" 3
extern int adjtime (struct timeval *, struct timeval *);
extern int settimeofday (struct timeval *, struct timezone *);
extern int stime (long *);
# 209 "/usr/include/sys/time.h" 3
extern int utimes (const char *, struct timeval *);
extern int setitimer (int, struct itimerval *, struct itimerval *);
extern int gettimeofday (struct timeval *, struct timezone *);
extern int getitimer (int, struct itimerval *);
# 201 "../../gcc/system.h" 2
# 213 "../../gcc/system.h"
# 1 "/usr/include/fcntl.h" 1 3
# 39 "/usr/include/fcntl.h" 3
# 1 "/usr/include/sys/fcntl.h" 1 3
# 68 "/usr/include/sys/fcntl.h" 3
struct flock {
short l_type;
short l_whence;
off_t l_start;
off_t l_len;
pid_t l_pid;
};
extern int open (const char *, int , ...);
extern int creat (const char *, mode_t );
extern int fcntl (int , int ,...);
# 162 "/usr/include/sys/fcntl.h" 3
# 1 "/usr/include/sys/mode.h" 1 3
# 163 "/usr/include/sys/fcntl.h" 2 3
# 272 "/usr/include/sys/fcntl.h" 3
struct eflock {
short l_type;
short l_whence;
off_t l_start;
off_t l_len;
pid_t l_pid;
pid_t l_rpid;
int l_rsys;
short l_xxx;
int l_cb;
};
# 295 "/usr/include/sys/fcntl.h" 3
typedef struct {
ulong version;
ulong operation;
ulong action;
ulong info_buf_size;
void *info_buf;
ulong spare[2];
} advfs_opT;
# 326 "/usr/include/sys/fcntl.h" 3
struct extentmapentry {
unsigned long offset;
unsigned long size;
};
struct extentmap {
unsigned long arraysize;
unsigned long numextents;
unsigned long offset;
struct extentmapentry *extent;
};
# 40 "/usr/include/fcntl.h" 2 3
# 214 "../../gcc/system.h" 2
# 251 "../../gcc/system.h"
# 1 "include/sys/wait.h" 1 3
# 90 "include/sys/wait.h" 3
extern pid_t wait(int *);
# 103 "include/sys/wait.h" 3
extern pid_t waitpid(pid_t , int *, int );
# 169 "include/sys/wait.h" 3
# 1 "/usr/include/sys/resource.h" 1 3
# 94 "/usr/include/sys/resource.h" 3
struct rusage {
struct timeval ru_utime;
struct timeval ru_stime;
long ru_maxrss;
long ru_ixrss;
long ru_idrss;
long ru_isrss;
long ru_minflt;
long ru_majflt;
long ru_nswap;
long ru_inblock;
long ru_oublock;
long ru_msgsnd;
long ru_msgrcv;
long ru_nsignals;
long ru_nvcsw;
long ru_nivcsw;
};
# 152 "/usr/include/sys/resource.h" 3
struct rlimit {
rlim_t rlim_cur;
rlim_t rlim_max;
};
struct rusage_dev {
struct rusage ru_rusage;
dev_t ru_dev;
};
# 181 "/usr/include/sys/resource.h" 3
# 203 "/usr/include/sys/resource.h" 3
extern int getpriority (int, int);
extern int setpriority (int, int, int);
extern int setrlimit (int, struct rlimit *);
extern int getrlimit (int, struct rlimit *);
extern int getrusage (int, struct rusage *);
# 238 "/usr/include/sys/resource.h" 3
struct profil_args {
unsigned int *buffer;
void *highpc;
void *lowpc;
unsigned long scale;
};
# 171 "include/sys/wait.h" 2 3
union wait;
extern pid_t wait4 (pid_t, union wait *, int, struct rusage *);
# 319 "include/sys/wait.h" 3
extern pid_t waitid(idtype_t, id_t, siginfo_t *, int);
# 252 "../../gcc/system.h" 2
# 312 "../../gcc/system.h"
# 1 "/usr/include/malloc.h" 1 3
# 66 "/usr/include/malloc.h" 3
struct mallinfo {
int arena;
int ordblks;
int smblks;
int hblks;
int hblkhd;
int usmblks;
int fsmblks;
int uordblks;
int fordblks;
int keepcost;
};
# 109 "/usr/include/malloc.h" 3
extern int mallopt(int, int);
extern struct mallinfo mallinfo(void);
extern size_t mallocblksize (void*);
extern void *acreate(void *, size_t, int, void *, void *(*)(size_t, void *));
extern int adelete(void *);
extern void *amalloc(size_t, void *);
extern void afree(void *, void *);
extern void *arealloc(void *, size_t, void *);
extern void *acalloc(size_t, size_t, void *);
extern int amallopt(int, int, void *);
extern size_t amallocblksize (void *, void *);
extern struct mallinfo amallinfo(void *);
# 313 "../../gcc/system.h" 2
# 331 "../../gcc/system.h"
extern const char *strsignal (int);
# 381 "../../gcc/system.h"
# 1 "/usr/include/sys/stat.h" 1 3
# 203 "/usr/include/sys/stat.h" 3
struct stat {
dev_t st_dev; int st_retired1; mode_t st_mode; nlink_t st_nlink; short st_nlink_reserved; uid_t st_uid; gid_t st_gid; dev_t st_rdev; dev_t st_ldev; off_t st_size; time_t st_retired2; int st_uatime; time_t st_retired3; int st_umtime; time_t st_retired4; int st_uctime; int st_retired5; int st_retired6; uint_t st_flags; uint_t st_gen; long st_spare[4]; ino_t st_ino; int st_ino_reserved; time_t st_atime; int st_atime_reserved; time_t st_mtime; int st_mtime_reserved; time_t st_ctime; int st_ctime_reserved; long st_blksize; long st_blocks;
};
# 333 "/usr/include/sys/stat.h" 3
extern int _F64_stat (const char *, struct stat *);
#pragma extern_prefix ""
extern int _F64_fstat (int , struct stat *);
#pragma extern_prefix ""
extern int _F64_lstat (const char *, struct stat *);
#pragma extern_prefix ""
# 371 "/usr/include/sys/stat.h" 3
extern int mkdir (const char *, mode_t );
extern mode_t umask (mode_t );
extern int chmod (const char *, mode_t );
extern int fchmod (int, mode_t );
extern int mknod (const char *, mode_t, ... );
extern int mkfifo (const char *, mode_t );
# 382 "../../gcc/system.h" 2
# 490 "../../gcc/system.h"
# 1 "../../include/libiberty.h" 1
# 46 "../../include/libiberty.h"
# 1 "include/stddef.h" 1 3
# 47 "../../include/libiberty.h" 2
extern char **buildargv (const char *) __attribute__ ((__malloc__));
extern void freeargv (char **);
extern char **dupargv (char **) __attribute__ ((__malloc__));
# 86 "../../include/libiberty.h"
extern const char *lbasename (const char *);
extern char *concat (const char *, ...) __attribute__ ((__malloc__));
# 101 "../../include/libiberty.h"
extern char *reconcat (char *, const char *, ...) __attribute__ ((__malloc__));
extern unsigned long concat_length (const char *, ...);
extern char *concat_copy (char *, const char *, ...);
extern char *concat_copy2 (const char *, ...);
extern char *libiberty_concat_ptr;
# 137 "../../include/libiberty.h"
extern int fdmatch (int fd1, int fd2);
extern char * getpwd (void);
extern long get_run_time (void);
extern char *choose_temp_base (void) __attribute__ ((__malloc__));
extern char *make_temp_file (const char *) __attribute__ ((__malloc__));
extern const char *spaces (int count);
extern int errno_max (void);
extern const char *strerrno (int);
extern int strtoerrno (const char *);
extern char *xstrerror (int);
extern int signo_max (void);
# 193 "../../include/libiberty.h"
extern const char *strsigno (int);
extern int strtosigno (const char *);
extern int xatexit (void (*fn) (void));
extern void xexit (int status) __attribute__ ((__noreturn__));
extern void xmalloc_set_program_name (const char *);
extern void xmalloc_failed (size_t) __attribute__ ((__noreturn__));
extern void * xmalloc (size_t) __attribute__ ((__malloc__));
extern void * xrealloc (void *, size_t);
extern void * xcalloc (size_t, size_t) __attribute__ ((__malloc__));
extern char *xstrdup (const char *) __attribute__ ((__malloc__));
extern void * xmemdup (const void *, size_t, size_t) __attribute__ ((__malloc__));
extern const char _hex_value[256];
extern void hex_init (void);
# 260 "../../include/libiberty.h"
extern int pexecute (const char *, char * const *, const char *, const char *, char **, char **, int);
extern int pwait (int, int *, int);
extern int asprintf (char **, const char *, ...) __attribute__ ((__format__ (__printf__, 2, 3)));
extern int vasprintf (char **, const char *, va_list)
__attribute__ ((__format__ (__printf__, 2, 0)));
# 286 "../../include/libiberty.h"
extern void * C_alloca (size_t) __attribute__ ((__malloc__));
# 491 "../../gcc/system.h" 2
# 1 "../../include/symcat.h" 1
# 492 "../../gcc/system.h" 2
# 33 "../../gcc/predict.c" 2
# 1 "../../gcc/tree.h" 1
# 22 "../../gcc/tree.h"
# 1 "../../gcc/machmode.h" 1
# 29 "../../gcc/machmode.h"
enum machine_mode {
# 1 "../../gcc/machmode.def" 1
# 74 "../../gcc/machmode.def"
VOIDmode,
BImode,
QImode,
HImode,
SImode,
DImode,
TImode,
OImode,
PQImode,
PHImode,
PSImode,
PDImode,
QFmode,
HFmode,
TQFmode,
SFmode,
DFmode,
XFmode,
TFmode,
QCmode,
HCmode,
SCmode,
DCmode,
XCmode,
TCmode,
CQImode,
CHImode,
CSImode,
CDImode,
CTImode,
COImode,
V2QImode,
V2HImode,
V2SImode,
V2DImode,
V4QImode,
V4HImode,
V4SImode,
V4DImode,
V8QImode,
V8HImode,
V8SImode,
V8DImode,
V16QImode,
V2SFmode,
V2DFmode,
V4SFmode,
V4DFmode,
V8SFmode,
V8DFmode,
V16SFmode,
BLKmode,
# 159 "../../gcc/machmode.def"
CCmode,
# 31 "../../gcc/machmode.h" 2
MAX_MACHINE_MODE };
# 41 "../../gcc/machmode.h"
extern const char * const mode_name[(int) MAX_MACHINE_MODE];
enum mode_class { MODE_RANDOM, MODE_INT, MODE_FLOAT, MODE_PARTIAL_INT, MODE_CC,
MODE_COMPLEX_INT, MODE_COMPLEX_FLOAT,
MODE_VECTOR_INT, MODE_VECTOR_FLOAT,
MAX_MODE_CLASS};
extern const enum mode_class mode_class[(int) MAX_MACHINE_MODE];
# 80 "../../gcc/machmode.h"
extern const unsigned char mode_size[(int) MAX_MACHINE_MODE];
extern const unsigned char mode_unit_size[(int) MAX_MACHINE_MODE];
# 96 "../../gcc/machmode.h"
extern const unsigned short mode_bitsize[(int) MAX_MACHINE_MODE];
# 106 "../../gcc/machmode.h"
extern const unsigned long mode_mask_array[(int) MAX_MACHINE_MODE];
extern const enum machine_mode inner_mode_array[(int) MAX_MACHINE_MODE];
# 123 "../../gcc/machmode.h"
extern const unsigned char mode_wider_mode[(int) MAX_MACHINE_MODE];
extern enum machine_mode mode_for_size (unsigned int, enum mode_class, int);
extern enum machine_mode smallest_mode_for_size
(unsigned int, enum mode_class);
extern enum machine_mode int_mode_for_mode (enum machine_mode);
extern enum machine_mode get_best_mode (int, int, unsigned int, enum machine_mode, int);
extern unsigned get_mode_alignment (enum machine_mode);
extern const enum machine_mode class_narrowest_mode[(int) MAX_MODE_CLASS];
extern enum machine_mode byte_mode;
extern enum machine_mode word_mode;
extern enum machine_mode ptr_mode;
# 23 "../../gcc/tree.h" 2
# 1 "../../gcc/version.h" 1
extern const char *const version_string;
# 24 "../../gcc/tree.h" 2
enum tree_code {
# 1 "../../gcc/tree.def" 1
# 46 "../../gcc/tree.def"
ERROR_MARK,
IDENTIFIER_NODE,
TREE_LIST,
TREE_VEC,
# 84 "../../gcc/tree.def"
BLOCK,
# 129 "../../gcc/tree.def"
VOID_TYPE,
# 139 "../../gcc/tree.def"
INTEGER_TYPE,
REAL_TYPE,
COMPLEX_TYPE,
VECTOR_TYPE,
# 164 "../../gcc/tree.def"
ENUMERAL_TYPE,
BOOLEAN_TYPE,
CHAR_TYPE,
POINTER_TYPE,
OFFSET_TYPE,
REFERENCE_TYPE,
METHOD_TYPE,
FILE_TYPE,
# 209 "../../gcc/tree.def"
ARRAY_TYPE,
SET_TYPE,
# 225 "../../gcc/tree.def"
RECORD_TYPE,
UNION_TYPE,
QUAL_UNION_TYPE,
FUNCTION_TYPE,
LANG_TYPE,
# 262 "../../gcc/tree.def"
INTEGER_CST,
REAL_CST,
COMPLEX_CST,
VECTOR_CST,
STRING_CST,
# 336 "../../gcc/tree.def"
FUNCTION_DECL,
LABEL_DECL,
CONST_DECL,
TYPE_DECL,
VAR_DECL,
PARM_DECL,
RESULT_DECL,
FIELD_DECL,
NAMESPACE_DECL,
COMPONENT_REF,
# 363 "../../gcc/tree.def"
BIT_FIELD_REF,
INDIRECT_REF,
BUFFER_REF,
ARRAY_REF,
ARRAY_RANGE_REF,
VTABLE_REF,
# 409 "../../gcc/tree.def"
CONSTRUCTOR,
# 419 "../../gcc/tree.def"
COMPOUND_EXPR,
MODIFY_EXPR,
INIT_EXPR,
TARGET_EXPR,
# 443 "../../gcc/tree.def"
COND_EXPR,
# 466 "../../gcc/tree.def"
BIND_EXPR,
CALL_EXPR,
METHOD_CALL_EXPR,
# 490 "../../gcc/tree.def"
WITH_CLEANUP_EXPR,
# 507 "../../gcc/tree.def"
CLEANUP_POINT_EXPR,
# 556 "../../gcc/tree.def"
PLACEHOLDER_EXPR,
WITH_RECORD_EXPR,
PLUS_EXPR,
MINUS_EXPR,
MULT_EXPR,
TRUNC_DIV_EXPR,
CEIL_DIV_EXPR,
FLOOR_DIV_EXPR,
ROUND_DIV_EXPR,
TRUNC_MOD_EXPR,
CEIL_MOD_EXPR,
FLOOR_MOD_EXPR,
ROUND_MOD_EXPR,
RDIV_EXPR,
EXACT_DIV_EXPR,
FIX_TRUNC_EXPR,
FIX_CEIL_EXPR,
FIX_FLOOR_EXPR,
FIX_ROUND_EXPR,
FLOAT_EXPR,
NEGATE_EXPR,
MIN_EXPR,
MAX_EXPR,
ABS_EXPR,
FFS_EXPR,
# 628 "../../gcc/tree.def"
LSHIFT_EXPR,
RSHIFT_EXPR,
LROTATE_EXPR,
RROTATE_EXPR,
BIT_IOR_EXPR,
BIT_XOR_EXPR,
BIT_AND_EXPR,
BIT_ANDTC_EXPR,
BIT_NOT_EXPR,
# 649 "../../gcc/tree.def"
TRUTH_ANDIF_EXPR,
TRUTH_ORIF_EXPR,
TRUTH_AND_EXPR,
TRUTH_OR_EXPR,
TRUTH_XOR_EXPR,
TRUTH_NOT_EXPR,
LT_EXPR,
LE_EXPR,
GT_EXPR,
GE_EXPR,
EQ_EXPR,
NE_EXPR,
UNORDERED_EXPR,
ORDERED_EXPR,
UNLT_EXPR,
UNLE_EXPR,
UNGT_EXPR,
UNGE_EXPR,
UNEQ_EXPR,
IN_EXPR,
SET_LE_EXPR,
CARD_EXPR,
RANGE_EXPR,
CONVERT_EXPR,
NOP_EXPR,
NON_LVALUE_EXPR,
# 707 "../../gcc/tree.def"
VIEW_CONVERT_EXPR,
SAVE_EXPR,
# 722 "../../gcc/tree.def"
UNSAVE_EXPR,
# 731 "../../gcc/tree.def"
RTL_EXPR,
ADDR_EXPR,
REFERENCE_EXPR,
ENTRY_VALUE_EXPR,
FDESC_EXPR,
COMPLEX_EXPR,
CONJ_EXPR,
REALPART_EXPR,
IMAGPART_EXPR,
PREDECREMENT_EXPR,
PREINCREMENT_EXPR,
POSTDECREMENT_EXPR,
POSTINCREMENT_EXPR,
VA_ARG_EXPR,
TRY_CATCH_EXPR,
# 790 "../../gcc/tree.def"
TRY_FINALLY_EXPR,
GOTO_SUBROUTINE_EXPR,
LABEL_EXPR,
GOTO_EXPR,
RETURN_EXPR,
EXIT_EXPR,
LOOP_EXPR,
LABELED_BLOCK_EXPR,
EXIT_BLOCK_EXPR,
# 844 "../../gcc/tree.def"
EXPR_WITH_FILE_LOCATION,
SWITCH_EXPR,
EXC_PTR_EXPR,
# 31 "../../gcc/tree.h" 2
LAST_AND_UNUSED_TREE_CODE
};
# 49 "../../gcc/tree.h"
extern char tree_code_type[256];
# 60 "../../gcc/tree.h"
extern int tree_code_length[256];
extern const char *tree_code_name[256];
enum built_in_class
{
NOT_BUILT_IN = 0,
BUILT_IN_FRONTEND,
BUILT_IN_MD,
BUILT_IN_NORMAL
};
extern const char *const built_in_class_names[4];
enum built_in_function
{
# 1 "../../gcc/builtins.def" 1
# 145 "../../gcc/builtins.def"
BUILT_IN_ALLOCA,
BUILT_IN_ABS,
BUILT_IN_LABS,
BUILT_IN_FABS,
BUILT_IN_FABSF,
BUILT_IN_FABSL,
BUILT_IN_LLABS,
BUILT_IN_IMAXABS,
BUILT_IN_CONJ,
BUILT_IN_CONJF,
BUILT_IN_CONJL,
BUILT_IN_CREAL,
BUILT_IN_CREALF,
BUILT_IN_CREALL,
BUILT_IN_CIMAG,
BUILT_IN_CIMAGF,
BUILT_IN_CIMAGL,
BUILT_IN_DIV,
BUILT_IN_LDIV,
BUILT_IN_FFLOOR,
BUILT_IN_FCEIL,
BUILT_IN_FMOD,
BUILT_IN_FREM,
BUILT_IN_BZERO,
BUILT_IN_BCMP,
BUILT_IN_FFS,
BUILT_IN_INDEX,
BUILT_IN_RINDEX,
BUILT_IN_MEMCPY,
BUILT_IN_MEMCMP,
BUILT_IN_MEMSET,
BUILT_IN_STRCAT,
BUILT_IN_STRNCAT,
BUILT_IN_STRCPY,
BUILT_IN_STRNCPY,
BUILT_IN_STRCMP,
BUILT_IN_STRNCMP,
BUILT_IN_STRLEN,
BUILT_IN_STRSTR,
BUILT_IN_STRPBRK,
BUILT_IN_STRSPN,
BUILT_IN_STRCSPN,
BUILT_IN_STRCHR,
BUILT_IN_STRRCHR,
BUILT_IN_SQRT,
BUILT_IN_SIN,
BUILT_IN_COS,
BUILT_IN_SQRTF,
BUILT_IN_SINF,
BUILT_IN_COSF,
BUILT_IN_SQRTL,
BUILT_IN_SINL,
BUILT_IN_COSL,
BUILT_IN_GETEXP,
BUILT_IN_GETMAN,
BUILT_IN_SAVEREGS,
BUILT_IN_CLASSIFY_TYPE,
BUILT_IN_NEXT_ARG,
BUILT_IN_ARGS_INFO,
BUILT_IN_CONSTANT_P,
BUILT_IN_FRAME_ADDRESS,
BUILT_IN_RETURN_ADDRESS,
BUILT_IN_AGGREGATE_INCOMING_ADDRESS,
BUILT_IN_APPLY_ARGS,
BUILT_IN_APPLY,
BUILT_IN_RETURN,
BUILT_IN_SETJMP,
BUILT_IN_LONGJMP,
BUILT_IN_TRAP,
BUILT_IN_PREFETCH,
BUILT_IN_PUTCHAR,
BUILT_IN_PUTS,
BUILT_IN_PRINTF,
BUILT_IN_FPUTC,
BUILT_IN_FPUTS,
BUILT_IN_FWRITE,
BUILT_IN_FPRINTF,
BUILT_IN_PUTCHAR_UNLOCKED,
BUILT_IN_PUTS_UNLOCKED,
BUILT_IN_PRINTF_UNLOCKED,
BUILT_IN_FPUTC_UNLOCKED,
BUILT_IN_FPUTS_UNLOCKED,
BUILT_IN_FWRITE_UNLOCKED,
BUILT_IN_FPRINTF_UNLOCKED,
BUILT_IN_ISGREATER,
BUILT_IN_ISGREATEREQUAL,
BUILT_IN_ISLESS,
BUILT_IN_ISLESSEQUAL,
BUILT_IN_ISLESSGREATER,
BUILT_IN_ISUNORDERED,
BUILT_IN_UNWIND_INIT,
BUILT_IN_DWARF_CFA,
BUILT_IN_DWARF_FP_REGNUM,
BUILT_IN_INIT_DWARF_REG_SIZES,
BUILT_IN_FROB_RETURN_ADDR,
BUILT_IN_EXTRACT_RETURN_ADDR,
BUILT_IN_EH_RETURN,
BUILT_IN_EH_RETURN_DATA_REGNO,
BUILT_IN_VARARGS_START,
BUILT_IN_STDARG_START,
BUILT_IN_VA_END,
BUILT_IN_VA_COPY,
BUILT_IN_EXPECT,
BUILT_IN_NEW,
BUILT_IN_VEC_NEW,
BUILT_IN_DELETE,
BUILT_IN_VEC_DELETE,
# 87 "../../gcc/tree.h" 2
END_BUILTINS
};
extern const char *const built_in_names[(int) END_BUILTINS];
extern tree built_in_decls[(int) END_BUILTINS];
# 121 "../../gcc/tree.h"
struct tree_common
{
tree chain;
tree type;
enum tree_code code : 8;
unsigned side_effects_flag : 1;
unsigned constant_flag : 1;
unsigned addressable_flag : 1;
unsigned volatile_flag : 1;
unsigned readonly_flag : 1;
unsigned unsigned_flag : 1;
unsigned asm_written_flag: 1;
unsigned unused_0 : 1;
unsigned used_flag : 1;
unsigned nothrow_flag : 1;
unsigned static_flag : 1;
unsigned public_flag : 1;
unsigned private_flag : 1;
unsigned protected_flag : 1;
unsigned bounded_flag : 1;
unsigned deprecated_flag : 1;
unsigned lang_flag_0 : 1;
unsigned lang_flag_1 : 1;
unsigned lang_flag_2 : 1;
unsigned lang_flag_3 : 1;
unsigned lang_flag_4 : 1;
unsigned lang_flag_5 : 1;
unsigned lang_flag_6 : 1;
unsigned unused_1 : 1;
};
# 332 "../../gcc/tree.h"
# 1 "tree-check.h" 1
# 333 "../../gcc/tree.h" 2
# 705 "../../gcc/tree.h"
struct tree_int_cst
{
struct tree_common common;
rtx rtl;
struct {
unsigned long low;
long high;
} int_cst;
};
# 732 "../../gcc/tree.h"
# 1 "../../gcc/real.h" 1
# 107 "../../gcc/real.h"
typedef struct {
long r[(19 + sizeof (long))/(sizeof (long))];
} realvaluetype;
# 131 "../../gcc/real.h"
extern unsigned int significand_size (enum machine_mode);
# 144 "../../gcc/real.h"
extern void earith (realvaluetype *, int, realvaluetype *, realvaluetype *);
extern realvaluetype etrunci (realvaluetype);
extern realvaluetype etruncui (realvaluetype);
extern realvaluetype ereal_negate (realvaluetype);
extern long efixi (realvaluetype);
extern unsigned long efixui (realvaluetype);
extern void ereal_from_int (realvaluetype *, long, long, enum machine_mode);
extern void ereal_from_uint (realvaluetype *, unsigned long, unsigned long, enum machine_mode);
extern void ereal_to_int (long *, long *, realvaluetype);
extern realvaluetype ereal_ldexp (realvaluetype, int);
extern void etartdouble (realvaluetype, long *);
extern void etarldouble (realvaluetype, long *);
extern void etardouble (realvaluetype, long *);
extern long etarsingle (realvaluetype);
extern void ereal_to_decimal (realvaluetype, char *);
extern int ereal_cmp (realvaluetype, realvaluetype);
extern int ereal_isneg (realvaluetype);
extern realvaluetype ereal_unto_float (long);
extern realvaluetype ereal_unto_double (long *);
extern realvaluetype ereal_from_float (long);
extern realvaluetype ereal_from_double (long *);
# 406 "../../gcc/real.h"
extern realvaluetype real_value_truncate (enum machine_mode, realvaluetype);
# 437 "../../gcc/real.h"
extern realvaluetype dconst0;
extern realvaluetype dconst1;
extern realvaluetype dconst2;
extern realvaluetype dconstm1;
union real_extract
{
realvaluetype d;
long i[sizeof (realvaluetype) / sizeof (long)];
};
union tree_node;
realvaluetype real_value_from_int_cst (union tree_node *, union tree_node *);
# 466 "../../gcc/real.h"
extern struct rtx_def *immed_real_const_1 (realvaluetype, enum machine_mode);
# 478 "../../gcc/real.h"
extern int exact_real_inverse (enum machine_mode, realvaluetype *);
extern int target_isnan (realvaluetype);
extern int target_isinf (realvaluetype);
extern int target_negative (realvaluetype);
extern void debug_real (realvaluetype);
extern realvaluetype ereal_atof (const char *, enum machine_mode);
# 733 "../../gcc/tree.h" 2
struct tree_real_cst
{
struct tree_common common;
rtx rtl;
realvaluetype real_cst;
};
struct tree_string
{
struct tree_common common;
rtx rtl;
int length;
const char *pointer;
};
struct tree_complex
{
struct tree_common common;
rtx rtl;
tree real;
tree imag;
};
struct tree_vector
{
struct tree_common common;
rtx rtl;
tree elements;
};
# 1 "../../gcc/hashtable.h" 1
# 21 "../../gcc/hashtable.h"
# 1 "../../include/obstack.h" 1
# 161 "../../include/obstack.h"
struct _obstack_chunk
{
char *limit;
struct _obstack_chunk *prev;
char contents[4];
};
struct obstack
{
long chunk_size;
struct _obstack_chunk *chunk;
char *object_base;
char *next_free;
char *chunk_limit;
long int temp;
int alignment_mask;
struct _obstack_chunk *(*chunkfun) (void *, long);
void (*freefun) (void *, struct _obstack_chunk *);
void *extra_arg;
unsigned use_extra_arg:1;
unsigned maybe_empty_object:1;
unsigned alloc_failed:1;
};
extern void _obstack_newchunk (struct obstack *, int);
extern void _obstack_free (struct obstack *, void *);
extern int _obstack_begin (struct obstack *, int, int,
void *(*) (long), void (*) (void *));
extern int _obstack_begin_1 (struct obstack *, int, int,
void *(*) (void *, long),
void (*) (void *, void *), void *);
extern int _obstack_memory_used (struct obstack *);
# 223 "../../include/obstack.h"
void obstack_init (struct obstack *obstack);
void * obstack_alloc (struct obstack *obstack, int size);
void * obstack_copy (struct obstack *obstack, void *address, int size);
void * obstack_copy0 (struct obstack *obstack, void *address, int size);
void obstack_free (struct obstack *obstack, void *block);
void obstack_blank (struct obstack *obstack, int size);
void obstack_grow (struct obstack *obstack, void *data, int size);
void obstack_grow0 (struct obstack *obstack, void *data, int size);
void obstack_1grow (struct obstack *obstack, int data_char);
void obstack_ptr_grow (struct obstack *obstack, void *data);
void obstack_int_grow (struct obstack *obstack, int data);
void * obstack_finish (struct obstack *obstack);
int obstack_object_size (struct obstack *obstack);
int obstack_room (struct obstack *obstack);
void obstack_make_room (struct obstack *obstack, int size);
void obstack_1grow_fast (struct obstack *obstack, int data_char);
void obstack_ptr_grow_fast (struct obstack *obstack, void *data);
void obstack_int_grow_fast (struct obstack *obstack, int data);
void obstack_blank_fast (struct obstack *obstack, int size);
void * obstack_base (struct obstack *obstack);
void * obstack_next_free (struct obstack *obstack);
int obstack_alignment_mask (struct obstack *obstack);
int obstack_chunk_size (struct obstack *obstack);
int obstack_memory_used (struct obstack *obstack);
# 267 "../../include/obstack.h"
extern void (*obstack_alloc_failed_handler) (void);
extern int obstack_exit_failure;
# 22 "../../gcc/hashtable.h" 2
typedef struct ht_identifier ht_identifier;
struct ht_identifier
{
unsigned int len;
const unsigned char *str;
};
# 39 "../../gcc/hashtable.h"
struct cpp_reader;
typedef struct ht hash_table;
typedef struct ht_identifier *hashnode;
enum ht_lookup_option {HT_NO_INSERT = 0, HT_ALLOC, HT_ALLOCED};
struct ht
{
struct obstack stack;
hashnode *entries;
hashnode (*alloc_node) (hash_table *);
unsigned int nslots;
unsigned int nelements;
struct cpp_reader *pfile;
unsigned int searches;
unsigned int collisions;
};
extern void gcc_obstack_init (struct obstack *);
extern hash_table *ht_create (unsigned int order);
extern void ht_destroy (hash_table *);
extern hashnode ht_lookup (hash_table *, const unsigned char *, unsigned int, enum ht_lookup_option);
typedef int (*ht_cb) (struct cpp_reader *, hashnode, const void *);
extern void ht_forall (hash_table *, ht_cb, const void *);
extern void ht_dump_statistics (hash_table *);
extern double approx_sqrt (double);
# 776 "../../gcc/tree.h" 2
# 791 "../../gcc/tree.h"
struct tree_identifier
{
struct tree_common common;
struct ht_identifier id;
};
struct tree_list
{
struct tree_common common;
tree purpose;
tree value;
};
struct tree_vec
{
struct tree_common common;
int length;
tree a[1];
};
# 879 "../../gcc/tree.h"
struct tree_exp
{
struct tree_common common;
int complexity;
tree operands[1];
};
# 931 "../../gcc/tree.h"
struct tree_block
{
struct tree_common common;
unsigned handler_block_flag : 1;
unsigned abstract_flag : 1;
unsigned block_num : 30;
tree vars;
tree subblocks;
tree supercontext;
tree abstract_origin;
tree fragment_origin;
tree fragment_chain;
};
# 1208 "../../gcc/tree.h"
struct tree_type
{
struct tree_common common;
tree values;
tree size;
tree size_unit;
tree attributes;
unsigned int uid;
unsigned int precision : 9;
enum machine_mode mode : 7;
unsigned string_flag : 1;
unsigned no_force_blk_flag : 1;
unsigned needs_constructing_flag : 1;
unsigned transparent_union_flag : 1;
unsigned packed_flag : 1;
unsigned restrict_flag : 1;
unsigned pointer_depth : 2;
unsigned lang_flag_0 : 1;
unsigned lang_flag_1 : 1;
unsigned lang_flag_2 : 1;
unsigned lang_flag_3 : 1;
unsigned lang_flag_4 : 1;
unsigned lang_flag_5 : 1;
unsigned lang_flag_6 : 1;
unsigned user_align : 1;
unsigned int align;
tree pointer_to;
tree reference_to;
union {int address; char *pointer; } symtab;
tree name;
tree minval;
tree maxval;
tree next_variant;
tree main_variant;
tree binfo;
tree context;
long alias_set;
struct lang_type *lang_specific;
};
# 1754 "../../gcc/tree.h"
struct function;
struct tree_decl
{
struct tree_common common;
const char *filename;
int linenum;
unsigned int uid;
tree size;
enum machine_mode mode : 8;
unsigned external_flag : 1;
unsigned nonlocal_flag : 1;
unsigned regdecl_flag : 1;
unsigned inline_flag : 1;
unsigned bit_field_flag : 1;
unsigned virtual_flag : 1;
unsigned ignored_flag : 1;
unsigned abstract_flag : 1;
unsigned in_system_header_flag : 1;
unsigned common_flag : 1;
unsigned defer_output : 1;
unsigned transparent_union : 1;
unsigned static_ctor_flag : 1;
unsigned static_dtor_flag : 1;
unsigned artificial_flag : 1;
unsigned weak_flag : 1;
unsigned non_addr_const_p : 1;
unsigned no_instrument_function_entry_exit : 1;
unsigned comdat_flag : 1;
unsigned malloc_flag : 1;
unsigned no_limit_stack : 1;
enum built_in_class built_in_class : 2;
unsigned pure_flag : 1;
unsigned pointer_depth : 2;
unsigned non_addressable : 1;
unsigned user_align : 1;
unsigned uninlinable : 1;
unsigned lang_flag_0 : 1;
unsigned lang_flag_1 : 1;
unsigned lang_flag_2 : 1;
unsigned lang_flag_3 : 1;
unsigned lang_flag_4 : 1;
unsigned lang_flag_5 : 1;
unsigned lang_flag_6 : 1;
unsigned lang_flag_7 : 1;
union {
enum built_in_function f;
long i;
struct {unsigned int align : 24; unsigned int off_align : 8;} a;
} u1;
tree size_unit;
tree name;
tree context;
tree arguments;
tree result;
tree initial;
tree abstract_origin;
tree assembler_name;
tree section_name;
tree attributes;
rtx rtl;
rtx live_range_rtl;
union {
struct function *f;
rtx r;
tree t;
int i;
} u2;
tree saved_tree;
tree inlined_fns;
tree vindex;
long pointer_alias_set;
struct lang_decl *lang_specific;
};
union tree_node
{
struct tree_common common;
struct tree_int_cst int_cst;
struct tree_real_cst real_cst;
struct tree_vector vector;
struct tree_string string;
struct tree_complex complex;
struct tree_identifier identifier;
struct tree_decl decl;
struct tree_type type;
struct tree_list list;
struct tree_vec vec;
struct tree_exp exp;
struct tree_block block;
};
enum tree_index
{
TI_ERROR_MARK,
TI_INTQI_TYPE,
TI_INTHI_TYPE,
TI_INTSI_TYPE,
TI_INTDI_TYPE,
TI_INTTI_TYPE,
TI_UINTQI_TYPE,
TI_UINTHI_TYPE,
TI_UINTSI_TYPE,
TI_UINTDI_TYPE,
TI_UINTTI_TYPE,
TI_INTEGER_ZERO,
TI_INTEGER_ONE,
TI_INTEGER_MINUS_ONE,
TI_NULL_POINTER,
TI_SIZE_ZERO,
TI_SIZE_ONE,
TI_BITSIZE_ZERO,
TI_BITSIZE_ONE,
TI_BITSIZE_UNIT,
TI_COMPLEX_INTEGER_TYPE,
TI_COMPLEX_FLOAT_TYPE,
TI_COMPLEX_DOUBLE_TYPE,
TI_COMPLEX_LONG_DOUBLE_TYPE,
TI_FLOAT_TYPE,
TI_DOUBLE_TYPE,
TI_LONG_DOUBLE_TYPE,
TI_VOID_TYPE,
TI_PTR_TYPE,
TI_CONST_PTR_TYPE,
TI_PTRDIFF_TYPE,
TI_VA_LIST_TYPE,
TI_VOID_LIST_NODE,
TI_UV4SF_TYPE,
TI_UV4SI_TYPE,
TI_UV8HI_TYPE,
TI_UV8QI_TYPE,
TI_UV4HI_TYPE,
TI_UV2SI_TYPE,
TI_UV2SF_TYPE,
TI_UV16QI_TYPE,
TI_V4SF_TYPE,
TI_V16SF_TYPE,
TI_V4SI_TYPE,
TI_V8HI_TYPE,
TI_V8QI_TYPE,
TI_V4HI_TYPE,
TI_V2SI_TYPE,
TI_V2SF_TYPE,
TI_V16QI_TYPE,
TI_MAIN_IDENTIFIER,
TI_MAX
};
extern tree global_trees[TI_MAX];
# 2020 "../../gcc/tree.h"
enum integer_type_kind
{
itk_char,
itk_signed_char,
itk_unsigned_char,
itk_short,
itk_unsigned_short,
itk_int,
itk_unsigned_int,
itk_long,
itk_unsigned_long,
itk_long_long,
itk_unsigned_long_long,
itk_none
};
typedef enum integer_type_kind integer_type_kind;
extern tree integer_types[itk_none];
# 2059 "../../gcc/tree.h"
extern double approx_sqrt (double);
extern char *permalloc (int);
extern char *expralloc (int);
extern size_t tree_size (tree);
extern tree make_node (enum tree_code);
extern tree make_lang_type (enum tree_code);
extern tree (*make_lang_type_fn) (enum tree_code);
extern tree copy_node (tree);
extern tree copy_list (tree);
extern tree make_tree_vec (int);
extern tree get_identifier (const char *);
extern tree get_identifier_with_length (const char *, unsigned int);
extern tree maybe_get_identifier (const char *);
extern tree build (enum tree_code, tree, ...);
extern tree build_nt (enum tree_code, ...);
extern tree build_int_2_wide (unsigned long, long);
extern tree build_vector (tree, tree);
extern tree build_real (tree, realvaluetype);
extern tree build_real_from_int_cst (tree, tree);
extern tree build_complex (tree, tree, tree);
extern tree build_string (int, const char *);
extern tree build1 (enum tree_code, tree, tree);
extern tree build_tree_list (tree, tree);
extern tree build_decl (enum tree_code, tree, tree);
extern tree build_block (tree, tree, tree, tree, tree);
extern tree build_expr_wfl (tree, const char *, int, int);
extern tree make_signed_type (int);
extern tree make_unsigned_type (int);
extern void initialize_sizetypes (void);
extern void set_sizetype (tree);
extern tree signed_or_unsigned_type (int, tree);
extern void fixup_unsigned_type (tree);
extern tree build_pointer_type (tree);
extern tree build_reference_type (tree);
extern tree build_type_no_quals (tree);
extern tree build_index_type (tree);
extern tree build_index_2_type (tree, tree);
extern tree build_array_type (tree, tree);
extern tree build_function_type (tree, tree);
extern tree build_method_type (tree, tree);
extern tree build_offset_type (tree, tree);
extern tree build_complex_type (tree);
extern tree array_type_nelts (tree);
extern tree value_member (tree, tree);
extern tree purpose_member (tree, tree);
extern tree binfo_member (tree, tree);
extern unsigned int attribute_hash_list (tree);
extern int attribute_list_equal (tree, tree);
extern int attribute_list_contained (tree, tree);
extern int tree_int_cst_equal (tree, tree);
extern int tree_int_cst_lt (tree, tree);
extern int tree_int_cst_compare (tree, tree);
extern int host_integerp (tree, int);
extern long tree_low_cst (tree, int);
extern int tree_int_cst_msb (tree);
extern int tree_int_cst_sgn (tree);
extern int tree_expr_nonnegative_p (tree);
extern int rtl_expr_nonnegative_p (rtx);
extern int index_type_equal (tree, tree);
extern tree get_inner_array_type (tree);
extern tree make_tree (tree, rtx);
extern tree build_type_attribute_variant (tree, tree);
extern tree build_decl_attribute_variant (tree, tree);
struct attribute_spec
{
const char *const name;
const int min_length;
const int max_length;
const _Bool decl_required;
const _Bool type_required;
const _Bool function_type_required;
# 2221 "../../gcc/tree.h"
tree (*const handler) (tree *node, tree name, tree args, int flags, _Bool *no_add_attrs);
};
extern const struct attribute_spec default_target_attribute_table[];
enum attribute_flags
{
ATTR_FLAG_DECL_NEXT = 1,
ATTR_FLAG_FUNCTION_NEXT = 2,
ATTR_FLAG_ARRAY_NEXT = 4,
ATTR_FLAG_TYPE_IN_PLACE = 8,
ATTR_FLAG_BUILT_IN = 16
};
extern tree merge_decl_attributes (tree, tree);
extern tree merge_type_attributes (tree, tree);
extern int default_comp_type_attributes (tree, tree);
extern void default_set_default_type_attributes (tree);
extern void default_insert_attributes (tree, tree *);
extern _Bool default_function_attribute_inlinable_p (tree);
extern _Bool default_ms_bitfield_layout_p (tree);
extern void split_specs_attrs (tree, tree *, tree *);
extern tree strip_attrs (tree);
extern int valid_machine_attribute (tree, tree, tree, tree);
extern int is_attribute_p (const char *, tree);
extern tree lookup_attribute (const char *, tree);
extern tree merge_attributes (tree, tree);
# 2298 "../../gcc/tree.h"
extern tree get_qualified_type (tree, int);
extern tree build_qualified_type (tree, int);
# 2317 "../../gcc/tree.h"
extern tree build_type_copy (tree);
extern void layout_type (tree);
# 2332 "../../gcc/tree.h"
typedef struct record_layout_info_s
{
tree t;
tree offset;
unsigned int offset_align;
tree bitpos;
unsigned int record_align;
unsigned int unpacked_align;
unsigned int unpadded_align;
tree prev_field;
tree pending_statics;
int packed_maybe_necessary;
} *record_layout_info;
extern void set_lang_adjust_rli (void (*) (record_layout_info));
extern record_layout_info start_record_layout (tree);
extern tree bit_from_pos (tree, tree);
extern tree byte_from_pos (tree, tree);
extern void pos_from_byte (tree *, tree *, unsigned int, tree);
extern void pos_from_bit (tree *, tree *, unsigned int, tree);
extern void normalize_offset (tree *, tree *, unsigned int);
extern tree rli_size_unit_so_far (record_layout_info);
extern tree rli_size_so_far (record_layout_info);
extern void normalize_rli (record_layout_info);
extern void place_field (record_layout_info, tree);
extern void compute_record_mode (tree);
extern void finish_record_layout (record_layout_info);
extern tree type_hash_canon (unsigned int, tree);
# 2391 "../../gcc/tree.h"
extern void layout_decl (tree, unsigned);
extern enum machine_mode mode_for_size_tree (tree, enum mode_class, int);
extern tree non_lvalue (tree);
extern tree pedantic_non_lvalue (tree);
extern tree convert (tree, tree);
extern unsigned int expr_align (tree);
extern tree size_in_bytes (tree);
extern long int_size_in_bytes (tree);
extern tree bit_position (tree);
extern long int_bit_position (tree);
extern tree byte_position (tree);
extern long int_byte_position (tree);
enum size_type_kind
{
SIZETYPE,
SSIZETYPE,
USIZETYPE,
BITSIZETYPE,
SBITSIZETYPE,
UBITSIZETYPE,
TYPE_KIND_LAST};
extern tree sizetype_tab[(int) TYPE_KIND_LAST];
# 2437 "../../gcc/tree.h"
extern tree size_binop (enum tree_code, tree, tree);
extern tree size_diffop (tree, tree);
extern tree size_int_wide (long, enum size_type_kind);
extern tree size_int_type_wide (long, tree);
extern tree round_up (tree, int);
extern tree round_down (tree, int);
extern tree get_pending_sizes (void);
extern int is_pending_size (tree);
extern void put_pending_size (tree);
extern void put_pending_sizes (tree);
# 2464 "../../gcc/tree.h"
extern unsigned int maximum_field_alignment;
extern unsigned int set_alignment;
extern tree chainon (tree, tree);
extern tree tree_cons (tree, tree, tree);
extern tree tree_last (tree);
extern tree nreverse (tree);
extern int list_length (tree);
extern int fields_length (tree);
extern int integer_zerop (tree);
extern int integer_onep (tree);
extern int integer_all_onesp (tree);
extern int integer_pow2p (tree);
extern int staticp (tree);
extern int lvalue_or_else (tree, const char *);
extern tree save_expr (tree);
extern int first_rtl_op (enum tree_code);
extern tree unsave_expr (tree);
extern void unsave_expr_1 (tree);
extern tree unsave_expr_now (tree);
extern void (*lang_unsave) (tree *);
extern void (*lang_unsave_expr_now) (tree);
extern int unsafe_for_reeval (tree);
extern int (*lang_unsafe_for_reeval) (tree);
extern int contains_placeholder_p (tree);
extern int has_cleanups (tree);
extern tree substitute_in_expr (tree, tree, tree);
extern tree variable_size (tree);
extern tree stabilize_reference (tree);
extern tree stabilize_reference_1 (tree);
extern tree get_unwidened (tree, tree);
extern tree get_narrower (tree, int *);
extern tree type_for_mode (enum machine_mode, int);
extern tree type_for_size (unsigned, int);
extern tree unsigned_type (tree);
extern tree signed_type (tree);
extern tree maybe_build_cleanup (tree);
extern tree get_inner_reference (tree, long *, long *, tree *, enum machine_mode *, int *, int *);
extern int handled_component_p (tree);
extern tree get_containing_scope (tree);
extern tree decl_function_context (tree);
extern tree decl_type_context (tree);
extern const char *function_cannot_inline_p (tree);
extern int real_zerop (tree);
extern const char *input_filename;
extern int lineno;
extern int pedantic_lvalues;
extern int immediate_size_expand;
extern tree current_function_decl;
extern tree current_function_func_begin_label;
extern int all_types_permanent;
# 2729 "../../gcc/tree.h"
extern const char *(*decl_printable_name) (tree, int);
extern void (*incomplete_decl_finalize_hook) (tree);
extern tree builtin_function (const char *, tree, int, enum built_in_class, const char *);
extern char *perm_calloc (int, long);
extern void clean_symbol_name (char *);
extern tree get_file_function_name_long (const char *);
extern tree get_set_constructor_bits (tree, char *, int);
extern tree get_set_constructor_bytes (tree, unsigned char *, int);
extern tree get_callee_fndecl (tree);
extern void set_decl_assembler_name (tree);
extern int type_num_arguments (tree);
extern int in_control_zone_p (void);
extern void expand_fixups (rtx);
extern tree expand_start_stmt_expr (int);
extern tree expand_end_stmt_expr (tree);
extern void expand_expr_stmt (tree);
extern void expand_expr_stmt_value (tree, int, int);
extern int warn_if_unused_value (tree);
extern void expand_decl_init (tree);
extern void clear_last_expr (void);
extern void expand_label (tree);
extern void expand_goto (tree);
extern void expand_asm (tree);
extern void expand_start_cond (tree, int);
extern void expand_end_cond (void);
extern void expand_start_else (void);
extern void expand_start_elseif (tree);
extern struct nesting *expand_start_loop (int);
extern struct nesting *expand_start_loop_continue_elsewhere (int);
extern struct nesting *expand_start_null_loop (void);
extern void expand_loop_continue_here (void);
extern void expand_end_loop (void);
extern void expand_end_null_loop (void);
extern int expand_continue_loop (struct nesting *);
extern int expand_exit_loop (struct nesting *);
extern int expand_exit_loop_if_false (struct nesting *, tree);
extern int expand_exit_loop_top_cond (struct nesting *, tree);
extern int expand_exit_something (void);
extern void expand_return (tree);
extern int optimize_tail_recursion (tree, rtx);
extern void expand_start_bindings_and_block (int, tree);
extern void expand_end_bindings (tree, int, int);
extern void warn_about_unused_variables (tree);
extern void start_cleanup_deferral (void);
extern void end_cleanup_deferral (void);
extern int is_body_block (tree);
extern int conditional_context (void);
extern struct nesting * current_nesting_level (void);
extern tree last_cleanup_this_contour (void);
extern void expand_start_case (int, tree, tree, const char *);
extern void expand_end_case_type (tree, tree);
extern int add_case_node (tree, tree, tree, tree *);
extern int pushcase (tree, tree (*) (tree, tree), tree, tree *);
extern int pushcase_range (tree, tree, tree (*) (tree, tree), tree, tree *);
extern void using_eh_for_cleanups (void);
extern int stmt_loop_nest_empty (void);
# 2822 "../../gcc/tree.h"
extern tree fold (tree);
extern int force_fit_type (tree, int);
extern int add_double (unsigned long, long, unsigned long, long, unsigned long *, long *);
extern int neg_double (unsigned long, long, unsigned long *, long *);
extern int mul_double (unsigned long, long, unsigned long, long, unsigned long *, long *);
extern void lshift_double (unsigned long, long, long, unsigned int, unsigned long *, long *, int);
extern void rshift_double (unsigned long, long, long, unsigned int, unsigned long *, long *, int);
extern void lrotate_double (unsigned long, long, long, unsigned int, unsigned long *, long *);
extern void rrotate_double (unsigned long, long, long, unsigned int, unsigned long *, long *);
extern int operand_equal_p (tree, tree, int);
extern tree invert_truthvalue (tree);
extern tree (*lang_type_promotes_to) (tree);
extern tree fold_builtin (tree);
extern void copy_lang_decl (tree);
extern int yyparse (void);
extern void pushlevel (int);
extern tree poplevel (int, int, int);
extern void set_block (tree);
extern tree pushdecl (tree);
extern tree getdecls (void);
extern tree gettags (void);
extern tree build_range_type (tree, tree, tree);
extern void record_component_aliases (tree);
extern long get_alias_set (tree);
extern int alias_sets_conflict_p (long, long);
extern int readonly_fields_p (tree);
extern int objects_must_conflict_p (tree, tree);
extern void (*lang_set_decl_assembler_name) (tree);
struct obstack;
extern int really_constant_p (tree);
extern int int_fits_type_p (tree, tree);
extern int tree_log2 (tree);
extern int tree_floor_log2 (tree);
extern void preserve_data (void);
extern int object_permanent_p (tree);
extern int type_precision (tree);
extern int simple_cst_equal (tree, tree);
extern int compare_tree_int (tree, unsigned long);
extern int type_list_equal (tree, tree);
extern int chain_member (tree, tree);
extern int chain_member_purpose (tree, tree);
extern int chain_member_value (tree, tree);
extern tree listify (tree);
extern tree type_hash_lookup (unsigned int, tree);
extern void type_hash_add (unsigned int, tree);
extern unsigned int type_hash_list (tree);
extern int simple_cst_list_equal (tree, tree);
extern void dump_tree_statistics (void);
extern void print_obstack_statistics (const char *, struct obstack *);
extern void print_obstack_name (char *, FILE *, const char *);
extern void expand_function_end (const char *, int, int);
extern void expand_function_start (tree, int);
extern void expand_pending_sizes (tree);
extern int real_onep (tree);
extern int real_twop (tree);
extern void gcc_obstack_init (struct obstack *);
extern void init_obstacks (void);
extern void build_common_tree_nodes (int);
extern void build_common_tree_nodes_2 (int);
extern void mark_tree_hashtable (void *);
extern void setjmp_protect_args (void);
extern void setjmp_protect (tree);
extern void expand_main_function (void);
extern void mark_varargs (void);
extern void init_dummy_function_start (void);
extern void expand_dummy_function_end (void);
extern void init_function_for_compilation (void);
extern void init_function_start (tree, const char *, int);
extern void assign_parms (tree);
extern void put_var_into_stack (tree);
extern void flush_addressof (tree);
extern void uninitialized_vars_warning (tree);
extern void setjmp_args_warning (void);
extern void mark_all_temps_used (void);
extern void init_temp_slots (void);
extern void combine_temp_slots (void);
extern void free_temp_slots (void);
extern void pop_temp_slots (void);
extern void push_temp_slots (void);
extern void preserve_temp_slots (rtx);
extern void preserve_rtl_expr_temps (tree);
extern int aggregate_value_p (tree);
extern void free_temps_for_rtl_expr (tree);
extern void instantiate_virtual_regs (tree, rtx);
extern void unshare_all_rtl (tree, rtx);
extern int max_parm_reg_num (void);
extern void push_function_context (void);
extern void pop_function_context (void);
extern void push_function_context_to (tree);
extern void pop_function_context_from (tree);
extern void ggc_mark_struct_function (struct function *);
extern void print_rtl (FILE *, rtx);
extern void debug_tree (tree);
extern void print_node (FILE *, const char *, tree, int);
extern void print_node_brief (FILE *, const char *, tree, int);
extern void indent_to (FILE *, int);
extern int apply_args_register_offset (int);
extern rtx expand_builtin_return_addr
(enum built_in_function, int, rtx);
extern void check_max_integer_computation_mode (tree);
extern void start_sequence_for_rtl_expr (tree);
extern rtx emit_line_note (const char *, int);
extern int setjmp_call_p (tree);
# 3022 "../../gcc/tree.h"
extern tree decl_attributes (tree *, tree, int);
extern void insert_default_attributes (tree);
extern const struct attribute_spec *format_attribute_table;
extern const struct attribute_spec *lang_attribute_table;
extern int lang_attribute_common;
extern int mark_addressable (tree);
extern void incomplete_type_error (tree, tree);
extern tree truthvalue_conversion (tree);
extern int global_bindings_p (void);
extern void insert_block (tree);
extern void save_for_inline (tree);
extern void set_decl_abstract_flags (tree, int);
extern void output_inline_function (tree);
extern void set_decl_origin_self (tree);
extern void fixup_signed_type (tree);
extern void internal_reference_types (void);
extern void make_decl_rtl (tree, const char *);
extern void make_decl_one_only (tree);
extern int supports_one_only (void);
extern void variable_section (tree, int);
extern int div_and_round_double (enum tree_code, int, unsigned long, long, unsigned long, long, unsigned long *, long *, unsigned long *, long *);
# 3076 "../../gcc/tree.h"
extern void emit_nop (void);
extern void expand_computed_goto (tree);
extern _Bool parse_output_constraint (const char **, int, int, int, _Bool *, _Bool *, _Bool *);
extern void expand_asm_operands (tree, tree, tree, tree, int, const char *, int);
extern int any_pending_cleanups (int);
extern void init_stmt (void);
extern void init_stmt_for_function (void);
extern int drop_through_at_end_p (void);
extern void expand_start_target_temps (void);
extern void expand_end_target_temps (void);
extern void expand_elseif (tree);
extern void save_stack_pointer (void);
extern void expand_decl (tree);
extern int expand_decl_cleanup (tree, tree);
extern int expand_decl_cleanup_eh (tree, tree, int);
extern void expand_anon_union_decl (tree, tree, tree);
extern void move_cleanups_up (void);
extern void expand_start_case_dummy (void);
extern void expand_end_case_dummy (void);
extern tree case_index_expr_type (void);
extern long all_cases_count (tree, int *);
extern void check_for_full_enumeration_handling (tree);
extern void declare_nonlocal_label (tree);
extern tree get_file_function_name (int);
extern char *dwarf2out_cfi_label (void);
extern void dwarf2out_def_cfa (const char *, unsigned, long);
extern void dwarf2out_window_save (const char *);
extern void dwarf2out_args_size (const char *, long);
extern void dwarf2out_reg_save (const char *, unsigned, long);
extern void dwarf2out_return_save (const char *, long);
extern void dwarf2out_return_reg (const char *, unsigned);
typedef tree (*walk_tree_fn) (tree *, int *, void *);
enum tree_dump_index
{
TDI_all,
TDI_class,
TDI_original,
TDI_optimized,
TDI_inlined,
TDI_end
};
typedef struct dump_info *dump_info_p;
extern int dump_flag (dump_info_p, int, tree);
extern int dump_enabled_p (enum tree_dump_index);
extern FILE *dump_begin (enum tree_dump_index, int *);
extern void dump_end (enum tree_dump_index, FILE *);
extern void dump_node (tree, int, FILE *);
extern int dump_switch_p (const char *);
extern const char *dump_flag_name (enum tree_dump_index);
# 3180 "../../gcc/tree.h"
extern void fancy_abort (const char *, int, const char *)
__attribute__ ((__noreturn__));
# 34 "../../gcc/predict.c" 2
# 1 "../../gcc/rtl.h" 1
# 25 "../../gcc/rtl.h"
struct function;
# 1 "../../gcc/machmode.h" 1
# 28 "../../gcc/rtl.h" 2
# 41 "../../gcc/rtl.h"
enum rtx_code {
# 1 "../../gcc/rtl.def" 1
# 70 "../../gcc/rtl.def"
UNKNOWN ,
NIL ,
INCLUDE ,
EXPR_LIST ,
INSN_LIST ,
# 129 "../../gcc/rtl.def"
MATCH_OPERAND ,
MATCH_SCRATCH ,
MATCH_DUP ,
MATCH_OPERATOR ,
# 158 "../../gcc/rtl.def"
MATCH_PARALLEL ,
MATCH_OP_DUP ,
MATCH_PAR_DUP ,
MATCH_INSN ,
# 192 "../../gcc/rtl.def"
DEFINE_INSN ,
DEFINE_PEEPHOLE ,
# 211 "../../gcc/rtl.def"
DEFINE_SPLIT ,
# 239 "../../gcc/rtl.def"
DEFINE_INSN_AND_SPLIT ,
DEFINE_PEEPHOLE2 ,
DEFINE_COMBINE ,
# 260 "../../gcc/rtl.def"
DEFINE_EXPAND ,
# 276 "../../gcc/rtl.def"
DEFINE_DELAY ,
# 317 "../../gcc/rtl.def"
DEFINE_FUNCTION_UNIT ,
DEFINE_ASM_ATTRIBUTES ,
# 333 "../../gcc/rtl.def"
DEFINE_COND_EXEC ,
SEQUENCE ,
ADDRESS ,
# 353 "../../gcc/rtl.def"
DEFINE_ATTR ,
ATTR ,
SET_ATTR ,
# 379 "../../gcc/rtl.def"
SET_ATTR_ALTERNATIVE ,
EQ_ATTR ,
# 394 "../../gcc/rtl.def"
ATTR_FLAG ,
# 407 "../../gcc/rtl.def"
INSN ,
JUMP_INSN ,
CALL_INSN ,
BARRIER ,
# 430 "../../gcc/rtl.def"
CODE_LABEL ,
NOTE ,
# 450 "../../gcc/rtl.def"
COND_EXEC ,
PARALLEL ,
ASM_INPUT ,
# 475 "../../gcc/rtl.def"
ASM_OPERANDS ,
# 486 "../../gcc/rtl.def"
UNSPEC ,
UNSPEC_VOLATILE ,
ADDR_VEC ,
# 518 "../../gcc/rtl.def"
ADDR_DIFF_VEC ,
# 529 "../../gcc/rtl.def"
PREFETCH ,
# 541 "../../gcc/rtl.def"
SET ,
USE ,
CLOBBER ,
CALL ,
RETURN ,
TRAP_IF ,
RESX ,
CONST_INT ,
CONST_DOUBLE ,
CONST_VECTOR ,
CONST_STRING ,
CONST ,
PC ,
VALUE ,
# 614 "../../gcc/rtl.def"
REG ,
SCRATCH ,
# 631 "../../gcc/rtl.def"
SUBREG ,
# 644 "../../gcc/rtl.def"
STRICT_LOW_PART ,
CONCAT ,
MEM ,
LABEL_REF ,
SYMBOL_REF ,
CC0 ,
# 683 "../../gcc/rtl.def"
ADDRESSOF ,
# 701 "../../gcc/rtl.def"
QUEUED ,
# 713 "../../gcc/rtl.def"
IF_THEN_ELSE ,
# 722 "../../gcc/rtl.def"
COND ,
COMPARE ,
PLUS ,
MINUS ,
NEG ,
MULT ,
DIV ,
MOD ,
UDIV ,
UMOD ,
AND ,
IOR ,
XOR ,
NOT ,
ASHIFT ,
ROTATE ,
ASHIFTRT ,
LSHIFTRT ,
ROTATERT ,
SMIN ,
SMAX ,
UMIN ,
UMAX ,
# 781 "../../gcc/rtl.def"
PRE_DEC ,
PRE_INC ,
POST_DEC ,
POST_INC ,
# 798 "../../gcc/rtl.def"
PRE_MODIFY ,
POST_MODIFY ,
NE ,
EQ ,
GE ,
GT ,
LE ,
LT ,
GEU ,
GTU ,
LEU ,
LTU ,
UNORDERED ,
ORDERED ,
UNEQ ,
UNGE ,
UNGT ,
UNLE ,
UNLT ,
LTGT ,
SIGN_EXTEND ,
ZERO_EXTEND ,
TRUNCATE ,
FLOAT_EXTEND ,
FLOAT_TRUNCATE ,
FLOAT ,
FIX ,
UNSIGNED_FLOAT ,
UNSIGNED_FIX ,
ABS ,
SQRT ,
FFS ,
# 882 "../../gcc/rtl.def"
SIGN_EXTRACT ,
ZERO_EXTRACT ,
HIGH ,
LO_SUM ,
# 907 "../../gcc/rtl.def"
RANGE_INFO ,
# 922 "../../gcc/rtl.def"
RANGE_REG ,
RANGE_VAR ,
RANGE_LIVE ,
CONSTANT_P_RTX ,
# 958 "../../gcc/rtl.def"
CALL_PLACEHOLDER ,
VEC_MERGE ,
VEC_SELECT ,
VEC_CONCAT ,
VEC_DUPLICATE ,
SS_PLUS ,
US_PLUS ,
SS_MINUS ,
US_MINUS ,
SS_TRUNCATE ,
US_TRUNCATE ,
# 1014 "../../gcc/rtl.def"
PHI ,
# 45 "../../gcc/rtl.h" 2
LAST_AND_UNUSED_RTX_CODE};
extern const unsigned char rtx_length[((int) LAST_AND_UNUSED_RTX_CODE)];
extern const char * const rtx_name[((int) LAST_AND_UNUSED_RTX_CODE)];
extern const char * const rtx_format[((int) LAST_AND_UNUSED_RTX_CODE)];
extern const char rtx_class[((int) LAST_AND_UNUSED_RTX_CODE)];
typedef struct
{
unsigned min_align: 8;
unsigned base_after_vec: 1;
unsigned min_after_vec: 1;
unsigned max_after_vec: 1;
unsigned min_after_base: 1;
unsigned max_after_base: 1;
unsigned offset_unsigned: 1;
unsigned : 2;
unsigned scale : 8;
} addr_diff_vec_flags;
typedef struct
{
long alias;
tree expr;
rtx offset;
rtx size;
unsigned int align;
} mem_attrs;
typedef union rtunion_def
{
long rtwint;
int rtint;
unsigned int rtuint;
const char *rtstr;
rtx rtx;
rtvec rtvec;
enum machine_mode rttype;
addr_diff_vec_flags rt_addr_diff_vec_flags;
struct cselib_val_struct *rt_cselib;
struct bitmap_head_def *rtbit;
tree rttree;
struct basic_block_def *bb;
mem_attrs *rtmem;
} rtunion;
struct rtx_def
{
enum rtx_code code: 16;
enum machine_mode mode : 8;
unsigned int jump : 1;
unsigned int call : 1;
# 149 "../../gcc/rtl.h"
unsigned int unchanging : 1;
unsigned int volatil : 1;
# 175 "../../gcc/rtl.h"
unsigned int in_struct : 1;
unsigned int used : 1;
unsigned integrated : 1;
# 196 "../../gcc/rtl.h"
unsigned frame_related : 1;
rtunion fld[1];
};
# 222 "../../gcc/rtl.h"
struct rtvec_def {
int num_elem;
rtx elem[1];
};
# 451 "../../gcc/rtl.h"
enum reg_note
{
REG_DEAD = 1,
REG_INC,
# 470 "../../gcc/rtl.h"
REG_EQUIV,
REG_EQUAL,
REG_WAS_0,
REG_RETVAL,
REG_LIBCALL,
REG_NONNEG,
REG_NO_CONFLICT,
REG_UNUSED,
# 515 "../../gcc/rtl.h"
REG_CC_SETTER, REG_CC_USER,
REG_LABEL,
REG_DEP_ANTI, REG_DEP_OUTPUT,
REG_BR_PROB,
REG_EXEC_COUNT,
REG_NOALIAS,
REG_SAVE_AREA,
REG_BR_PRED,
REG_FRAME_RELATED_EXPR,
REG_EH_CONTEXT,
REG_EH_REGION,
REG_SAVE_NOTE,
REG_MAYBE_DEAD,
REG_NORETURN,
REG_NON_LOCAL_GOTO,
REG_SETJMP,
REG_ALWAYS_RETURN,
REG_VTABLE_REF
};
# 607 "../../gcc/rtl.h"
extern const char * const reg_note_name[];
# 663 "../../gcc/rtl.h"
enum insn_note
{
NOTE_INSN_BIAS = -100,
NOTE_INSN_DELETED,
NOTE_INSN_BLOCK_BEG,
NOTE_INSN_BLOCK_END,
NOTE_INSN_LOOP_BEG,
NOTE_INSN_LOOP_END,
NOTE_INSN_LOOP_CONT,
NOTE_INSN_LOOP_VTOP,
NOTE_INSN_LOOP_END_TOP_COND,
NOTE_INSN_FUNCTION_END,
NOTE_INSN_PROLOGUE_END,
NOTE_INSN_EPILOGUE_BEG,
NOTE_INSN_DELETED_LABEL,
NOTE_INSN_FUNCTION_BEG,
NOTE_INSN_EH_REGION_BEG,
NOTE_INSN_EH_REGION_END,
NOTE_INSN_REPEATED_LINE_NUMBER,
NOTE_INSN_RANGE_BEG,
NOTE_INSN_RANGE_END,
NOTE_INSN_LIVE,
NOTE_INSN_BASIC_BLOCK,
NOTE_INSN_EXPECTED_VALUE,
NOTE_INSN_MAX
};
extern const char * const note_insn_name[NOTE_INSN_MAX - NOTE_INSN_BIAS];
# 840 "../../gcc/rtl.h"
extern unsigned int subreg_lsb (rtx);
extern unsigned int subreg_regno_offset (unsigned int, enum machine_mode, unsigned int, enum machine_mode);
extern unsigned int subreg_regno (rtx);
# 1211 "../../gcc/rtl.h"
extern int rtx_equal_function_value_matters;
extern int generating_concat_p;
extern int ceil_log2 (unsigned long);
extern rtx expand_builtin_expect_jump (tree, rtx, rtx);
extern void set_stack_check_libfunc (rtx);
extern long trunc_int_for_mode (long, enum machine_mode);
extern rtx plus_constant_wide (rtx, long);
extern rtx plus_constant_for_output_wide (rtx, long);
extern void optimize_save_area_alloca (rtx);
extern rtx gen_rtx (enum rtx_code, enum machine_mode, ...);
extern rtvec gen_rtvec (int, ...);
extern rtx copy_insn_1 (rtx);
extern rtx copy_insn (rtx);
extern rtx gen_int_mode (long, enum machine_mode);
extern rtx rtx_alloc (enum rtx_code);
extern rtvec rtvec_alloc (int);
extern rtx copy_rtx (rtx);
extern rtx copy_rtx_if_shared (rtx);
extern rtx copy_most_rtx (rtx, rtx);
extern rtx shallow_copy_rtx (rtx);
extern int rtx_equal_p (rtx, rtx);
extern rtvec gen_rtvec_v (int, rtx *);
extern rtx gen_reg_rtx (enum machine_mode);
extern rtx gen_label_rtx (void);
extern int subreg_hard_regno (rtx, int);
extern rtx gen_lowpart_common (enum machine_mode, rtx);
extern rtx gen_lowpart (enum machine_mode, rtx);
extern rtx gen_lowpart_if_possible (enum machine_mode, rtx);
extern rtx gen_highpart (enum machine_mode, rtx);
extern rtx gen_highpart_mode (enum machine_mode, enum machine_mode, rtx);
extern rtx gen_realpart (enum machine_mode, rtx);
extern rtx gen_imagpart (enum machine_mode, rtx);
extern rtx operand_subword (rtx, unsigned int, int, enum machine_mode);
extern rtx constant_subword (rtx, int, enum machine_mode);
extern rtx operand_subword_force (rtx, unsigned int, enum machine_mode);
extern int subreg_lowpart_p (rtx);
extern unsigned int subreg_lowpart_offset (enum machine_mode, enum machine_mode);
extern unsigned int subreg_highpart_offset (enum machine_mode, enum machine_mode);
extern rtx make_safe_from (rtx, rtx);
extern rtx convert_memory_address (enum machine_mode, rtx);
extern rtx get_insns (void);
extern const char *get_insn_name (int);
extern rtx get_last_insn (void);
extern rtx get_last_insn_anywhere (void);
extern void start_sequence (void);
extern void push_to_sequence (rtx);
extern void end_sequence (void);
extern void push_to_full_sequence (rtx, rtx);
extern void end_full_sequence (rtx*, rtx*);
extern rtx gen_sequence (void);
extern rtx immed_double_const (long, long, enum machine_mode);
extern rtx mem_for_const_double (rtx);
extern rtx force_const_mem (enum machine_mode, rtx);
extern rtx get_pool_constant (rtx);
extern rtx get_pool_constant_mark (rtx, _Bool *);
extern enum machine_mode get_pool_mode (rtx);
extern rtx get_pool_constant_for_function (struct function *, rtx);
extern enum machine_mode get_pool_mode_for_function (struct function *, rtx);
extern int get_pool_offset (rtx);
extern rtx simplify_subtraction (rtx);
extern rtx assign_stack_local (enum machine_mode, long, int);
extern rtx assign_stack_temp (enum machine_mode, long, int);
extern rtx assign_stack_temp_for_type (enum machine_mode, long, int, tree);
extern rtx assign_temp (tree, int, int, int);
extern rtx emit_insn_before (rtx, rtx);
extern rtx emit_jump_insn_before (rtx, rtx);
extern rtx emit_call_insn_before (rtx, rtx);
extern rtx emit_barrier_before (rtx);
extern rtx emit_label_before (rtx, rtx);
extern rtx emit_note_before (int, rtx);
extern rtx emit_insn_after (rtx, rtx);
extern rtx emit_jump_insn_after (rtx, rtx);
extern rtx emit_barrier_after (rtx);
extern rtx emit_label_after (rtx, rtx);
extern rtx emit_note_after (int, rtx);
extern rtx emit_line_note_after (const char *, int, rtx);
extern rtx emit_insn (rtx);
extern rtx emit_insns (rtx);
extern rtx emit_insns_before (rtx, rtx);
extern rtx emit_insns_after (rtx, rtx);
extern rtx emit_jump_insn (rtx);
extern rtx emit_call_insn (rtx);
extern rtx emit_label (rtx);
extern rtx emit_barrier (void);
extern rtx emit_line_note (const char *, int);
extern rtx emit_note (const char *, int);
extern rtx emit_line_note_force (const char *, int);
extern rtx make_insn_raw (rtx);
extern rtx previous_insn (rtx);
extern rtx next_insn (rtx);
extern rtx prev_nonnote_insn (rtx);
extern rtx next_nonnote_insn (rtx);
extern rtx prev_real_insn (rtx);
extern rtx next_real_insn (rtx);
extern rtx prev_active_insn (rtx);
extern rtx next_active_insn (rtx);
extern int active_insn_p (rtx);
extern rtx prev_label (rtx);
extern rtx next_label (rtx);
extern rtx next_cc0_user (rtx);
extern rtx prev_cc0_setter (rtx);
extern rtx next_nondeleted_insn (rtx);
extern enum rtx_code reverse_condition (enum rtx_code);
extern enum rtx_code reverse_condition_maybe_unordered (enum rtx_code);
extern enum rtx_code swap_condition (enum rtx_code);
extern enum rtx_code unsigned_condition (enum rtx_code);
extern enum rtx_code signed_condition (enum rtx_code);
extern void mark_jump_label (rtx, rtx, int);
extern void cleanup_barriers (void);
extern _Bool squeeze_notes (rtx *, rtx *);
extern rtx delete_related_insns (rtx);
extern void delete_jump (rtx);
extern void delete_barrier (rtx);
extern rtx get_label_before (rtx);
extern rtx get_label_after (rtx);
extern rtx follow_jumps (rtx);
extern rtx *find_constant_term_loc (rtx *);
extern rtx try_split (rtx, rtx, int);
extern int split_branch_probability;
extern rtx split_insns (rtx, rtx);
extern rtx simplify_unary_operation (enum rtx_code, enum machine_mode, rtx, enum machine_mode);
extern rtx simplify_binary_operation (enum rtx_code, enum machine_mode, rtx, rtx);
extern rtx simplify_ternary_operation (enum rtx_code, enum machine_mode, enum machine_mode, rtx, rtx, rtx);
extern rtx simplify_relational_operation (enum rtx_code, enum machine_mode, rtx, rtx);
extern rtx simplify_gen_binary (enum rtx_code, enum machine_mode, rtx, rtx);
extern rtx simplify_gen_unary (enum rtx_code, enum machine_mode, rtx, enum machine_mode);
extern rtx simplify_gen_ternary (enum rtx_code, enum machine_mode, enum machine_mode, rtx, rtx, rtx);
extern rtx simplify_gen_relational (enum rtx_code, enum machine_mode, enum machine_mode, rtx, rtx);
extern rtx simplify_subreg (enum machine_mode, rtx, enum machine_mode, unsigned int);
extern rtx simplify_gen_subreg (enum machine_mode, rtx, enum machine_mode, unsigned int);
extern rtx simplify_replace_rtx (rtx, rtx, rtx);
extern rtx simplify_rtx (rtx);
extern rtx avoid_constant_pool_reference (rtx);
extern rtx gen_mem_addressof (rtx, tree);
extern enum machine_mode choose_hard_reg_mode (unsigned int, unsigned int);
extern rtx set_unique_reg_note (rtx, enum reg_note, rtx);
# 1448 "../../gcc/rtl.h"
extern int rtx_addr_can_trap_p (rtx);
extern int rtx_unstable_p (rtx);
extern int rtx_varies_p (rtx, int);
extern int rtx_addr_varies_p (rtx, int);
extern long get_integer_term (rtx);
extern rtx get_related_value (rtx);
extern rtx get_jump_table_offset (rtx, rtx *);
extern int reg_mentioned_p (rtx, rtx);
extern int count_occurrences (rtx, rtx, int);
extern int reg_referenced_p (rtx, rtx);
extern int reg_used_between_p (rtx, rtx, rtx);
extern int reg_referenced_between_p (rtx, rtx, rtx);
extern int reg_set_between_p (rtx, rtx, rtx);
extern int regs_set_between_p (rtx, rtx, rtx);
extern int commutative_operand_precedence (rtx);
extern int swap_commutative_operands_p (rtx, rtx);
extern int modified_between_p (rtx, rtx, rtx);
extern int no_labels_between_p (rtx, rtx);
extern int no_jumps_between_p (rtx, rtx);
extern int modified_in_p (rtx, rtx);
extern int insn_dependent_p (rtx, rtx);
extern int reg_set_p (rtx, rtx);
extern rtx single_set_2 (rtx, rtx);
extern int multiple_sets (rtx);
extern int set_noop_p (rtx);
extern int noop_move_p (rtx);
extern rtx find_last_value (rtx, rtx *, rtx, int);
extern int refers_to_regno_p (unsigned int, unsigned int, rtx, rtx *);
extern int reg_overlap_mentioned_p (rtx, rtx);
extern rtx set_of (rtx, rtx);
extern void note_stores (rtx, void (*) (rtx, rtx, void *), void *);
extern void note_uses (rtx *, void (*) (rtx *, void *), void *);
extern rtx reg_set_last (rtx, rtx);
extern int dead_or_set_p (rtx, rtx);
extern int dead_or_set_regno_p (rtx, unsigned int);
extern rtx find_reg_note (rtx, enum reg_note, rtx);
extern rtx find_regno_note (rtx, enum reg_note, unsigned int);
extern rtx find_reg_equal_equiv_note (rtx);
extern int find_reg_fusage (rtx, enum rtx_code, rtx);
extern int find_regno_fusage (rtx, enum rtx_code, unsigned int);
extern int pure_call_p (rtx);
extern void remove_note (rtx, rtx);
extern int side_effects_p (rtx);
extern int volatile_refs_p (rtx);
extern int volatile_insn_p (rtx);
extern int may_trap_p (rtx);
extern int inequality_comparisons_p (rtx);
extern rtx replace_rtx (rtx, rtx, rtx);
extern rtx replace_regs (rtx, rtx *, unsigned int, int);
extern int computed_jump_p (rtx);
typedef int (*rtx_function) (rtx *, void *);
extern int for_each_rtx (rtx *, rtx_function, void *);
extern rtx regno_use_in (unsigned int, rtx);
extern int auto_inc_p (rtx);
extern int in_expr_list_p (rtx, rtx);
extern void remove_node_from_expr_list (rtx, rtx *);
extern int insns_safe_to_move_p (rtx, rtx, rtx *);
extern int loc_mentioned_in_p (rtx *, rtx);
extern rtx find_first_parameter_load (rtx, rtx);
extern rtx find_use_as_address (rtx, rtx, long);
void init_EXPR_INSN_LIST_cache (void);
void free_EXPR_LIST_list (rtx *);
void free_INSN_LIST_list (rtx *);
void free_EXPR_LIST_node (rtx);
void free_INSN_LIST_node (rtx);
rtx alloc_INSN_LIST (rtx, rtx);
rtx alloc_EXPR_LIST (int, rtx, rtx);
extern int max_parallel;
extern void free_reg_info (void);
extern int asm_noperands (rtx);
extern const char *decode_asm_operands (rtx, rtx *, rtx **, const char **, enum machine_mode *);
extern enum reg_class reg_preferred_class (int);
extern enum reg_class reg_alternate_class (int);
extern rtx get_first_nonparm_insn (void);
extern void split_all_insns (int);
extern void split_all_insns_noflow (void);
extern rtx const_int_rtx[64 * 2 + 1];
extern rtx const_true_rtx;
extern rtx const_tiny_rtx[3][(int) MAX_MACHINE_MODE];
# 1584 "../../gcc/rtl.h"
enum global_rtl_index
{
GR_PC,
GR_CC0,
GR_STACK_POINTER,
GR_FRAME_POINTER,
# 1599 "../../gcc/rtl.h"
GR_HARD_FRAME_POINTER,
GR_ARG_POINTER,
GR_VIRTUAL_INCOMING_ARGS,
GR_VIRTUAL_STACK_ARGS,
GR_VIRTUAL_STACK_DYNAMIC,
GR_VIRTUAL_OUTGOING_ARGS,
GR_VIRTUAL_CFA,
GR_MAX
};
extern rtx global_rtl[GR_MAX];
# 1632 "../../gcc/rtl.h"
extern rtx pic_offset_table_rtx;
extern rtx struct_value_rtx;
extern rtx struct_value_incoming_rtx;
extern rtx static_chain_rtx;
extern rtx static_chain_incoming_rtx;
extern rtx return_address_pointer_rtx;
# 1 "genrtl.h" 1
extern rtx gen_rtx_fmt_s (enum rtx_code, enum machine_mode mode, const char *arg0);
extern rtx gen_rtx_fmt_ee (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1);
extern rtx gen_rtx_fmt_ue (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1);
extern rtx gen_rtx_fmt_iss (enum rtx_code, enum machine_mode mode, int arg0, const char *arg1, const char *arg2);
extern rtx gen_rtx_fmt_is (enum rtx_code, enum machine_mode mode, int arg0, const char *arg1);
extern rtx gen_rtx_fmt_i (enum rtx_code, enum machine_mode mode, int arg0);
extern rtx gen_rtx_fmt_isE (enum rtx_code, enum machine_mode mode, int arg0, const char *arg1, rtvec arg2);
extern rtx gen_rtx_fmt_iE (enum rtx_code, enum machine_mode mode, int arg0, rtvec arg1);
extern rtx gen_rtx_fmt_Ess (enum rtx_code, enum machine_mode mode, rtvec arg0, const char *arg1, const char *arg2);
extern rtx gen_rtx_fmt_sEss (enum rtx_code, enum machine_mode mode, const char *arg0, rtvec arg1, const char *arg2, const char *arg3);
extern rtx gen_rtx_fmt_eE (enum rtx_code, enum machine_mode mode, rtx arg0, rtvec arg1);
extern rtx gen_rtx_fmt_E (enum rtx_code, enum machine_mode mode, rtvec arg0);
extern rtx gen_rtx_fmt_e (enum rtx_code, enum machine_mode mode, rtx arg0);
extern rtx gen_rtx_fmt_sse (enum rtx_code, enum machine_mode mode, const char *arg0, const char *arg1, rtx arg2);
extern rtx gen_rtx_fmt_ss (enum rtx_code, enum machine_mode mode, const char *arg0, const char *arg1);
extern rtx gen_rtx_fmt_sE (enum rtx_code, enum machine_mode mode, const char *arg0, rtvec arg1);
extern rtx gen_rtx_fmt_iuueiee (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, rtx arg3, int arg4, rtx arg5, rtx arg6);
extern rtx gen_rtx_fmt_iuueiee0 (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, rtx arg3, int arg4, rtx arg5, rtx arg6);
extern rtx gen_rtx_fmt_iuueieee (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, rtx arg3, int arg4, rtx arg5, rtx arg6, rtx arg7);
extern rtx gen_rtx_fmt_iuu (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2);
extern rtx gen_rtx_fmt_iuu00iss (enum rtx_code, enum machine_mode mode, int arg0, rtx arg1, rtx arg2, int arg3, const char *arg4, const char *arg5);
extern rtx gen_rtx_fmt_ssiEEsi (enum rtx_code, enum machine_mode mode, const char *arg0, const char *arg1, int arg2, rtvec arg3, rtvec arg4, const char *arg5, int arg6);
extern rtx gen_rtx_fmt_Ei (enum rtx_code, enum machine_mode mode, rtvec arg0, int arg1);
extern rtx gen_rtx_fmt_eEee0 (enum rtx_code, enum machine_mode mode, rtx arg0, rtvec arg1, rtx arg2, rtx arg3);
extern rtx gen_rtx_fmt_eee (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1, rtx arg2);
extern rtx gen_rtx_fmt_ (enum rtx_code, enum machine_mode mode);
extern rtx gen_rtx_fmt_w (enum rtx_code, enum machine_mode mode, long arg0);
extern rtx gen_rtx_fmt_0www (enum rtx_code, enum machine_mode mode, long arg0, long arg1, long arg2);
extern rtx gen_rtx_fmt_0 (enum rtx_code, enum machine_mode mode);
extern rtx gen_rtx_fmt_i0 (enum rtx_code, enum machine_mode mode, int arg0);
extern rtx gen_rtx_fmt_ei (enum rtx_code, enum machine_mode mode, rtx arg0, int arg1);
extern rtx gen_rtx_fmt_e0 (enum rtx_code, enum machine_mode mode, rtx arg0);
extern rtx gen_rtx_fmt_u00 (enum rtx_code, enum machine_mode mode, rtx arg0);
extern rtx gen_rtx_fmt_eit (enum rtx_code, enum machine_mode mode, rtx arg0, int arg1, union tree_node *arg2);
extern rtx gen_rtx_fmt_eeeee (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1, rtx arg2, rtx arg3, rtx arg4);
extern rtx gen_rtx_fmt_Ee (enum rtx_code, enum machine_mode mode, rtvec arg0, rtx arg1);
extern rtx gen_rtx_fmt_uuEiiiiiibbii (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1, rtvec arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, struct bitmap_head_def *arg9, struct bitmap_head_def *arg10, int arg11, int arg12);
extern rtx gen_rtx_fmt_iiiiiiiitt (enum rtx_code, enum machine_mode mode, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, union tree_node *arg8, union tree_node *arg9);
extern rtx gen_rtx_fmt_eti (enum rtx_code, enum machine_mode mode, rtx arg0, union tree_node *arg1, int arg2);
extern rtx gen_rtx_fmt_bi (enum rtx_code, enum machine_mode mode, struct bitmap_head_def *arg0, int arg1);
extern rtx gen_rtx_fmt_uuuu (enum rtx_code, enum machine_mode mode, rtx arg0, rtx arg1, rtx arg2, rtx arg3);
# 1643 "../../gcc/rtl.h" 2
extern rtx gen_rtx_CONST_DOUBLE (enum machine_mode, long, long);
extern rtx gen_rtx_CONST_INT (enum machine_mode, long);
extern rtx gen_raw_REG (enum machine_mode, int);
extern rtx gen_rtx_REG (enum machine_mode, int);
extern rtx gen_rtx_SUBREG (enum machine_mode, rtx, int);
extern rtx gen_rtx_MEM (enum machine_mode, rtx);
extern rtx gen_lowpart_SUBREG (enum machine_mode, rtx);
# 1728 "../../gcc/rtl.h"
extern rtx find_next_ref (rtx, rtx);
extern rtx output_constant_def (tree, int);
extern rtx immed_real_const (tree);
# 1741 "../../gcc/rtl.h"
extern int flow2_completed;
extern int reload_completed;
extern int reload_in_progress;
extern int cse_not_expected;
extern int no_new_pseudos;
extern int rtx_to_tree_code (enum rtx_code);
struct obstack;
extern void gcc_obstack_init (struct obstack *);
struct cse_basic_block_data;
# 1787 "../../gcc/rtl.h"
extern int rtx_cost (rtx, enum rtx_code);
extern int address_cost (rtx, enum machine_mode);
extern void delete_trivially_dead_insns (rtx, int, int);
extern int cse_main (rtx, int, int, FILE *);
extern void cse_end_of_basic_block (rtx, struct cse_basic_block_data *, int, int, int);
extern int comparison_dominates_p (enum rtx_code, enum rtx_code);
extern int condjump_p (rtx);
extern int any_condjump_p (rtx);
extern int any_uncondjump_p (rtx);
extern int safe_to_remove_jump_p (rtx);
extern rtx pc_set (rtx);
extern rtx condjump_label (rtx);
extern int simplejump_p (rtx);
extern int returnjump_p (rtx);
extern int onlyjump_p (rtx);
extern int only_sets_cc0_p (rtx);
extern int sets_cc0_p (rtx);
extern int invert_jump_1 (rtx, rtx);
extern int invert_jump (rtx, rtx, int);
extern int rtx_renumbered_equal_p (rtx, rtx);
extern int true_regnum (rtx);
extern int redirect_jump_1 (rtx, rtx);
extern int redirect_jump (rtx, rtx, int);
extern void rebuild_jump_labels (rtx);
extern enum rtx_code reversed_comparison_code (rtx, rtx);
extern enum rtx_code reversed_comparison_code_parts (enum rtx_code, rtx, rtx, rtx);
extern void delete_for_peephole (rtx, rtx);
extern int condjump_in_parallel_p (rtx);
extern void never_reached_warning (rtx, rtx);
extern void purge_line_number_notes (rtx);
extern void copy_loop_headers (rtx);
extern int max_reg_num (void);
extern int max_label_num (void);
extern int get_first_label_num (void);
extern void delete_insns_since (rtx);
extern void mark_reg_pointer (rtx, int);
extern void mark_user_reg (rtx);
extern void reset_used_flags (rtx);
extern void reorder_insns (rtx, rtx, rtx);
extern void reorder_insns_nobb (rtx, rtx, rtx);
extern int get_max_uid (void);
extern int in_sequence_p (void);
extern void force_next_line_note (void);
extern void clear_emit_caches (void);
extern void init_emit (void);
extern void init_emit_once (int);
extern void push_topmost_sequence (void);
extern void pop_topmost_sequence (void);
extern int subreg_realpart_p (rtx);
extern void reverse_comparison (rtx);
extern void set_new_first_and_last_insn (rtx, rtx);
extern void set_new_first_and_last_label_num (int, int);
extern void set_new_last_label_num (int);
extern void unshare_all_rtl_again (rtx);
extern void set_last_insn (rtx);
extern void link_cc0_insns (rtx);
extern void add_insn (rtx);
extern void add_insn_before (rtx, rtx);
extern void add_insn_after (rtx, rtx);
extern void remove_insn (rtx);
extern void reorder_insns_with_line_notes (rtx, rtx, rtx);
extern void emit_insn_after_with_line_notes (rtx, rtx, rtx);
extern enum rtx_code classify_insn (rtx);
extern rtx emit (rtx);
int force_line_numbers (void);
void restore_line_number_status (int old_value);
extern void renumber_insns (FILE *);
extern void remove_unnecessary_notes (void);
extern rtx delete_insn (rtx);
extern void delete_insn_chain (rtx, rtx);
extern int combine_instructions (rtx, unsigned int);
extern unsigned int extended_count (rtx, enum machine_mode, int);
extern rtx remove_death (unsigned int, rtx);
extern void dump_combine_stats (FILE *);
extern void dump_combine_total_stats (FILE *);
extern void schedule_insns (FILE *);
extern void schedule_ebbs (FILE *);
extern void fix_sched_param (const char *, const char *);
extern const char *print_rtx_head;
extern void debug_rtx (rtx);
extern void debug_rtx_list (rtx, int);
extern void debug_rtx_range (rtx, rtx);
extern rtx debug_rtx_find (rtx, int);
extern void print_mem_expr (FILE *, tree);
extern void print_rtl (FILE *, rtx);
extern void print_simple_rtl (FILE *, rtx);
extern int print_rtl_single (FILE *, rtx);
extern void print_inline_rtx (FILE *, rtx, int);
extern void init_loop (void);
extern rtx libcall_other_reg (rtx, rtx);
extern void loop_optimize (rtx, FILE *, int);
extern void record_excess_regs (rtx, rtx, rtx *);
extern void reposition_prologue_and_epilogue_notes (rtx);
extern void thread_prologue_and_epilogue_insns (rtx);
extern int prologue_epilogue_contains (rtx);
extern int sibcall_epilogue_contains (rtx);
extern void preserve_rtl_expr_result (rtx);
extern void mark_temp_addr_taken (rtx);
extern void update_temp_slot_address (rtx, rtx);
extern void purge_addressof (rtx);
extern void purge_hard_subreg_sets (rtx);
extern void set_file_and_line_for_stmt (const char *, int);
extern void expand_null_return (void);
extern void emit_jump (rtx);
extern int preserve_subexpressions_p (void);
extern void move_by_pieces (rtx, rtx, unsigned long, unsigned int);
extern void recompute_reg_usage (rtx, int);
extern int initialize_uninitialized_subregs (void);
extern void print_rtl_with_bb (FILE *, rtx);
extern void dump_flow_info (FILE *);
extern void init_expmed (void);
extern void expand_inc (rtx, rtx);
extern void expand_dec (rtx, rtx);
extern rtx expand_mult_highpart (enum machine_mode, rtx, unsigned long, rtx, int, int);
extern int gcse_main (rtx, FILE *);
extern void mark_elimination (int, int);
extern int global_alloc (FILE *);
extern void dump_global_regs (FILE *);
extern void build_insn_chain (rtx);
extern int reg_classes_intersect_p (enum reg_class, enum reg_class);
extern int reg_class_subset_p (enum reg_class, enum reg_class);
extern void globalize_reg (int);
extern void init_regs (void);
extern void init_reg_sets (void);
extern void regset_release_memory (void);
extern void regclass_init (void);
extern void regclass (rtx, int, FILE *);
extern void reg_scan (rtx, unsigned int, int);
extern void reg_scan_update (rtx, rtx, unsigned int);
extern void fix_register (const char *, int, int);
extern void delete_null_pointer_checks (rtx);
extern void regmove_optimize (rtx, int, FILE *);
extern void combine_stack_adjustments (void);
extern void dbr_schedule (rtx, FILE *);
extern void dump_local_alloc (FILE *);
extern int local_alloc (void);
extern int function_invariant_p (rtx);
extern void init_branch_prob (const char *);
extern void branch_prob (void);
extern void end_branch_prob (void);
extern void output_func_start_profiler (void);
extern void reg_to_stack (rtx, FILE *);
extern int add_double (unsigned long, long, unsigned long, long, unsigned long *, long *);
extern int neg_double (unsigned long, long, unsigned long *, long *);
extern int mul_double (unsigned long, long, unsigned long, long, unsigned long *, long *);
extern void lshift_double (unsigned long, long, long, unsigned int, unsigned long *, long *, int);
extern void rshift_double (unsigned long, long, long, unsigned int, unsigned long *, long *, int);
extern void lrotate_double (unsigned long, long, long, unsigned int, unsigned long *, long *);
extern void rrotate_double (unsigned long, long, long, unsigned int, unsigned long *, long *);
enum libcall_type
{
LCT_NORMAL = 0,
LCT_CONST = 1,
LCT_PURE = 2,
LCT_CONST_MAKE_BLOCK = 3,
LCT_PURE_MAKE_BLOCK = 4,
LCT_NORETURN = 5,
LCT_THROW = 6,
LCT_ALWAYS_RETURN = 7,
LCT_RETURNS_TWICE = 8
};
extern void emit_library_call (rtx, enum libcall_type, enum machine_mode, int, ...);
extern rtx emit_library_call_value (rtx, rtx, enum libcall_type, enum machine_mode, int, ...);
extern int set_dominates_use (int, int, int, rtx, rtx);
extern int in_data_section (void);
extern void init_varasm_once (void);
extern void init_rtl (void);
extern void traverse_md_constants (int (*) (void **, void *), void *);
struct md_constant { char *name, *value; };
extern int read_skip_spaces (FILE *);
extern rtx read_rtx (FILE *);
extern const char *read_rtx_filename;
extern int read_rtx_lineno;
extern void fancy_abort (const char *, int, const char *)
__attribute__ ((__noreturn__));
extern void clear_reg_alias_info (rtx);
extern rtx canon_rtx (rtx);
extern int true_dependence (rtx, enum machine_mode, rtx, int (*)(rtx, int));
extern rtx get_addr (rtx);
extern int canon_true_dependence (rtx, enum machine_mode, rtx, rtx, int (*)(rtx, int));
extern int read_dependence (rtx, rtx);
extern int anti_dependence (rtx, rtx);
extern int output_dependence (rtx, rtx);
extern void mark_constant_function (void);
extern void init_alias_once (void);
extern void init_alias_analysis (void);
extern void end_alias_analysis (void);
extern rtx addr_side_effect_eval (rtx, int, int);
typedef enum {
sibcall_use_normal = 1,
sibcall_use_tail_recursion,
sibcall_use_sibcall
} sibcall_use_t;
extern void optimize_sibling_and_tail_recursive_calls (void);
extern void replace_call_placeholder (rtx, sibcall_use_t);
extern rtx stack_limit_rtx;
extern void regrename_optimize (void);
extern void copyprop_hardreg_forward (void);
extern void if_convert (int);
extern void invert_br_probabilities (rtx);
extern _Bool expensive_function_p (int);
# 35 "../../gcc/predict.c" 2
# 1 "tm_p.h" 1
# 1 "../../gcc/config/alpha/alpha-protos.h" 1
# 21 "../../gcc/config/alpha/alpha-protos.h"
extern int alpha_next_sequence_number;
extern void literal_section (void);
extern void override_options (void);
extern int zap_mask (long);
extern int direct_return (void);
extern int alpha_sa_size (void);
extern int alpha_pv_save_size (void);
extern int alpha_using_fp (void);
extern void alpha_write_verstamp (FILE *);
extern void alpha_expand_prologue (void);
extern void alpha_expand_epilogue (void);
extern void alpha_output_filename (FILE *, const char *);
extern void alpha_output_lineno (FILE *, int);
extern int reg_or_0_operand (rtx, enum machine_mode);
extern int reg_or_6bit_operand (rtx, enum machine_mode);
extern int reg_or_8bit_operand (rtx, enum machine_mode);
extern int cint8_operand (rtx, enum machine_mode);
extern int add_operand (rtx, enum machine_mode);
extern int sext_add_operand (rtx, enum machine_mode);
extern int const48_operand (rtx, enum machine_mode);
extern int and_operand (rtx, enum machine_mode);
extern int or_operand (rtx, enum machine_mode);
extern int mode_width_operand (rtx, enum machine_mode);
extern int mode_mask_operand (rtx, enum machine_mode);
extern int mul8_operand (rtx, enum machine_mode);
extern int fp0_operand (rtx, enum machine_mode);
extern int reg_or_fp0_operand (rtx, enum machine_mode);
extern int hard_fp_register_operand (rtx, enum machine_mode);
extern int hard_int_register_operand (rtx, enum machine_mode);
extern int reg_or_cint_operand (rtx, enum machine_mode);
extern int some_operand (rtx, enum machine_mode);
extern int some_ni_operand (rtx, enum machine_mode);
extern int input_operand (rtx, enum machine_mode);
extern int current_file_function_operand (rtx, enum machine_mode);
extern int direct_call_operand (rtx, enum machine_mode);
extern int local_symbolic_operand (rtx, enum machine_mode);
extern int small_symbolic_operand (rtx, enum machine_mode);
extern int some_small_symbolic_operand (rtx, enum machine_mode);
extern int global_symbolic_operand (rtx, enum machine_mode);
extern int call_operand (rtx, enum machine_mode);
extern int symbolic_operand (rtx, enum machine_mode);
extern int alpha_comparison_operator (rtx, enum machine_mode);
extern int alpha_zero_comparison_operator (rtx, enum machine_mode);
extern int alpha_swapped_comparison_operator (rtx, enum machine_mode);
extern int signed_comparison_operator (rtx, enum machine_mode);
extern int alpha_fp_comparison_operator (rtx, enum machine_mode);
extern int divmod_operator (rtx, enum machine_mode);
extern int aligned_memory_operand (rtx, enum machine_mode);
extern int unaligned_memory_operand (rtx, enum machine_mode);
extern int reg_or_unaligned_mem_operand (rtx, enum machine_mode);
extern int any_memory_operand (rtx, enum machine_mode);
extern int reg_not_elim_operand (rtx, enum machine_mode);
extern int normal_memory_operand (rtx, enum machine_mode);
extern int reg_no_subreg_operand (rtx, enum machine_mode);
extern int addition_operation (rtx, enum machine_mode);
extern _Bool alpha_const_ok_for_letter_p (long, int);
extern _Bool alpha_const_double_ok_for_letter_p (rtx, int);
extern _Bool alpha_extra_constraint (rtx, int);
extern rtx alpha_tablejump_addr_vec (rtx);
extern rtx alpha_tablejump_best_label (rtx);
extern _Bool alpha_legitimate_address_p (enum machine_mode, rtx, int);
extern rtx alpha_legitimize_address (rtx, rtx, enum machine_mode);
extern rtx alpha_legitimize_reload_address (rtx, enum machine_mode, int, int, int);
extern rtx split_small_symbolic_operand (rtx);
extern void get_aligned_mem (rtx, rtx *, rtx *);
extern rtx get_unaligned_address (rtx, int);
extern enum reg_class alpha_preferred_reload_class (rtx, enum reg_class);
extern enum reg_class secondary_reload_class (enum reg_class, enum machine_mode, rtx, int);
extern void alpha_set_memflags (rtx, rtx);
extern rtx alpha_emit_set_const (rtx, enum machine_mode, long, int);
extern rtx alpha_emit_set_long_const (rtx, long, long);
extern _Bool alpha_expand_mov (enum machine_mode, rtx *);
extern _Bool alpha_expand_mov_nobwx (enum machine_mode, rtx *);
extern void alpha_emit_floatuns (rtx[]);
extern rtx alpha_emit_conditional_branch (enum rtx_code);
extern rtx alpha_emit_setcc (enum rtx_code);
extern rtx alpha_emit_conditional_move (rtx, enum machine_mode);
extern int alpha_split_conditional_move (enum rtx_code, rtx, rtx, rtx, rtx);
extern void alpha_emit_xfloating_arith (enum rtx_code, rtx[]);
extern void alpha_emit_xfloating_cvt (enum rtx_code, rtx[]);
extern void alpha_split_tfmode_pair (rtx[]);
extern void alpha_split_tfmode_frobsign (rtx[], rtx (*)(rtx, rtx, rtx));
extern void alpha_expand_unaligned_load (rtx, rtx, long, long, int);
extern void alpha_expand_unaligned_store (rtx, rtx, long, long);
extern int alpha_expand_block_move (rtx []);
extern int alpha_expand_block_clear (rtx []);
extern rtx alpha_return_addr (int, rtx);
extern rtx alpha_gp_save_rtx (void);
extern void print_operand (FILE *, rtx, int);
extern void print_operand_address (FILE *, rtx);
extern void alpha_initialize_trampoline (rtx, rtx, rtx, int, int, int);
extern void alpha_reorg (rtx);
extern int check_float_value (enum machine_mode, realvaluetype *, int);
# 153 "../../gcc/config/alpha/alpha-protos.h"
extern rtx alpha_need_linkage (const char *, int);
extern tree alpha_build_va_list (void);
extern void alpha_va_start (int, tree, rtx);
extern rtx alpha_va_arg (tree, tree);
extern rtx function_arg (int, enum machine_mode, tree, int);
extern void alpha_start_function (FILE *, const char *, tree);
extern void alpha_end_function (FILE *, const char *, tree);
extern void alpha_output_mi_thunk_osf (FILE *, tree, long, tree);
extern void alpha_encode_section_info (tree);
extern rtx unicosmk_add_call_info_word (rtx);
# 3 "tm_p.h" 2
# 1 "tm-preds.h" 1
extern int reg_or_0_operand (rtx, enum machine_mode);
extern int reg_or_6bit_operand (rtx, enum machine_mode);
extern int reg_or_8bit_operand (rtx, enum machine_mode);
extern int cint8_operand (rtx, enum machine_mode);
extern int reg_or_cint_operand (rtx, enum machine_mode);
extern int add_operand (rtx, enum machine_mode);
extern int sext_add_operand (rtx, enum machine_mode);
extern int const48_operand (rtx, enum machine_mode);
extern int and_operand (rtx, enum machine_mode);
extern int or_operand (rtx, enum machine_mode);
extern int mode_mask_operand (rtx, enum machine_mode);
extern int mul8_operand (rtx, enum machine_mode);
extern int mode_width_operand (rtx, enum machine_mode);
extern int reg_or_fp0_operand (rtx, enum machine_mode);
extern int alpha_comparison_operator (rtx, enum machine_mode);
extern int alpha_zero_comparison_operator (rtx, enum machine_mode);
extern int alpha_swapped_comparison_operator (rtx, enum machine_mode);
extern int signed_comparison_operator (rtx, enum machine_mode);
extern int alpha_fp_comparison_operator (rtx, enum machine_mode);
extern int divmod_operator (rtx, enum machine_mode);
extern int fp0_operand (rtx, enum machine_mode);
extern int current_file_function_operand (rtx, enum machine_mode);
extern int direct_call_operand (rtx, enum machine_mode);
extern int local_symbolic_operand (rtx, enum machine_mode);
extern int small_symbolic_operand (rtx, enum machine_mode);
extern int global_symbolic_operand (rtx, enum machine_mode);
extern int call_operand (rtx, enum machine_mode);
extern int input_operand (rtx, enum machine_mode);
extern int some_operand (rtx, enum machine_mode);
extern int some_ni_operand (rtx, enum machine_mode);
extern int aligned_memory_operand (rtx, enum machine_mode);
extern int unaligned_memory_operand (rtx, enum machine_mode);
extern int reg_or_unaligned_mem_operand (rtx, enum machine_mode);
extern int any_memory_operand (rtx, enum machine_mode);
extern int hard_fp_register_operand (rtx, enum machine_mode);
extern int hard_int_register_operand (rtx, enum machine_mode);
extern int reg_not_elim_operand (rtx, enum machine_mode);
extern int reg_no_subreg_operand (rtx, enum machine_mode);
extern int addition_operation (rtx, enum machine_mode);
extern int symbolic_operand (rtx, enum machine_mode);
extern int some_small_symbolic_operand (rtx, enum machine_mode);
# 5 "tm_p.h" 2
# 36 "../../gcc/predict.c" 2
# 1 "../../gcc/hard-reg-set.h" 1
# 41 "../../gcc/hard-reg-set.h"
typedef unsigned long HARD_REG_ELT_TYPE;
# 395 "../../gcc/hard-reg-set.h"
extern char fixed_regs[64];
extern HARD_REG_ELT_TYPE fixed_reg_set;
extern char call_used_regs[64];
extern HARD_REG_ELT_TYPE call_used_reg_set;
extern HARD_REG_ELT_TYPE losing_caller_save_reg_set;
extern char call_fixed_regs[64];
extern HARD_REG_ELT_TYPE call_fixed_reg_set;
extern char global_regs[64];
# 441 "../../gcc/hard-reg-set.h"
extern HARD_REG_ELT_TYPE regs_invalidated_by_call;
extern int reg_alloc_order[64];
extern int inv_reg_alloc_order[64];
extern HARD_REG_ELT_TYPE reg_class_contents[(int) LIM_REG_CLASSES];
extern unsigned int reg_class_size[(int) LIM_REG_CLASSES];
extern enum reg_class reg_class_superclasses[(int) LIM_REG_CLASSES][(int) LIM_REG_CLASSES];
extern enum reg_class reg_class_subclasses[(int) LIM_REG_CLASSES][(int) LIM_REG_CLASSES];
extern enum reg_class reg_class_subunion[(int) LIM_REG_CLASSES][(int) LIM_REG_CLASSES];
extern enum reg_class reg_class_superunion[(int) LIM_REG_CLASSES][(int) LIM_REG_CLASSES];
extern int n_non_fixed_regs;
extern const char * reg_names[64];
# 37 "../../gcc/predict.c" 2
# 1 "../../gcc/basic-block.h" 1
# 25 "../../gcc/basic-block.h"
# 1 "../../gcc/bitmap.h" 1
# 43 "../../gcc/bitmap.h"
typedef struct bitmap_element_def
{
struct bitmap_element_def *next;
struct bitmap_element_def *prev;
unsigned int indx;
unsigned long bits[2];
} bitmap_element;
typedef struct bitmap_head_def {
bitmap_element *first;
bitmap_element *current;
unsigned int indx;
} bitmap_head, *bitmap;
enum bitmap_bits {
BITMAP_AND,
BITMAP_AND_COMPL,
BITMAP_IOR,
BITMAP_XOR,
BITMAP_IOR_COMPL
};
extern bitmap_element bitmap_zero_bits;
extern void bitmap_clear (bitmap);
extern void bitmap_copy (bitmap, bitmap);
extern int bitmap_equal_p (bitmap, bitmap);
extern int bitmap_operation (bitmap, bitmap, bitmap, enum bitmap_bits);
extern void bitmap_ior_and_compl (bitmap, bitmap, bitmap);
extern void bitmap_clear_bit (bitmap, int);
extern void bitmap_set_bit (bitmap, int);
extern int bitmap_bit_p (bitmap, int);
extern void debug_bitmap (bitmap);
extern void debug_bitmap_file (FILE *, bitmap);
extern void bitmap_print (FILE *, bitmap, const char *, const char *);
extern bitmap bitmap_initialize (bitmap);
extern void bitmap_release_memory (void);
extern int bitmap_union_of_diff (bitmap, bitmap, bitmap, bitmap);
extern int bitmap_first_set_bit (bitmap);
extern int bitmap_last_set_bit (bitmap);
# 26 "../../gcc/basic-block.h" 2
# 1 "../../gcc/sbitmap.h" 1
# 31 "../../gcc/sbitmap.h"
typedef struct simple_bitmap_def
{
unsigned int n_bits;
unsigned int size;
unsigned int bytes;
unsigned long elms[1];
} *sbitmap;
typedef unsigned long *sbitmap_ptr;
# 91 "../../gcc/sbitmap.h"
struct int_list;
extern void dump_sbitmap (FILE *, sbitmap);
extern void dump_sbitmap_vector (FILE *, const char *, const char *, sbitmap *, int);
extern sbitmap sbitmap_alloc (unsigned int);
extern sbitmap *sbitmap_vector_alloc (unsigned int, unsigned int);
extern void sbitmap_copy (sbitmap, sbitmap);
extern int sbitmap_equal (sbitmap, sbitmap);
extern void sbitmap_zero (sbitmap);
extern void sbitmap_ones (sbitmap);
extern void sbitmap_vector_zero (sbitmap *, unsigned int);
extern void sbitmap_vector_ones (sbitmap *, unsigned int);
extern int sbitmap_union_of_diff (sbitmap, sbitmap, sbitmap, sbitmap);
extern void sbitmap_difference (sbitmap, sbitmap, sbitmap);
extern void sbitmap_not (sbitmap, sbitmap);
extern int sbitmap_a_or_b_and_c (sbitmap, sbitmap, sbitmap, sbitmap);
extern int sbitmap_a_and_b_or_c (sbitmap, sbitmap, sbitmap, sbitmap);
extern int sbitmap_a_and_b (sbitmap, sbitmap, sbitmap);
extern int sbitmap_a_or_b (sbitmap, sbitmap, sbitmap);
extern int sbitmap_a_xor_b (sbitmap, sbitmap, sbitmap);
extern int sbitmap_a_subset_b_p (sbitmap, sbitmap);
extern int sbitmap_first_set_bit (sbitmap);
extern int sbitmap_last_set_bit (sbitmap);
extern void sbitmap_intersect_of_predsucc (sbitmap, sbitmap *, int, struct int_list **);
extern void sbitmap_union_of_predsucc (sbitmap, sbitmap *, int, struct int_list **);
extern void sbitmap_intersection_of_succs (sbitmap, sbitmap *, int);
extern void sbitmap_intersection_of_preds (sbitmap, sbitmap *, int);
extern void sbitmap_union_of_succs (sbitmap, sbitmap *, int);
extern void sbitmap_union_of_preds (sbitmap, sbitmap *, int);
extern void debug_sbitmap (sbitmap);
# 27 "../../gcc/basic-block.h" 2
# 1 "../../gcc/varray.h" 1
# 36 "../../gcc/varray.h"
struct const_equiv_data {
# 50 "../../gcc/varray.h"
struct rtx_def *rtx;
unsigned age;
};
typedef union varray_data_tag {
char c[1];
unsigned char uc[1];
short s[1];
unsigned short us[1];
int i[1];
unsigned int u[1];
long l[1];
unsigned long ul[1];
long hint[1];
unsigned long uhint[1];
void * generic[1];
char *cptr[1];
struct rtx_def *rtx[1];
struct rtvec_def *rtvec[1];
union tree_node *tree[1];
struct bitmap_head_def *bitmap[1];
struct sched_info_tag *sched[1];
struct reg_info_def *reg[1];
struct const_equiv_data const_equiv[1];
struct basic_block_def *bb[1];
struct elt_list *te[1];
} varray_data;
typedef struct varray_head_tag {
size_t num_elements;
size_t elements_used;
size_t element_size;
const char *name;
varray_data data;
} *varray_type;
extern varray_type varray_init (size_t, size_t, const char *);
# 165 "../../gcc/varray.h"
extern varray_type varray_grow (varray_type, size_t);
# 28 "../../gcc/basic-block.h" 2
# 1 "../../include/partition.h" 1
# 46 "../../include/partition.h"
struct partition_elem
{
int class_element;
struct partition_elem* next;
unsigned class_count;
};
typedef struct partition_def
{
int num_elements;
struct partition_elem elements[1];
} *partition;
extern partition partition_new (int);
extern void partition_delete (partition);
extern int partition_union (partition, int, int);
extern void partition_print (partition, FILE*);
# 29 "../../gcc/basic-block.h" 2
typedef bitmap_head regset_head;
typedef bitmap regset;
# 74 "../../gcc/basic-block.h"
extern void reg_set_to_hard_reg_set (HARD_REG_ELT_TYPE *, bitmap);
# 116 "../../gcc/basic-block.h"
typedef long gcov_type;
typedef struct edge_def {
struct edge_def *pred_next, *succ_next;
struct basic_block_def *src, *dest;
rtx insns;
void *aux;
int flags;
int probability;
gcov_type count;
} *edge;
# 174 "../../gcc/basic-block.h"
typedef struct basic_block_def {
rtx head, end;
tree head_tree;
tree end_tree;
edge pred, succ;
regset local_set;
regset cond_local_set;
regset global_live_at_start;
regset global_live_at_end;
void *aux;
int index;
int loop_depth;
gcov_type count;
int frequency;
int flags;
} *basic_block;
# 228 "../../gcc/basic-block.h"
extern int n_basic_blocks;
extern int n_edges;
extern varray_type basic_block_info;
extern regset regs_live_at_setjmp;
extern rtx label_value_list, tail_recursion_label_list;
extern struct obstack flow_obstack;
# 278 "../../gcc/basic-block.h"
extern struct basic_block_def entry_exit_blocks[2];
extern varray_type basic_block_for_insn;
extern void compute_bb_for_insn (int);
extern void free_bb_for_insn (void);
extern void update_bb_for_insn (basic_block);
extern void set_block_for_insn (rtx, basic_block);
extern void free_basic_block_vars (int);
extern edge split_block (basic_block, rtx);
extern basic_block split_edge (edge);
extern void insert_insn_on_edge (rtx, edge);
extern void commit_edge_insertions (void);
extern void remove_fake_edges (void);
extern void add_noreturn_fake_exit_edges (void);
extern void connect_infinite_loops_to_exit (void);
extern int flow_call_edges_add (sbitmap);
extern edge cached_make_edge (sbitmap *, basic_block, basic_block, int);
extern edge make_edge (basic_block, basic_block, int);
extern edge make_single_succ_edge (basic_block, basic_block, int);
extern void remove_edge (edge);
extern void redirect_edge_succ (edge, basic_block);
extern edge redirect_edge_succ_nodup (edge, basic_block);
extern void redirect_edge_pred (edge, basic_block);
extern basic_block create_basic_block_structure (int, rtx, rtx, rtx);
extern basic_block create_basic_block (int, rtx, rtx);
extern int flow_delete_block (basic_block);
extern int flow_delete_block_noexpunge (basic_block);
extern void merge_blocks_nomove (basic_block, basic_block);
extern void tidy_fallthru_edge (edge, basic_block, basic_block);
extern void tidy_fallthru_edges (void);
extern void flow_reverse_top_sort_order_compute (int *);
extern int flow_depth_first_order_compute (int *, int *);
extern void flow_preorder_transversal_compute (int *);
extern void dump_edge_info (FILE *, edge, int);
extern void clear_edges (void);
extern void mark_critical_edges (void);
extern rtx first_insn_after_basic_block_note (basic_block);
struct loop
{
int num;
basic_block header;
basic_block latch;
basic_block pre_header;
edge *pre_header_edges;
int num_pre_header_edges;
basic_block first;
basic_block last;
sbitmap nodes;
int num_nodes;
edge *entry_edges;
int num_entries;
edge *exit_edges;
int num_exits;
sbitmap exits_doms;
int depth;
int level;
struct loop *outer;
struct loop *inner;
struct loop *next;
int shared;
int invalid;
void *aux;
rtx vtop;
rtx cont;
rtx cont_dominator;
rtx start;
rtx end;
rtx top;
rtx scan_start;
rtx sink;
# 442 "../../gcc/basic-block.h"
rtx exit_labels;
int exit_count;
};
struct loops
{
int num;
int levels;
struct loop *array;
struct loop *tree_root;
struct cfg
{
sbitmap *dom;
int *dfs_order;
int *rc_order;
} cfg;
sbitmap shared_headers;
};
extern int flow_loops_find (struct loops *, int flags);
extern int flow_loops_update (struct loops *, int flags);
extern void flow_loops_free (struct loops *);
extern void flow_loops_dump (const struct loops *, FILE *, void (*)(const struct loop *, FILE *, int), int);
extern void flow_loop_dump (const struct loop *, FILE *, void (*)(const struct loop *, FILE *, int), int);
extern int flow_loop_scan (struct loops *, struct loop *, int);
struct edge_list
{
int num_blocks;
int num_edges;
edge *index_to_edge;
};
# 539 "../../gcc/basic-block.h"
struct edge_list * create_edge_list (void);
void free_edge_list (struct edge_list *);
void print_edge_list (FILE *, struct edge_list *);
void verify_edge_list (FILE *, struct edge_list *);
int find_edge_index (struct edge_list *, basic_block, basic_block);
enum update_life_extent
{
UPDATE_LIFE_LOCAL = 0,
UPDATE_LIFE_GLOBAL = 1,
UPDATE_LIFE_GLOBAL_RM_NOTES = 2
};
# 588 "../../gcc/basic-block.h"
extern void life_analysis (rtx, FILE *, int);
extern void update_life_info (sbitmap, enum update_life_extent, int);
extern int count_or_remove_death_notes (sbitmap, int);
extern int propagate_block (basic_block, regset, regset, regset, int);
struct propagate_block_info;
extern rtx propagate_one_insn (struct propagate_block_info *, rtx);
extern struct propagate_block_info *init_propagate_block_info
(basic_block, regset, regset, regset, int);
extern void free_propagate_block_info (struct propagate_block_info *);
extern struct edge_list *pre_edge_lcm (FILE *, int, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap **, sbitmap **);
extern struct edge_list *pre_edge_rev_lcm (FILE *, int, sbitmap *, sbitmap *, sbitmap *, sbitmap *, sbitmap **, sbitmap **);
extern void compute_available (sbitmap *, sbitmap *, sbitmap *, sbitmap *);
extern int optimize_mode_switching (FILE *);
extern rtx emit_block_insn_after (rtx, rtx, basic_block);
extern rtx emit_block_insn_before (rtx, rtx, basic_block);
extern void estimate_probability (struct loops *);
extern void expected_value_to_br_prob (void);
extern void init_flow (void);
extern void reorder_basic_blocks (void);
extern void dump_bb (basic_block, FILE *);
extern void debug_bb (basic_block);
extern void debug_bb_n (int);
extern void dump_regset (regset, FILE *);
extern void debug_regset (regset);
extern void allocate_reg_life_data (void);
extern void allocate_bb_life_data (void);
extern void expunge_block (basic_block);
extern void expunge_block_nocompact (basic_block);
extern basic_block alloc_block (void);
extern void find_unreachable_blocks (void);
extern void delete_noop_moves (rtx);
extern basic_block redirect_edge_and_branch_force (edge, basic_block);
extern basic_block force_nonfallthru (edge);
extern _Bool redirect_edge_and_branch (edge, basic_block);
extern rtx block_label (basic_block);
extern _Bool forwarder_block_p (basic_block);
extern _Bool purge_all_dead_edges (int);
extern _Bool purge_dead_edges (basic_block);
extern void find_sub_basic_blocks (basic_block);
extern void find_many_sub_basic_blocks (sbitmap);
extern _Bool can_fallthru (basic_block, basic_block);
extern void flow_nodes_print (const char *, const sbitmap, FILE *);
extern void flow_edge_list_print (const char *, const edge *, int, FILE *);
extern void alloc_aux_for_block (basic_block, int);
extern void alloc_aux_for_blocks (int);
extern void clear_aux_for_blocks (void);
extern void free_aux_for_blocks (void);
extern void alloc_aux_for_edge (edge, int);
extern void alloc_aux_for_edges (int);
extern void clear_aux_for_edges (void);
extern void free_aux_for_edges (void);
extern void verify_flow_info (void);
extern int flow_loop_outside_edge_p (const struct loop *, edge);
typedef struct conflict_graph_def *conflict_graph;
typedef int (*conflict_graph_enum_fn) (int, int, void *);
extern conflict_graph conflict_graph_new
(int);
extern void conflict_graph_delete (conflict_graph);
extern int conflict_graph_add (conflict_graph, int, int);
extern int conflict_graph_conflict_p (conflict_graph, int, int);
extern void conflict_graph_enum (conflict_graph, int, conflict_graph_enum_fn, void *);
extern void conflict_graph_merge_regs (conflict_graph, int, int);
extern void conflict_graph_print (conflict_graph, FILE*);
extern conflict_graph conflict_graph_compute
(regset, partition);
extern _Bool mark_dfs_back_edges (void);
extern void update_br_prob_note (basic_block);
extern void fixup_abnormal_edges (void);
enum cdi_direction
{
CDI_DOMINATORS,
CDI_POST_DOMINATORS
};
extern void calculate_dominance_info (int *, sbitmap *, enum cdi_direction);
# 38 "../../gcc/predict.c" 2
# 1 "insn-config.h" 1
# 39 "../../gcc/predict.c" 2
# 1 "../../gcc/regs.h" 1
# 42 "../../gcc/regs.h"
extern int max_regno;
typedef struct reg_info_def
{
int first_uid;
int last_uid;
int last_note_uid;
int sets;
int refs;
int freq;
int deaths;
int live_length;
int calls_crossed;
int basic_block;
char changes_mode;
} reg_info;
extern varray_type reg_n_info;
# 157 "../../gcc/regs.h"
extern short *reg_renumber;
extern char regs_ever_live[64];
extern const char * reg_names[64];
extern enum machine_mode reg_raw_mode[64];
# 196 "../../gcc/regs.h"
extern rtx regs_may_share;
extern int caller_save_needed;
# 230 "../../gcc/regs.h"
extern void allocate_reg_info (size_t, int, int);
# 40 "../../gcc/predict.c" 2
# 1 "../../gcc/flags.h" 1
# 26 "../../gcc/flags.h"
extern const char *main_input_filename;
enum debug_info_type
{
NO_DEBUG,
DBX_DEBUG,
SDB_DEBUG,
DWARF_DEBUG,
DWARF2_DEBUG,
XCOFF_DEBUG,
VMS_DEBUG,
VMS_AND_DWARF2_DEBUG
};
extern enum debug_info_type write_symbols;
enum debug_info_level
{
DINFO_LEVEL_NONE,
DINFO_LEVEL_TERSE,
DINFO_LEVEL_NORMAL,
DINFO_LEVEL_VERBOSE
};
extern enum debug_info_level debug_info_level;
extern int use_gnu_debug_info_extensions;
extern int optimize;
extern int optimize_size;
extern int quiet_flag;
extern int time_report;
extern int mem_report;
extern int inhibit_warnings;
extern int warn_system_headers;
extern int extra_warnings;
extern void set_Wunused (int setting);
extern int warn_unused_function;
extern int warn_unused_label;
extern int warn_unused_parameter;
extern int warn_unused_variable;
extern int warn_unused_value;
extern int warn_notreached;
extern int warn_inline;
extern int warn_uninitialized;
extern int warn_unknown_pragmas;
extern int warn_shadow;
extern int warn_switch;
extern int warn_return_type;
extern int warn_missing_noreturn;
extern int warn_cast_align;
extern int warn_larger_than;
extern long larger_than_size;
extern int warn_aggregate_return;
extern int warn_packed;
extern int warn_padded;
extern int warn_disabled_optimization;
extern int warn_deprecated_decl;
extern int profile_flag;
extern int profile_arc_flag;
extern int flag_test_coverage;
extern int flag_branch_probabilities;
extern int flag_reorder_blocks;
extern int flag_rename_registers;
extern int pedantic;
extern int in_system_header;
extern int flag_print_asm_name;
extern int flag_signed_char;
extern int flag_short_enums;
extern int flag_caller_saves;
extern int flag_pcc_struct_return;
extern int flag_force_mem;
extern int flag_force_addr;
extern int flag_defer_pop;
extern int flag_float_store;
extern int flag_strength_reduce;
extern int flag_unroll_loops;
extern int flag_unroll_all_loops;
extern int flag_move_all_movables;
extern int flag_prefetch_loop_arrays;
extern int flag_reduce_all_givs;
extern int flag_cse_follow_jumps;
extern int flag_cse_skip_blocks;
extern int flag_expensive_optimizations;
extern int flag_writable_strings;
extern int flag_no_function_cse;
extern int flag_omit_frame_pointer;
extern int flag_no_peephole;
extern int flag_volatile;
extern int flag_volatile_global;
extern int flag_volatile_static;
extern int flag_optimize_sibling_calls;
extern int flag_errno_math;
extern int flag_unsafe_math_optimizations;
extern int flag_trapping_math;
extern int flag_complex_divide_method;
extern int flag_rerun_loop_opt;
extern int flag_inline_functions;
extern int flag_keep_inline_functions;
extern int flag_no_inline;
extern int flag_really_no_inline;
extern int flag_syntax_only;
extern int flag_gen_aux_info;
extern int flag_shared_data;
extern int flag_schedule_insns;
extern int flag_schedule_insns_after_reload;
# 418 "../../gcc/flags.h"
extern int flag_schedule_interblock;
extern int flag_schedule_speculative;
extern int flag_schedule_speculative_load;
extern int flag_schedule_speculative_load_dangerous;
extern int flag_branch_on_count_reg;
extern int flag_single_precision_constant;
extern int flag_delayed_branch;
extern int flag_dump_unnumbered;
extern int flag_pretend_float;
extern int flag_pedantic_errors;
extern int flag_pic;
extern int flag_exceptions;
extern int flag_unwind_tables;
extern int flag_asynchronous_unwind_tables;
extern int flag_no_common;
extern int flag_inhibit_size_directive;
extern int flag_function_sections;
extern int flag_data_sections;
# 498 "../../gcc/flags.h"
extern int flag_verbose_asm;
# 507 "../../gcc/flags.h"
extern int flag_debug_asm;
extern int flag_dump_rtl_in_asm;
extern int flag_gnu_linker;
extern int flag_pack_struct;
# 525 "../../gcc/flags.h"
extern int flag_argument_noalias;
extern int flag_strict_aliasing;
extern int flag_stack_check;
extern int flag_regmove;
extern int flag_instrument_function_entry_exit;
extern int flag_peephole2;
extern int flag_guess_branch_prob;
extern int flag_bounded_pointers;
extern int flag_bounds_check;
extern int flag_merge_constants;
extern int flag_renumber_insns;
extern int frame_pointer_needed;
extern int flag_trapv;
extern int g_switch_value;
extern int g_switch_set;
extern int align_loops;
extern int align_loops_log;
extern int align_loops_max_skip;
extern int align_jumps;
extern int align_jumps_log;
extern int align_jumps_max_skip;
extern int align_labels;
extern int align_labels_log;
extern int align_labels_max_skip;
extern int align_functions;
extern int align_functions_log;
extern int dump_for_graph;
enum graph_dump_types
{
no_graph = 0,
vcg
};
extern enum graph_dump_types graph_dump_format;
extern int flag_no_ident;
extern int flag_gcse_lm;
extern int flag_gcse_sm;
extern int flag_eliminate_dwarf2_dups;
extern int flag_detailed_statistics;
extern int flag_non_call_exceptions;
# 41 "../../gcc/predict.c" 2
# 1 "../../gcc/output.h" 1
# 24 "../../gcc/output.h"
extern void compute_alignments (void);
extern void init_final (const char *);
extern void end_final (const char *);
extern void app_enable (void);
extern void app_disable (void);
extern int dbr_sequence_length (void);
extern void init_insn_lengths (void);
extern int get_attr_length (rtx);
extern void shorten_branches (rtx);
extern void final_start_function (rtx, FILE *, int);
extern void final_end_function (void);
extern void final (rtx, FILE *, int, int);
extern rtx final_scan_insn (rtx, FILE *, int, int, int);
extern rtx alter_subreg (rtx *);
extern void output_operand_lossage (const char *, ...) __attribute__ ((__format__ (__printf__, 1, 2)));
extern void output_asm_insn (const char *, rtx *);
extern int insn_current_reference_address (rtx);
extern int label_to_alignment (rtx);
extern void output_asm_label (rtx);
extern void output_address (rtx);
extern void output_addr_const (FILE *, rtx);
extern void asm_fprintf (FILE *file, const char *p, ...);
extern void split_double (rtx, rtx *, rtx *);
extern int leaf_function_p (void);
extern int final_forward_branch_p (rtx);
extern int only_leaf_regs_used (void);
extern void leaf_renumber_regs_insn (rtx);
extern const char *get_insn_template (int, rtx);
extern int add_weak (const char *, const char *);
extern void allocate_for_life_analysis (void);
extern int regno_uninitialized (unsigned int);
extern int regno_clobbered_at_setjmp (int);
extern void find_basic_blocks (rtx, int, FILE *);
extern _Bool cleanup_cfg (int);
extern void check_function_return_warnings (void);
extern void text_section (void);
extern void data_section (void);
extern void force_data_section (void);
extern void readonly_data_section (void);
extern int in_text_section (void);
# 218 "../../gcc/output.h"
extern void named_section (tree, const char *, int);
extern void function_section (tree);
extern void mergeable_string_section (tree, unsigned long, unsigned int);
extern void mergeable_constant_section (enum machine_mode, unsigned long, unsigned int);
extern void declare_weak (tree);
extern void merge_weak (tree, tree);
extern void weak_finish (void);
# 248 "../../gcc/output.h"
extern int decode_reg_name (const char *);
extern void make_var_volatile (tree);
extern void assemble_constant_align (tree);
extern void assemble_alias (tree, tree);
extern void assemble_asm (tree);
extern void assemble_start_function (tree, const char *);
extern void assemble_end_function (tree, const char *);
# 283 "../../gcc/output.h"
extern void assemble_variable (tree, int, int, int);
extern void assemble_external (tree);
extern void assemble_zeros (int);
extern void assemble_align (int);
extern void assemble_eh_align (int);
extern void assemble_string (const char *, int);
extern void assemble_external_libcall (rtx);
extern void assemble_global (const char *);
extern void assemble_label (const char *);
extern void assemble_eh_label (const char *);
extern void assemble_name (FILE *, const char *);
# 327 "../../gcc/output.h"
extern const char *integer_asm_op (int, int);
extern void assemble_integer_with_op (const char *, rtx);
extern _Bool default_assemble_integer (rtx, unsigned int, int);
extern _Bool assemble_integer (rtx, unsigned, unsigned, int);
# 351 "../../gcc/output.h"
extern void assemble_real (realvaluetype, enum machine_mode, unsigned);
# 360 "../../gcc/output.h"
extern void clear_const_double_mem (void);
extern void defer_addressed_constants (void);
extern void output_deferred_addressed_constants (void);
extern int get_pool_size (void);
extern void output_constant_pool (const char *, tree);
# 389 "../../gcc/output.h"
extern tree initializer_constant_valid_p (tree, tree);
# 399 "../../gcc/output.h"
extern void output_constant (tree, long, unsigned int);
# 410 "../../gcc/output.h"
extern rtx final_sequence;
extern int sdb_begin_function_line;
extern FILE *asm_out_file;
extern const char *first_global_object_name;
extern const char *weak_global_object_name;
extern int current_function_is_leaf;
extern int current_function_nothrow;
extern int current_function_sp_is_unchanging;
extern int current_function_uses_only_leaf_regs;
extern FILE *rtl_dump_file;
extern struct rtx_def *current_insn_predicate;
extern struct rtx_def *current_output_insn;
# 480 "../../gcc/output.h"
extern const char *user_label_prefix;
# 491 "../../gcc/output.h"
extern void default_function_pro_epilogue (FILE *, long);
extern void default_exception_section (void);
extern void default_eh_frame_section (void);
extern void no_asm_to_stream (FILE *);
# 517 "../../gcc/output.h"
extern unsigned int get_named_section_flags (const char *);
extern _Bool set_named_section_flags (const char *, unsigned int);
extern void named_section_flags (const char *, unsigned int);
extern _Bool named_section_first_declaration (const char *);
union tree_node;
extern unsigned int default_section_type_flags (union tree_node *, const char *, int);
extern void default_no_named_section (const char *, unsigned int);
extern void default_elf_asm_named_section (const char *, unsigned int);
extern void default_coff_asm_named_section (const char *, unsigned int);
extern void default_pe_asm_named_section (const char *, unsigned int);
extern void default_stabs_asm_out_destructor (struct rtx_def *, int);
extern void default_named_section_asm_out_destructor (struct rtx_def *, int);
extern void default_dtor_section_asm_out_destructor (struct rtx_def *, int);
extern void default_stabs_asm_out_constructor (struct rtx_def *, int);
extern void default_named_section_asm_out_constructor (struct rtx_def *, int);
extern void default_ctor_section_asm_out_constructor (struct rtx_def *, int);
extern void assemble_vtable_entry (struct rtx_def *, long);
extern void assemble_vtable_inherit (struct rtx_def *, struct rtx_def *);
# 42 "../../gcc/predict.c" 2
# 1 "../../gcc/function.h" 1
# 22 "../../gcc/function.h"
struct var_refs_queue
{
rtx modified;
enum machine_mode promoted_mode;
int unsignedp;
struct var_refs_queue *next;
};
struct sequence_stack
{
rtx first, last;
tree sequence_rtl_expr;
struct sequence_stack *next;
};
extern struct sequence_stack *sequence_stack;
struct simple_obstack_stack
{
struct obstack *obstack;
struct simple_obstack_stack *next;
};
struct emit_status
{
int x_reg_rtx_no;
int x_first_label_num;
rtx x_first_insn;
rtx x_last_insn;
tree sequence_rtl_expr;
struct sequence_stack *sequence_stack;
int x_cur_insn_uid;
int x_last_linenum;
const char *x_last_filename;
int regno_pointer_align_length;
unsigned char *regno_pointer_align;
tree *regno_decl;
rtx *x_regno_reg_rtx;
};
# 119 "../../gcc/function.h"
struct expr_status
{
int x_pending_stack_adjust;
# 140 "../../gcc/function.h"
int x_inhibit_defer_pop;
int x_stack_pointer_delta;
rtx x_saveregs_value;
rtx x_apply_args_value;
rtx x_forced_labels;
rtx x_pending_chain;
};
# 174 "../../gcc/function.h"
struct function
{
struct eh_status *eh;
struct stmt_status *stmt;
struct expr_status *expr;
struct emit_status *emit;
struct varasm_status *varasm;
const char *name;
tree decl;
struct function *outer;
int pops_args;
int args_size;
int pretend_args_size;
int outgoing_args_size;
rtx arg_offset_rtx;
int args_info;
rtx return_rtx;
rtx internal_arg_pointer;
const char *cannot_inline;
struct initial_value_struct *hard_reg_initial_vals;
int x_function_call_count;
tree x_nonlocal_labels;
rtx x_nonlocal_goto_handler_slots;
rtx x_nonlocal_goto_handler_labels;
rtx x_nonlocal_goto_stack_level;
rtx x_cleanup_label;
rtx x_return_label;
rtx x_save_expr_regs;
rtx x_stack_slot_list;
tree x_rtl_expr_chain;
rtx x_tail_recursion_label;
rtx x_tail_recursion_reentry;
rtx x_arg_pointer_save_area;
rtx x_clobber_return_insn;
long x_frame_offset;
tree x_context_display;
# 317 "../../gcc/function.h"
tree x_trampoline_list;
rtx x_parm_birth_insn;
rtx x_last_parm_insn;
unsigned int x_max_parm_reg;
rtx *x_parm_reg_stack_loc;
struct temp_slot *x_temp_slots;
int x_temp_slot_level;
int x_var_temp_slot_level;
int x_target_temp_slot_level;
struct var_refs_queue *fixup_var_refs_queue;
int inlinable;
int no_debugging_symbols;
void *original_arg_vector;
tree original_decl_initial;
rtx inl_last_parm_insn;
int inl_max_label_num;
int profile_label_no;
struct machine_function *machine;
int stack_alignment_needed;
int preferred_stack_boundary;
struct language_function *language;
rtx epilogue_delay_list;
unsigned int returns_struct : 1;
unsigned int returns_pcc_struct : 1;
unsigned int returns_pointer : 1;
unsigned int needs_context : 1;
unsigned int calls_setjmp : 1;
unsigned int calls_longjmp : 1;
unsigned int calls_alloca : 1;
unsigned int calls_eh_return : 1;
unsigned int has_nonlocal_label : 1;
unsigned int has_nonlocal_goto : 1;
unsigned int contains_functions : 1;
unsigned int has_computed_jump : 1;
unsigned int is_thunk : 1;
unsigned int instrument_entry_exit : 1;
unsigned int profile : 1;
unsigned int limit_stack : 1;
unsigned int varargs : 1;
unsigned int stdarg : 1;
unsigned int x_whole_function_mode_p : 1;
# 468 "../../gcc/function.h"
unsigned int x_dont_save_pending_sizes_p : 1;
unsigned int uses_const_pool : 1;
unsigned int uses_pic_offset_table : 1;
unsigned int uses_eh_lsda : 1;
unsigned int arg_pointer_save_area_init : 1;
};
extern struct function *cfun;
extern int virtuals_instantiated;
# 549 "../../gcc/function.h"
extern tree inline_function_decl;
struct function *find_function_data (tree);
extern void identify_blocks (void);
extern void reorder_blocks (void);
extern void number_blocks (tree);
extern long get_frame_size (void);
extern long get_func_frame_size (struct function *);
extern void (*init_machine_status) (struct function *);
extern void (*free_machine_status) (struct function *);
extern void (*mark_machine_status) (struct function *);
extern void (*init_lang_status) (struct function *);
extern void (*mark_lang_status) (struct function *);
extern void (*save_lang_status) (struct function *);
extern void (*restore_lang_status) (struct function *);
extern void (*free_lang_status) (struct function *);
extern void restore_emit_status (struct function *);
extern void free_after_parsing (struct function *);
extern void free_after_compilation (struct function *);
extern void init_varasm_status (struct function *);
extern void free_varasm_status (struct function *);
extern void free_emit_status (struct function *);
extern void free_stmt_status (struct function *);
extern void free_eh_status (struct function *);
extern void free_expr_status (struct function *);
extern rtx get_first_block_beg (void);
extern void diddle_return_value (void (*)(rtx, void*), void*);
extern void clobber_return_register (void);
extern void use_return_register (void);
extern rtx get_arg_pointer_save_area (struct function *);
extern void init_virtual_regs (struct emit_status *);
extern void init_function_once (void);
# 43 "../../gcc/predict.c" 2
# 1 "../../gcc/except.h" 1
# 29 "../../gcc/except.h"
struct function;
struct inline_remap;
struct eh_status;
struct eh_region;
extern int doing_eh (int);
extern void expand_eh_region_start (void);
extern void expand_eh_region_end_cleanup (tree);
extern void expand_start_all_catch (void);
extern void expand_start_catch (tree);
extern void expand_end_catch (void);
extern void expand_end_all_catch (void);
extern void expand_eh_region_end_allowed (tree, tree);
extern void expand_eh_region_end_must_not_throw (tree);
extern void expand_eh_region_end_throw (tree);
extern void expand_eh_region_end_fixup (tree);
extern void begin_protect_partials (void);
extern void add_partial_entry (tree);
extern void end_protect_partials (void);
extern void for_each_eh_label (void (*) (rtx));
extern _Bool can_throw_internal (rtx);
extern _Bool can_throw_external (rtx);
extern _Bool nothrow_function_p (void);
extern void finish_eh_generation (void);
extern void init_eh (void);
extern void init_eh_for_function (void);
extern rtx reachable_handlers (rtx);
extern void maybe_remove_eh_handler (rtx);
extern void convert_from_eh_region_ranges (void);
extern void convert_to_eh_region_ranges (void);
extern void find_exception_handler_labels (void);
extern _Bool current_function_has_exception_handlers (void);
extern void output_function_exception_table (void);
extern void expand_builtin_unwind_init (void);
extern rtx expand_builtin_eh_return_data_regno (tree);
extern rtx expand_builtin_extract_return_addr (tree);
extern void expand_builtin_init_dwarf_reg_sizes (tree);
extern rtx expand_builtin_frob_return_addr (tree);
extern rtx expand_builtin_dwarf_fp_regnum (void);
extern void expand_builtin_eh_return (tree, tree);
extern void expand_eh_return (void);
extern rtx get_exception_pointer (struct function *);
extern int duplicate_eh_regions (struct function *, struct inline_remap *);
extern void sjlj_emit_function_exit_after (rtx);
# 147 "../../gcc/except.h"
extern tree (*lang_protect_cleanup_actions) (void);
extern int (*lang_eh_type_covers) (tree a, tree b);
extern tree (*lang_eh_runtime_type) (tree);
# 44 "../../gcc/predict.c" 2
# 1 "../../gcc/toplev.h" 1
# 29 "../../gcc/toplev.h"
extern int toplev_main (int, char **);
extern int read_integral_parameter (const char *, const char *, const int);
extern int count_error (int);
extern void strip_off_ending (char *, int);
extern void print_time (const char *, long);
extern const char *trim_filename (const char *);
extern void internal_error (const char *, ...)
__attribute__ ((__noreturn__));
extern void fatal_io_error (const char *, ...)
__attribute__ ((__noreturn__));
extern void _fatal_insn_not_found (struct rtx_def *, const char *, int, const char *)
__attribute__ ((__noreturn__));
extern void _fatal_insn (const char *, struct rtx_def *, const char *, int, const char *)
__attribute__ ((__noreturn__));
# 58 "../../gcc/toplev.h"
extern void warning (const char *, ...);
extern void error (const char *, ...);
extern void fatal_error (const char *, ...)
__attribute__ ((__noreturn__));
extern void pedwarn (const char *, ...);
extern void pedwarn_with_file_and_line (const char *, int, const char *, ...);
extern void warning_with_file_and_line (const char *, int, const char *, ...);
extern void error_with_file_and_line (const char *, int, const char *, ...);
extern void sorry (const char *, ...);
extern void report_error_function (const char *);
extern void rest_of_decl_compilation (union tree_node *, const char *, int, int);
extern void rest_of_type_compilation (union tree_node *, int);
extern void rest_of_compilation (union tree_node *);
extern void pedwarn_with_decl (union tree_node *, const char *, ...);
extern void warning_with_decl (union tree_node *, const char *, ...);
extern void error_with_decl (union tree_node *, const char *, ...);
extern void announce_function (union tree_node *);
extern void error_for_asm (struct rtx_def *, const char *, ...);
extern void warning_for_asm (struct rtx_def *, const char *, ...);
extern void warn_deprecated_use (union tree_node *);
extern int do_float_handler (void (*) (void *), void *);
extern void output_quoted_string (FILE *, const char *);
extern void output_file_directive (FILE *, const char *);
extern void do_abort (void) __attribute__ ((__noreturn__));
extern void botch (const char *)
__attribute__ ((__noreturn__));
extern void fnotice (FILE *, const char *, ...)
__attribute__ ((__format__ (__printf__, 2, 3)));
extern int wrapup_global_declarations (union tree_node **, int);
extern void check_global_declarations (union tree_node **, int);
extern const char *progname;
extern const char *dump_base_name;
extern struct ht *ident_hash;
extern void set_fast_math_flags (void);
extern void set_no_fast_math_flags (void);
# 130 "../../gcc/toplev.h"
extern int exact_log2_wide (unsigned long);
extern int floor_log2_wide (unsigned long);
# 45 "../../gcc/predict.c" 2
# 1 "../../gcc/recog.h" 1
# 28 "../../gcc/recog.h"
enum op_type {
OP_IN,
OP_OUT,
OP_INOUT
};
struct operand_alternative
{
const char *constraint;
enum reg_class class;
unsigned int reject;
int matches;
int matched;
unsigned int earlyclobber:1;
unsigned int memory_ok:1;
unsigned int offmem_ok:1;
unsigned int nonoffmem_ok:1;
unsigned int decmem_ok:1;
unsigned int incmem_ok:1;
unsigned int is_address:1;
unsigned int anything_ok:1;
};
extern void init_recog (void);
extern void init_recog_no_volatile (void);
extern int recog_memoized_1 (rtx);
extern int check_asm_operands (rtx);
extern int asm_operand_ok (rtx, const char *);
extern int validate_change (rtx, rtx *, rtx, int);
extern int insn_invalid_p (rtx);
extern int apply_change_group (void);
extern int num_validated_changes (void);
extern void cancel_changes (int);
extern int constrain_operands (int);
extern int constrain_operands_cached (int);
extern int memory_address_p (enum machine_mode, rtx);
extern int strict_memory_address_p (enum machine_mode, rtx);
extern int validate_replace_rtx_subexp (rtx, rtx, rtx, rtx *);
extern int validate_replace_rtx (rtx, rtx, rtx);
extern void validate_replace_rtx_group (rtx, rtx, rtx);
extern int validate_replace_src (rtx, rtx, rtx);
extern int reg_fits_class_p (rtx, enum reg_class, int, enum machine_mode);
extern rtx *find_single_use (rtx, rtx, rtx *);
extern int general_operand (rtx, enum machine_mode);
extern int address_operand (rtx, enum machine_mode);
extern int register_operand (rtx, enum machine_mode);
extern int pmode_register_operand (rtx, enum machine_mode);
extern int scratch_operand (rtx, enum machine_mode);
extern int immediate_operand (rtx, enum machine_mode);
extern int const_int_operand (rtx, enum machine_mode);
extern int const_double_operand (rtx, enum machine_mode);
extern int nonimmediate_operand (rtx, enum machine_mode);
extern int nonmemory_operand (rtx, enum machine_mode);
extern int push_operand (rtx, enum machine_mode);
extern int pop_operand (rtx, enum machine_mode);
extern int memory_operand (rtx, enum machine_mode);
extern int indirect_operand (rtx, enum machine_mode);
extern int mode_independent_operand (rtx, enum machine_mode);
extern int comparison_operator (rtx, enum machine_mode);
extern int offsettable_memref_p (rtx);
extern int offsettable_nonstrict_memref_p (rtx);
extern int offsettable_address_p (int, enum machine_mode, rtx);
extern int mode_dependent_address_p (rtx);
extern int recog (rtx, rtx, int *);
extern void add_clobbers (rtx, int);
extern int added_clobbers_hard_reg_p (int);
extern void insn_extract (rtx);
extern void extract_insn (rtx);
extern void extract_constrain_insn_cached (rtx);
extern void extract_insn_cached (rtx);
extern void preprocess_constraints (void);
extern rtx peep2_next_insn (int);
extern int peep2_regno_dead_p (int, int);
extern int peep2_reg_dead_p (int, rtx);
extern rtx peep2_find_free_register (int, int, const char *, enum machine_mode, HARD_REG_ELT_TYPE *);
extern void peephole2_optimize (FILE *);
extern rtx peephole2_insns (rtx, rtx, int *);
extern int volatile_ok;
extern int which_alternative;
struct recog_data
{
rtx operand[30];
rtx *operand_loc[30];
const char *constraints[30];
enum machine_mode operand_mode[30];
enum op_type operand_type[30];
rtx *dup_loc[4];
char dup_num[4];
# 191 "../../gcc/recog.h"
char n_operands;
char n_dups;
char n_alternatives;
rtx insn;
};
extern struct recog_data recog_data;
extern struct operand_alternative recog_op_alt[30][30];
typedef int (*insn_operand_predicate_fn) (rtx, enum machine_mode);
typedef const char * (*insn_output_fn) (rtx *, rtx);
typedef rtx (*insn_gen_fn) (rtx, ...);
struct insn_operand_data
{
const insn_operand_predicate_fn predicate;
const char *const constraint;
const enum machine_mode mode : 16;
const char strict_low;
const char eliminable;
};
# 236 "../../gcc/recog.h"
struct insn_data
{
const char *const name;
const void * output;
const insn_gen_fn genfun;
const struct insn_operand_data *const operand;
const char n_operands;
const char n_dups;
const char n_alternatives;
const char output_format;
};
extern const struct insn_data insn_data[];
# 46 "../../gcc/predict.c" 2
# 1 "../../gcc/expr.h" 1
# 52 "../../gcc/expr.h"
enum expand_modifier {EXPAND_NORMAL, EXPAND_SUM, EXPAND_CONST_ADDRESS,
EXPAND_INITIALIZER, EXPAND_WRITE};
# 69 "../../gcc/expr.h"
struct args_size
{
long constant;
tree var;
};
# 119 "../../gcc/expr.h"
enum direction {none, upward, downward};
# 256 "../../gcc/expr.h"
enum optab_methods
{
OPTAB_DIRECT,
OPTAB_LIB,
OPTAB_WIDEN,
OPTAB_LIB_WIDEN,
OPTAB_MUST_WIDEN
};
extern rtx expand_simple_binop (enum machine_mode, enum rtx_code, rtx, rtx, rtx, int, enum optab_methods);
extern rtx expand_simple_unop (enum machine_mode, enum rtx_code, rtx, rtx, int);
extern int have_insn_for (enum rtx_code, enum machine_mode);
extern void emit_libcall_block (rtx, rtx, rtx, rtx);
extern rtx gen_add2_insn (rtx, rtx);
extern rtx gen_add3_insn (rtx, rtx, rtx);
extern rtx gen_sub2_insn (rtx, rtx);
extern rtx gen_sub3_insn (rtx, rtx, rtx);
extern rtx gen_move_insn (rtx, rtx);
extern int have_add2_insn (rtx, rtx);
extern int have_sub2_insn (rtx, rtx);
extern void emit_cmp_and_jump_insns (rtx, rtx, enum rtx_code, rtx, enum machine_mode, int, rtx);
extern void emit_indirect_jump (rtx);
rtx emit_conditional_move (rtx, enum rtx_code, rtx, rtx, enum machine_mode, rtx, rtx, enum machine_mode, int);
int can_conditionally_move_p (enum machine_mode mode);
# 316 "../../gcc/expr.h"
extern rtx negate_rtx (enum machine_mode, rtx);
extern rtx expand_and (enum machine_mode, rtx, rtx, rtx);
extern rtx emit_store_flag (rtx, enum rtx_code, rtx, rtx, enum machine_mode, int, int);
extern rtx emit_store_flag_force (rtx, enum rtx_code, rtx, rtx, enum machine_mode, int, int);
extern rtx canonicalize_condition (rtx, rtx, int, rtx *, rtx);
extern rtx get_condition (rtx, rtx *);
extern rtx gen_cond_trap (enum rtx_code, rtx, rtx, rtx);
extern rtx expand_builtin (tree, rtx, rtx, enum machine_mode, int);
extern void std_expand_builtin_va_start (int, tree, rtx);
extern rtx std_expand_builtin_va_arg (tree, tree);
extern rtx expand_builtin_va_arg (tree, tree);
extern void default_init_builtins (void);
extern rtx default_expand_builtin (tree, rtx, rtx, enum machine_mode, int);
extern void expand_builtin_setjmp_setup (rtx, rtx);
extern void expand_builtin_setjmp_receiver (rtx);
extern void expand_builtin_longjmp (rtx, rtx);
extern rtx expand_builtin_saveregs (void);
extern void expand_builtin_trap (void);
extern long get_varargs_alias_set (void);
extern long get_frame_alias_set (void);
extern void record_base_value (unsigned int, rtx, int);
extern void record_alias_subset (long, long);
extern long new_alias_set (void);
extern int can_address_p (tree);
extern void init_expr_once (void);
extern void init_expr (void);
extern void init_stor_layout_once (void);
extern void finish_expr_for_function (void);
extern rtx protect_from_queue (rtx, int);
extern void emit_queue (void);
extern int queued_subexp_p (rtx);
extern void convert_move (rtx, rtx, int);
extern rtx convert_to_mode (enum machine_mode, rtx, int);
extern rtx convert_modes (enum machine_mode, enum machine_mode, rtx, int);
extern rtx emit_block_move (rtx, rtx, rtx);
extern void move_block_to_reg (int, rtx, int, enum machine_mode);
extern void move_block_from_reg (int, rtx, int, int);
extern void emit_group_load (rtx, rtx, int);
extern void emit_group_store (rtx, rtx, int);
extern rtx copy_blkmode_from_reg (rtx,rtx,tree);
extern void use_reg (rtx *, rtx);
extern void use_regs (rtx *, int, int);
extern void use_group_regs (rtx *, rtx);
extern rtx clear_storage (rtx, rtx);
extern int can_store_by_pieces (unsigned long, rtx (*) (void *, long, enum machine_mode), void *, unsigned int);
# 452 "../../gcc/expr.h"
extern void store_by_pieces (rtx, unsigned long, rtx (*) (void *, long, enum machine_mode), void *, unsigned int);
extern rtx emit_move_insn (rtx, rtx);
extern rtx emit_move_insn_1 (rtx, rtx);
extern rtx push_block (rtx, int, int);
extern void emit_push_insn (rtx, enum machine_mode, tree, rtx, unsigned int, int, rtx, int, rtx, rtx, int, rtx);
extern rtx expand_assignment (tree, tree, int, int);
extern rtx store_expr (tree, rtx, int);
extern rtx force_operand (rtx, rtx);
# 495 "../../gcc/expr.h"
extern tree find_placeholder (tree, tree *);
extern rtx expand_expr (tree, rtx, enum machine_mode, enum expand_modifier);
extern void init_pending_stack_adjust (void);
extern void clear_pending_stack_adjust (void);
extern void do_pending_stack_adjust (void);
extern tree string_constant (tree, tree *);
extern void jumpifnot (tree, rtx);
extern void jumpif (tree, rtx);
extern void do_jump (tree, rtx, rtx);
extern rtx compare_from_rtx (rtx, rtx, enum rtx_code, int, enum machine_mode, rtx);
extern void do_compare_rtx_and_jump (rtx, rtx, enum rtx_code, int, enum machine_mode, rtx, rtx, rtx);
extern int try_casesi (tree, tree, tree, tree, rtx, rtx);
extern int try_tablejump (tree, tree, tree, tree, rtx, rtx);
extern unsigned int case_values_threshold (void);
extern rtx expr_size (tree);
extern rtx lookup_static_chain (tree);
extern rtx fix_lexical_addr (rtx, tree);
extern rtx trampoline_address (tree);
extern rtx hard_function_value (tree, tree, int);
extern rtx prepare_call_address (rtx, tree, rtx *, int, int);
extern rtx expand_call (tree, rtx, int);
extern rtx expand_shift (enum tree_code, enum machine_mode, rtx, tree, rtx, int);
extern rtx expand_divmod (int, enum tree_code, enum machine_mode, rtx, rtx, rtx, int);
extern void locate_and_pad_parm (enum machine_mode, tree, int, tree, struct args_size *, struct args_size *, struct args_size *, struct args_size *);
extern rtx expand_inline_function (tree, tree, rtx, int, tree, rtx);
extern rtx label_rtx (tree);
extern rtx promoted_input_arg (unsigned int, enum machine_mode *, int *);
extern rtx eliminate_constant_term (rtx, rtx *);
extern rtx memory_address (enum machine_mode, rtx);
extern rtx memory_address_noforce (enum machine_mode, rtx);
extern void set_mem_alias_set (rtx, long);
extern void set_mem_align (rtx, unsigned int);
extern void set_mem_expr (rtx, tree);
extern void set_mem_offset (rtx, rtx);
extern rtx change_address (rtx, enum machine_mode, rtx);
# 636 "../../gcc/expr.h"
extern rtx adjust_address_1 (rtx, enum machine_mode, long, int, int);
extern rtx adjust_automodify_address_1 (rtx, enum machine_mode, rtx, long, int);
extern rtx offset_address (rtx, rtx, long);
extern rtx replace_equiv_address (rtx, rtx);
extern rtx replace_equiv_address_nv (rtx, rtx);
extern rtx widen_memory_access (rtx, enum machine_mode, long);
extern rtx validize_mem (rtx);
extern void maybe_set_unchanging (rtx, tree);
extern void set_mem_attributes (rtx, tree, int);
extern rtx assemble_trampoline_template (void);
extern rtx stabilize (rtx);
extern rtx copy_all_regs (rtx);
extern rtx copy_to_reg (rtx);
extern rtx copy_addr_to_reg (rtx);
extern rtx copy_to_mode_reg (enum machine_mode, rtx);
extern rtx copy_to_suggested_reg (rtx, rtx, enum machine_mode);
extern rtx force_reg (enum machine_mode, rtx);
extern rtx force_not_mem (rtx);
extern enum machine_mode promote_mode (tree, enum machine_mode, int *, int);
extern void adjust_stack (rtx);
extern void anti_adjust_stack (rtx);
enum save_level {SAVE_BLOCK, SAVE_FUNCTION, SAVE_NONLOCAL};
extern void emit_stack_save (enum save_level, rtx *, rtx);
extern void emit_stack_restore (enum save_level, rtx, rtx);
extern rtx allocate_dynamic_stack_space (rtx, rtx, int);
extern void probe_stack_range (long, rtx);
extern rtx hard_libcall_value (enum machine_mode);
extern rtx round_push (rtx);
enum extraction_pattern { EP_insv, EP_extv, EP_extzv };
extern enum machine_mode
mode_for_extraction (enum extraction_pattern, int);
extern rtx store_bit_field (rtx, unsigned long, unsigned long, enum machine_mode, rtx, long);
extern rtx extract_bit_field (rtx, unsigned long, unsigned long, int, rtx, enum machine_mode, enum machine_mode, long);
extern rtx expand_mult (enum machine_mode, rtx, rtx, rtx, int);
extern rtx expand_mult_add (rtx, rtx, rtx, rtx,enum machine_mode, int);
extern rtx expand_mult_highpart_adjust (enum machine_mode, rtx, rtx, rtx, rtx, int);
extern rtx assemble_static_space (int);
extern rtx (*lang_expand_expr) (union tree_node *, rtx, enum machine_mode, enum expand_modifier modifier);
extern int safe_from_p (rtx, tree, int);
extern void init_optabs (void);
extern void init_all_optabs (void);
extern rtx init_one_libfunc (const char *);
extern void do_jump_by_parts_equality_rtx (rtx, rtx, rtx);
extern void do_jump_by_parts_greater_rtx (enum machine_mode, int, rtx, rtx, rtx, rtx);
extern void mark_seen_cases (tree, unsigned char *, long, int);
# 47 "../../gcc/predict.c" 2
# 1 "../../gcc/predict.h" 1
# 23 "../../gcc/predict.h"
enum br_predictor
{
# 1 "../../gcc/predict.def" 1
# 40 "../../gcc/predict.def"
PRED_COMBINED,
PRED_DS_THEORY,
PRED_FIRST_MATCH,
PRED_NO_PREDICTION,
PRED_UNCONDITIONAL,
PRED_LOOP_ITERATIONS,
PRED_BUILTIN_EXPECT,
PRED_NORETURN,
PRED_LOOP_BRANCH,
PRED_LOOP_EXIT,
PRED_LOOP_CONDITION,
PRED_LOOP_PRECONDITIONING,
PRED_LOOP_HEADER,
PRED_POINTER,
PRED_OPCODE_POSITIVE,
PRED_OPCODE_NONEQUAL,
PRED_FPOPCODE,
PRED_CALL,
PRED_ERROR_RETURN,
# 26 "../../gcc/predict.h" 2
END_PREDICTORS
};
enum prediction
{
NOT_TAKEN,
TAKEN
};
extern void predict_insn_def (rtx, enum br_predictor, enum prediction);
extern void predict_insn (rtx, enum br_predictor, int);
extern void predict_edge (edge, enum br_predictor, int);
extern void predict_edge_def (edge, enum br_predictor, enum prediction);
# 48 "../../gcc/predict.c" 2
# 58 "../../gcc/predict.c"
static void combine_predictions_for_insn (rtx, basic_block);
static void dump_prediction (enum br_predictor, int, basic_block, int);
static void estimate_loops_at_level (struct loop *loop);
static void propagate_freq (basic_block);
static void estimate_bb_frequencies (struct loops *);
static void counts_to_freqs (void);
struct predictor_info
{
const char *const name;
const int hitrate;
const int flags;
};
# 86 "../../gcc/predict.c"
static const struct predictor_info predictor_info[]= {
# 1 "../../gcc/predict.def" 1
# 40 "../../gcc/predict.def"
{"combined", (10000), 0},
{"DS theory", (10000), 0},
{"first match", (10000), 0},
{"no prediction", (10000), 0},
{"unconditional jump", (10000), 1},
{"loop iterations", (10000), 1},
{"__builtin_expect", (10000 - (10000 / 10 - 1)), 1},
{"noreturn call", ((int) ((99) * 10000 + 50) / 100), 1},
{"loop branch", ((int) ((89) * 10000 + 50) / 100), 1},
{"loop exit", ((int) ((90) * 10000 + 50) / 100), 1},
{"loop condition", (10000 - (10000 / 10 - 1)), 0},
{"loop preconditioning", (10000 - (10000 / 10 - 1)), 0},
{"loop header", ((int) ((64) * 10000 + 50) / 100), 0},
{"pointer", ((int) ((81) * 10000 + 50) / 100), 0},
{"opcode values positive", ((int) ((79) * 10000 + 50) / 100), 0},
{"opcode values nonequal", ((int) ((71) * 10000 + 50) / 100), 0},
{"fp_opcode", ((int) ((90) * 10000 + 50) / 100), 0},
{"call", ((int) ((70) * 10000 + 50) / 100), 0},
{"error return", ((int) ((52) * 10000 + 50) / 100), 0},
# 88 "../../gcc/predict.c" 2
{((void *)0), 0, 0}
};
void
predict_insn (insn, predictor, probability)
rtx insn;
int probability;
enum br_predictor predictor;
{
if (!any_condjump_p (insn))
fancy_abort ("../../gcc/predict.c", 101, __FUNCTION__);
(((insn)->fld[6]).rtx)
= gen_rtx_fmt_ee (EXPR_LIST, (REG_BR_PRED), (gen_rtx_fmt_ee (CONCAT, (VOIDmode), (gen_rtx_CONST_INT (VOIDmode, (long) ((int) predictor))), (gen_rtx_CONST_INT (VOIDmode, (long) ((int) probability))))), ((((insn)->fld[6]).rtx)));
}
void
predict_insn_def (insn, predictor, taken)
rtx insn;
enum br_predictor predictor;
enum prediction taken;
{
int probability = predictor_info[(int) predictor].hitrate;
if (taken != TAKEN)
probability = 10000 - probability;
predict_insn (insn, predictor, probability);
}
void
predict_edge (e, predictor, probability)
edge e;
int probability;
enum br_predictor predictor;
{
rtx last_insn;
last_insn = e->src->end;
if (!any_condjump_p (last_insn))
return;
if (e->flags & 1)
probability = 10000 - probability;
predict_insn (last_insn, predictor, probability);
}
void
predict_edge_def (e, predictor, taken)
edge e;
enum br_predictor predictor;
enum prediction taken;
{
int probability = predictor_info[(int) predictor].hitrate;
if (taken != TAKEN)
probability = 10000 - probability;
predict_edge (e, predictor, probability);
}
void
invert_br_probabilities (insn)
rtx insn;
{
rtx note;
for (note = (((insn)->fld[6]).rtx); note; note = (((note)->fld[1]).rtx))
if (((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_BR_PROB)
(((note)->fld[0]).rtx) = gen_rtx_CONST_INT (VOIDmode, (long) (10000 - ((((((note)->fld[0]).rtx))->fld[0]).rtwint)));
else if (((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_BR_PRED)
((((((note)->fld[0]).rtx))->fld[1]).rtx)
= gen_rtx_CONST_INT (VOIDmode, (long) (10000 - (((((((((note)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint)));
}
static void
dump_prediction (predictor, probability, bb, used)
enum br_predictor predictor;
int probability;
basic_block bb;
int used;
{
edge e = bb->succ;
if (!rtl_dump_file)
return;
while (e->flags & 1)
e = e->succ_next;
fprintf (rtl_dump_file, " %s heuristics%s: %.1f%%",
predictor_info[predictor].name,
used ? "" : " (ignored)", probability * 100.0 / 10000);
if (bb->count)
{
fprintf (rtl_dump_file, " exec ");
fprintf (rtl_dump_file, "%ld", bb->count);
fprintf (rtl_dump_file, " hit ");
fprintf (rtl_dump_file, "%ld", e->count);
fprintf (rtl_dump_file, " (%.1f%%)", e->count * 100.0 / bb->count);
}
fprintf (rtl_dump_file, "\n");
}
static void
combine_predictions_for_insn (insn, bb)
rtx insn;
basic_block bb;
{
rtx prob_note = find_reg_note (insn, REG_BR_PROB, 0);
rtx *pnote = &(((insn)->fld[6]).rtx);
rtx note;
int best_probability = (10000 / 2);
int best_predictor = END_PREDICTORS;
int combined_probability = 10000 / 2;
int d;
_Bool first_match = 0;
_Bool found = 0;
if (rtl_dump_file)
fprintf (rtl_dump_file, "Predictions for insn %i bb %i\n", (((insn)->fld[0]).rtint),
bb->index);
for (note = (((insn)->fld[6]).rtx); note; note = (((note)->fld[1]).rtx))
if (((enum reg_note) ((enum machine_mode) (note)->mode)) == REG_BR_PRED)
{
int predictor = (((((((((note)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtwint);
int probability = (((((((((note)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint);
found = 1;
if (best_predictor > predictor)
best_probability = probability, best_predictor = predictor;
d = (combined_probability * probability
+ (10000 - combined_probability)
* (10000 - probability));
if (d == 0)
combined_probability = 10000 / 2;
else
combined_probability = (((double) combined_probability) * probability
* 10000 / d + 0.5);
}
if (predictor_info [best_predictor].flags & 1)
first_match = 1;
if (!found)
dump_prediction (PRED_NO_PREDICTION, combined_probability, bb, 1);
else
{
dump_prediction (PRED_DS_THEORY, combined_probability, bb, !first_match);
dump_prediction (PRED_FIRST_MATCH, best_probability, bb, first_match);
}
if (first_match)
combined_probability = best_probability;
dump_prediction (PRED_COMBINED, combined_probability, bb, 1);
while (*pnote)
{
if (((enum reg_note) ((enum machine_mode) (*pnote)->mode)) == REG_BR_PRED)
{
int predictor = (((((((((*pnote)->fld[0]).rtx))->fld[0]).rtx))->fld[0]).rtwint);
int probability = (((((((((*pnote)->fld[0]).rtx))->fld[1]).rtx))->fld[0]).rtwint);
dump_prediction (predictor, probability, bb,
!first_match || best_predictor == predictor);
*pnote = (((*pnote)->fld[1]).rtx);
}
else
pnote = &(((*pnote)->fld[1]).rtx);
}
if (!prob_note)
{
(((insn)->fld[6]).rtx)
= gen_rtx_fmt_ee (EXPR_LIST, (REG_BR_PROB), (gen_rtx_CONST_INT (VOIDmode, (long) (combined_probability))), ((((insn)->fld[6]).rtx)));
if (bb->succ->succ_next)
{
((bb)->succ->flags & 1 ? (bb)->succ->succ_next : (bb)->succ)->probability = combined_probability;
((bb)->succ->flags & 1 ? (bb)->succ : (bb)->succ->succ_next)->probability
= 10000 - combined_probability;
}
}
}
void
estimate_probability (loops_info)
struct loops *loops_info;
{
sbitmap *dominators, *post_dominators;
int i;
int found_noreturn = 0;
dominators = sbitmap_vector_alloc (n_basic_blocks, n_basic_blocks);
post_dominators = sbitmap_vector_alloc (n_basic_blocks, n_basic_blocks);
calculate_dominance_info (((void *)0), dominators, CDI_DOMINATORS);
calculate_dominance_info (((void *)0), post_dominators, CDI_POST_DOMINATORS);
for (i = 0; i < loops_info->num; i++)
{
int j;
int exits;
struct loop *loop = &loops_info->array[i];
flow_loop_scan (loops_info, loop, 8);
exits = loop->num_exits;
for (j = loop->first->index; j <= loop->last->index; ++j)
if (((loop->nodes)->elms [(j) / ((unsigned) (8 * 8))] >> (j) % ((unsigned) (8 * 8)) & 1))
{
int header_found = 0;
edge e;
for (e = (((basic_block_info)->data.bb[(j)]))->succ; e; e = e->succ_next)
if (e->dest == loop->header
&& e->src == loop->latch)
{
header_found = 1;
predict_edge_def (e, PRED_LOOP_BRANCH, TAKEN);
}
if (!header_found)
for (e = (((basic_block_info)->data.bb[(j)]))->succ; e; e = e->succ_next)
if (e->dest->index < 0
|| !((loop->nodes)->elms [(e->dest->index) / ((unsigned) (8 * 8))] >> (e->dest->index) % ((unsigned) (8 * 8)) & 1))
predict_edge
(e, PRED_LOOP_EXIT,
(10000
- predictor_info [(int) PRED_LOOP_EXIT].hitrate)
/ exits);
}
}
for (i = 0; i < n_basic_blocks; i++)
{
basic_block bb = (((basic_block_info)->data.bb[(i)]));
rtx last_insn = bb->end;
rtx cond, earliest;
edge e;
if (bb->succ == ((void *)0) && !found_noreturn)
{
int y;
found_noreturn = 1;
for (y = 0; y < n_basic_blocks; y++)
if (!((post_dominators[y])->elms [(i) / ((unsigned) (8 * 8))] >> (i) % ((unsigned) (8 * 8)) & 1))
for (e = (((basic_block_info)->data.bb[(y)]))->succ; e; e = e->succ_next)
if (e->dest->index >= 0
&& ((post_dominators[e->dest->index])->elms [(i) / ((unsigned) (8 * 8))] >> (i) % ((unsigned) (8 * 8)) & 1))
predict_edge_def (e, PRED_NORETURN, NOT_TAKEN);
}
if (((enum rtx_code) (last_insn)->code) != JUMP_INSN || ! any_condjump_p (last_insn))
continue;
for (e = bb->succ; e; e = e->succ_next)
{
if (e->dest == (&entry_exit_blocks[1])
|| (e->dest->succ && !e->dest->succ->succ_next
&& e->dest->succ->dest == (&entry_exit_blocks[1])))
predict_edge_def (e, PRED_ERROR_RETURN, NOT_TAKEN);
if (e->dest != (&entry_exit_blocks[1]) && e->dest != bb
&& ((dominators[e->dest->index])->elms [(e->src->index) / ((unsigned) (8 * 8))] >> (e->src->index) % ((unsigned) (8 * 8)) & 1)
&& !((post_dominators[e->src->index])->elms [(e->dest->index) / ((unsigned) (8 * 8))] >> (e->dest->index) % ((unsigned) (8 * 8)) & 1))
{
rtx insn;
for (insn = e->dest->head; insn != (((e->dest->end)->fld[2]).rtx);
insn = (((insn)->fld[2]).rtx))
if (((enum rtx_code) (insn)->code) == CALL_INSN
&& ! ((insn)->unchanging))
{
predict_edge_def (e, PRED_CALL, NOT_TAKEN);
break;
}
}
}
cond = get_condition (last_insn, &earliest);
if (! cond)
continue;
if ((rtx_class[(int) (((enum rtx_code) (cond)->code))]) == '<'
&& (((((enum rtx_code) ((((cond)->fld[0]).rtx))->code) == REG) && (((((cond)->fld[0]).rtx))->frame_related))
|| ((((enum rtx_code) ((((cond)->fld[1]).rtx))->code) == REG) && (((((cond)->fld[1]).rtx))->frame_related))))
{
if (((enum rtx_code) (cond)->code) == EQ)
predict_insn_def (last_insn, PRED_POINTER, NOT_TAKEN);
else if (((enum rtx_code) (cond)->code) == NE)
predict_insn_def (last_insn, PRED_POINTER, TAKEN);
}
else
switch (((enum rtx_code) (cond)->code))
{
case CONST_INT:
predict_insn_def (last_insn, PRED_UNCONDITIONAL,
cond == (const_int_rtx[64]) ? NOT_TAKEN : TAKEN);
break;
case EQ:
case UNEQ:
if (((mode_class[(int) (((enum machine_mode) ((((cond)->fld[0]).rtx))->mode))]) == MODE_FLOAT || (mode_class[(int) (((enum machine_mode) ((((cond)->fld[0]).rtx))->mode))]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (((enum machine_mode) ((((cond)->fld[0]).rtx))->mode))]) == MODE_VECTOR_FLOAT))
;
else if ((((cond)->fld[1]).rtx) == (const_int_rtx[64])
|| (((cond)->fld[0]).rtx) == (const_int_rtx[64]))
;
else
predict_insn_def (last_insn, PRED_OPCODE_NONEQUAL, NOT_TAKEN);
break;
case NE:
case LTGT:
if (((mode_class[(int) (((enum machine_mode) ((((cond)->fld[0]).rtx))->mode))]) == MODE_FLOAT || (mode_class[(int) (((enum machine_mode) ((((cond)->fld[0]).rtx))->mode))]) == MODE_COMPLEX_FLOAT || (mode_class[(int) (((enum machine_mode) ((((cond)->fld[0]).rtx))->mode))]) == MODE_VECTOR_FLOAT))
;
else if ((((cond)->fld[1]).rtx) == (const_int_rtx[64])
|| (((cond)->fld[0]).rtx) == (const_int_rtx[64]))
;
else
predict_insn_def (last_insn, PRED_OPCODE_NONEQUAL, TAKEN);
break;
case ORDERED:
predict_insn_def (last_insn, PRED_FPOPCODE, TAKEN);
break;
case UNORDERED:
predict_insn_def (last_insn, PRED_FPOPCODE, NOT_TAKEN);
break;
case LE:
case LT:
if ((((cond)->fld[1]).rtx) == (const_int_rtx[64]) || (((cond)->fld[1]).rtx) == (const_int_rtx[64 +1])
|| (((cond)->fld[1]).rtx) == (const_int_rtx[64 -1]))
predict_insn_def (last_insn, PRED_OPCODE_POSITIVE, NOT_TAKEN);
break;
case GE:
case GT:
if ((((cond)->fld[1]).rtx) == (const_int_rtx[64]) || (((cond)->fld[1]).rtx) == (const_int_rtx[64 +1])
|| (((cond)->fld[1]).rtx) == (const_int_rtx[64 -1]))
predict_insn_def (last_insn, PRED_OPCODE_POSITIVE, TAKEN);
break;
default:
break;
}
}
for (i = 0; i < n_basic_blocks; i++)
if (((enum rtx_code) (((((basic_block_info)->data.bb[(i)]))->end))->code) == JUMP_INSN
&& any_condjump_p (((((basic_block_info)->data.bb[(i)]))->end)))
combine_predictions_for_insn (((((basic_block_info)->data.bb[(i)]))->end), (((basic_block_info)->data.bb[(i)])));
free(post_dominators);
free(dominators);
estimate_bb_frequencies (loops_info);
}
void
expected_value_to_br_prob ()
{
rtx insn, cond, ev = (rtx) 0, ev_reg = (rtx) 0;
for (insn = get_insns (); insn ; insn = (((insn)->fld[2]).rtx))
{
switch (((enum rtx_code) (insn)->code))
{
case NOTE:
if ((((insn)->fld[4]).rtint) == NOTE_INSN_EXPECTED_VALUE)
{
ev = (((insn)->fld[3]).rtx);
ev_reg = (((ev)->fld[0]).rtx);
delete_insn (insn);
}
continue;
case CODE_LABEL:
ev = (rtx) 0;
continue;
case JUMP_INSN:
if (((enum rtx_code) (insn)->code) != JUMP_INSN || ev == (rtx) 0
|| ! any_condjump_p (insn))
continue;
break;
default:
if (ev && reg_set_p (ev_reg, insn))
ev = (rtx) 0;
continue;
}
# 593 "../../gcc/predict.c"
cond = ((((((pc_set (insn))->fld[1]).rtx))->fld[0]).rtx);
cond = canonicalize_condition (insn, cond, 0, ((void *)0), ev_reg);
if (! cond || (((cond)->fld[0]).rtx) != ev_reg
|| ((enum rtx_code) ((((cond)->fld[1]).rtx))->code) != CONST_INT)
continue;
cond = gen_rtx_fmt_ee (((enum rtx_code) (cond)->code), VOIDmode,
(((ev)->fld[1]).rtx), (((cond)->fld[1]).rtx));
cond = simplify_rtx (cond);
if (cond != const_true_rtx && cond != (const_int_rtx[64]))
fancy_abort ("../../gcc/predict.c", 608, __FUNCTION__);
predict_insn_def (insn, PRED_BUILTIN_EXPECT,
cond == const_true_rtx ? TAKEN : NOT_TAKEN);
}
}
typedef struct block_info_def
{
volatile double frequency;
basic_block next;
int tovisit:1;
int npredecessors;
} *block_info;
typedef struct edge_info_def
{
volatile double back_edge_prob;
int back_edge:1;
} *edge_info;
static void
propagate_freq (head)
basic_block head;
{
basic_block bb = head;
basic_block last = bb;
edge e;
basic_block nextbb;
int n;
for (n = 0; n < n_basic_blocks; n++)
{
basic_block bb = (((basic_block_info)->data.bb[(n)]));
if (((block_info) (bb)->aux)->tovisit)
{
int count = 0;
for (e = bb->pred; e; e = e->pred_next)
if (((block_info) (e->src)->aux)->tovisit && !(e->flags & 32))
count++;
else if (((block_info) (e->src)->aux)->tovisit
&& rtl_dump_file && !((edge_info) (e)->aux)->back_edge)
fprintf (rtl_dump_file,
"Irreducible region hit, ignoring edge to %i->%i\n",
e->src->index, bb->index);
((block_info) (bb)->aux)->npredecessors = count;
}
}
((block_info) (head)->aux)->frequency = 1;
for (; bb; bb = nextbb)
{
double cyclic_probability = 0, frequency = 0;
nextbb = ((block_info) (bb)->aux)->next;
((block_info) (bb)->aux)->next = ((void *)0);
if (bb != head)
{
for (e = bb->pred; e; e = e->pred_next)
if (((edge_info) (e)->aux)->back_edge)
cyclic_probability += ((edge_info) (e)->aux)->back_edge_prob;
else if (!(e->flags & 32))
frequency += (e->probability
* ((block_info) (e->src)->aux)->frequency /
10000);
if (cyclic_probability > 1.0 - 1.0 / 10000)
cyclic_probability = 1.0 - 1.0 / 10000;
((block_info) (bb)->aux)->frequency = frequency / (1 - cyclic_probability);
}
((block_info) (bb)->aux)->tovisit = 0;
for (e = bb->succ; e; e = e->succ_next)
if (e->dest == head)
((edge_info) (e)->aux)->back_edge_prob
= ((e->probability * ((block_info) (bb)->aux)->frequency)
/ 10000);
for (e = bb->succ; e; e = e->succ_next)
if (!(e->flags & 32)
&& ((block_info) (e->dest)->aux)->npredecessors)
{
((block_info) (e->dest)->aux)->npredecessors--;
if (!((block_info) (e->dest)->aux)->npredecessors)
{
if (!nextbb)
nextbb = e->dest;
else
((block_info) (last)->aux)->next = e->dest;
last = e->dest;
}
}
}
}
static void
estimate_loops_at_level (first_loop)
struct loop *first_loop;
{
struct loop *l, *loop = first_loop;
for (loop = first_loop; loop; loop = loop->next)
{
int n;
edge e;
estimate_loops_at_level (loop->inner);
for (e = loop->latch->succ; e->dest != loop->header; e = e->succ_next)
;
((edge_info) (e)->aux)->back_edge = 1;
if (loop->shared)
{
for (l = loop->next; l; l = l->next)
if (l->header == loop->header)
break;
if (l)
continue;
}
for (l = loop->shared ? first_loop : loop; l != loop->next; l = l->next)
if (loop->header == l->header)
do { unsigned int word_num_; unsigned int bit_num_ = (0) % (unsigned int) ((unsigned) (8 * 8)); unsigned int size_ = (l->nodes)->size; unsigned long *ptr_ = (l->nodes)->elms; for (word_num_ = (0) / (unsigned int) ((unsigned) (8 * 8)); word_num_ < size_; word_num_++, bit_num_ = 0) { unsigned long word_ = ptr_[word_num_]; if (word_ != 0) for (; bit_num_ < ((unsigned) (8 * 8)); bit_num_++) { unsigned long _mask = (unsigned long) 1 << bit_num_; if ((word_ & _mask) != 0) { word_ &= ~ _mask; (n) = word_num_ * ((unsigned) (8 * 8)) + bit_num_; ((block_info) ((((basic_block_info)->data.bb[(n)])))->aux)->tovisit = 1; if (word_ == 0) break; } } } } while (0);
propagate_freq (loop->header);
}
}
static void
counts_to_freqs ()
{
long count_max = 1;
int i;
for (i = 0; i < n_basic_blocks; i++)
count_max = (((((basic_block_info)->data.bb[(i)]))->count) > (count_max) ? ((((basic_block_info)->data.bb[(i)]))->count) : (count_max));
for (i = -2; i < n_basic_blocks; i++)
{
basic_block bb;
if (i == -2)
bb = (&entry_exit_blocks[0]);
else if (i == -1)
bb = (&entry_exit_blocks[1]);
else
bb = (((basic_block_info)->data.bb[(i)]));
bb->frequency = (bb->count * 10000 + count_max / 2) / count_max;
}
}
_Bool
expensive_function_p (threshold)
int threshold;
{
unsigned int sum = 0;
int i;
unsigned int limit;
if (threshold > 10000)
fancy_abort ("../../gcc/predict.c", 828, __FUNCTION__);
if ((&entry_exit_blocks[0])->frequency == 0)
return 1;
limit = (&entry_exit_blocks[0])->frequency * threshold;
for (i = 0; i < n_basic_blocks; i++)
{
basic_block bb = (((basic_block_info)->data.bb[(i)]));
rtx insn;
for (insn = bb->head; insn != (((bb->end)->fld[2]).rtx);
insn = (((insn)->fld[2]).rtx))
if (active_insn_p (insn))
{
sum += bb->frequency;
if (sum > limit)
return 1;
}
}
return 0;
}
static void
estimate_bb_frequencies (loops)
struct loops *loops;
{
int i;
double freq_max = 0;
mark_dfs_back_edges ();
if (flag_branch_probabilities)
{
counts_to_freqs ();
return;
}
for (i = 0; i < n_basic_blocks; i++)
{
rtx last_insn = ((((basic_block_info)->data.bb[(i)]))->end);
int probability;
edge fallthru, branch;
if (((enum rtx_code) (last_insn)->code) != JUMP_INSN || !any_condjump_p (last_insn)
|| (((basic_block_info)->data.bb[(i)]))->succ->succ_next == ((void *)0))
{
int nedges = 0;
edge e;
for (e = (((basic_block_info)->data.bb[(i)]))->succ; e; e = e->succ_next)
{
nedges++;
if (e->probability != 0)
break;
}
if (!e)
for (e = (((basic_block_info)->data.bb[(i)]))->succ; e; e = e->succ_next)
e->probability = (10000 + nedges / 2) / nedges;
}
else
{
probability = ((((((find_reg_note (last_insn, REG_BR_PROB, 0))->fld[0]).rtx))->fld[0]).rtwint);
fallthru = (((basic_block_info)->data.bb[(i)]))->succ;
if (!fallthru->flags & 1)
fallthru = fallthru->succ_next;
branch = (((basic_block_info)->data.bb[(i)]))->succ;
if (branch->flags & 1)
branch = branch->succ_next;
branch->probability = probability;
fallthru->probability = 10000 - probability;
}
}
(&entry_exit_blocks[0])->succ->probability = 10000;
alloc_aux_for_blocks (sizeof (struct block_info_def));
alloc_aux_for_edges (sizeof (struct edge_info_def));
for (i = -2; i < n_basic_blocks; i++)
{
edge e;
basic_block bb;
if (i == -2)
bb = (&entry_exit_blocks[0]);
else if (i == -1)
bb = (&entry_exit_blocks[1]);
else
bb = (((basic_block_info)->data.bb[(i)]));
((block_info) (bb)->aux)->tovisit = 0;
for (e = bb->succ; e; e = e->succ_next)
((edge_info) (e)->aux)->back_edge_prob = ((double) e->probability
/ 10000);
}
estimate_loops_at_level (loops->tree_root);
for (i = 0; i < n_basic_blocks; i++)
((block_info) ((((basic_block_info)->data.bb[(i)])))->aux)->tovisit = 1;
((block_info) ((&entry_exit_blocks[0]))->aux)->tovisit = 1;
((block_info) ((&entry_exit_blocks[1]))->aux)->tovisit = 1;
propagate_freq ((&entry_exit_blocks[0]));
for (i = 0; i < n_basic_blocks; i++)
if (((block_info) ((((basic_block_info)->data.bb[(i)])))->aux)->frequency > freq_max)
freq_max = ((block_info) ((((basic_block_info)->data.bb[(i)])))->aux)->frequency;
for (i = -2; i < n_basic_blocks; i++)
{
basic_block bb;
volatile double tmp;
if (i == -2)
bb = (&entry_exit_blocks[0]);
else if (i == -1)
bb = (&entry_exit_blocks[1]);
else
bb = (((basic_block_info)->data.bb[(i)]));
tmp = ((block_info) (bb)->aux)->frequency * 10000;
tmp /= freq_max;
tmp += 0.5;
bb->frequency = tmp;
}
free_aux_for_blocks ();
free_aux_for_edges ();
}