cfglayout.h: Remove.
2012-06-17 Steven Bosscher <steven@gcc.gnu.org> * cfglayout.h: Remove. * cfglayout.c: Remove. * function.h (struct function): Remove x_last_location field. * function.c: Do not include cfglayout.h. (expand_function_start): Do not call no-op force_next_line_note. (expand_function_end): Likewise. * cfgrtl.c: Do not include cfglayout.h. Include gt-cfgrtl.h. (unlink_insn_chain): Moved here from cfglayout.c. (skip_insns_after_block, label_for_bb, record_effective_endpoints, into_cfg_layout_mode, outof_cfg_layout_mode, pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode, relink_block_chain, fixup_reorder_chain, verify_insn_chain, fixup_fallthru_exit_predecessor, force_one_exit_fallthru, cfg_layout_can_duplicate_bb_p, duplicate_insn_chain, cfg_layout_duplicate_bb, cfg_layout_initialize, break_superblocks, cfg_layout_finalize): Likewise. (rtl_can_remove_branch_p): Likewise. * rtl.h (insn_scope): Move prototype from cfglayout.h here. (duplicate_insn_chain): Likewise. (force_next_line_note): Remove prototype. * emit-rtl.c: Do not include tree-flow.h, egad. Include vecprim.h. (last_location): Remove #define to emit.x_last_location. (force_next_line_note): Remove no-op function. (init_emit): Don't set x_last_location. (block_locators_locs, block_locators_blocks, locations_locators_locs, locations_locators_vals, prologue_locator, epilogue_locator, curr_location, last_location, curr_block, last_block, curr_rtl_loc): Move POD to here from cfglayout.c. (insn_locators_alloc, insn_locators_finalize, insn_locators_free, set_curr_insn_source_location, get_curr_insn_source_location, set_curr_insn_block, get_curr_insn_block, curr_insn_locator, locator_scope, insn_scope, locator_location, locator_line, insn_line, locator_file, insn_file, locator_eq): Move to here from cfglayout.c. * cfghooks.h: Remove double-include protection. (can_copy_bbs_p, copy_bbs): Move prototypes from cfglayout.h to here. * cfghooks.c (can_copy_bbs_p, copy_bbs): Move to here from cfglayout.c. * final.c: Do not include cfglayout.h. (choose_inner_scope, change_scope): Move to here from cfglayout.c. (reemit_insn_block_notes): Likewise. Make static. * tree-flow.h (tree_could_trap_p, operation_could_trap_helper_p, operation_could_trap_p, tree_could_throw_p): Move from here... * tree.h: ... to here. * gengtype.c (open_base_files): Remove cfglayout.h from the list. * profile.c: Do not include cfghooks.h. * cfgloopmanip.c: Do not include cfglayout.h and cfghooks.h. * modulo-sched.c: Likewise. * loop-unswitch.c: Do not include cfglayout.h. * sched-ebb.c: Likewise. * tracer.c: Likewise. * ddg.c: Likewise. * tree-vect-loop-manip.c: Likewise. * loop-init.c: Likewise. * dwarf2out.c: Likewise. * hw-doloop.c: Likewise. * loop-unroll.c: Likewise. * cfgcleanup.c: Likewise. * bb-reorder.c: Likewise. * sched-rgn.c: Likewise. * tree-cfg.c: Likewise. * config/alpha/alpha.c: Likewise. * config/spu/spu.c: Likewise. * config/sparc/sparc.c: Likewise. * config/sh/sh.c: Likewise. * config/c6x/c6x.c: Likewise. * config/ia64/ia64.c: Likewise. * config/rs6000/rs6000.c: Likewise. * config/score/score.c: Likewise. * config/mips/mips.c: Likewise. * config/bfin/bfin.c: Likewise. * Makefile.in (CFGAYOUT_H): Remove, and fixup users. * config/rs6000/t-rs6000 (rs6000.o): Do not depend on cfglayout.h. * config/spu/t-spu-elf (spu.o: $): Likewise. * config/sparc/t-sparc (sparc.o): Do not depend on CFGLAYOUT_H. From-SVN: r188712
This commit is contained in:
parent
1c1ad7bbbc
commit
78bde837ec
|
@ -896,7 +896,6 @@ SCHED_INT_H = sched-int.h $(INSN_ATTR_H) $(BASIC_BLOCK_H) $(RTL_H) $(DF_H) \
|
|||
SEL_SCHED_IR_H = sel-sched-ir.h $(INSN_ATTR_H) $(BASIC_BLOCK_H) $(RTL_H) \
|
||||
$(GGC_H) $(BITMAP_H) vecprim.h $(SCHED_INT_H) $(CFGLOOP_H) $(REGSET_H)
|
||||
SEL_SCHED_DUMP_H = sel-sched-dump.h $(SEL_SCHED_IR_H)
|
||||
CFGLAYOUT_H = cfglayout.h $(BASIC_BLOCK_H)
|
||||
CFGLOOP_H = cfgloop.h $(BASIC_BLOCK_H) vecprim.h double-int.h \
|
||||
$(BITMAP_H) sbitmap.h
|
||||
IPA_UTILS_H = ipa-utils.h $(TREE_H) $(CGRAPH_H)
|
||||
|
@ -1186,7 +1185,6 @@ OBJS = \
|
|||
cfgcleanup.o \
|
||||
cfgexpand.o \
|
||||
cfghooks.o \
|
||||
cfglayout.o \
|
||||
cfgloop.o \
|
||||
cfgloopanal.o \
|
||||
cfgloopmanip.o \
|
||||
|
@ -2172,7 +2170,7 @@ gtype-desc.o: gtype-desc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
|||
$(INPUT_H) $(TREE_H) $(RTL_H) $(FUNCTION_H) insn-config.h $(EXPR_H) \
|
||||
hard-reg-set.h $(BASIC_BLOCK_H) cselib.h $(INSN_ADDR_H) $(OPTABS_H) \
|
||||
$(LIBFUNCS_H) debug.h $(GGC_H) $(CGRAPH_H) $(TREE_FLOW_H) reload.h \
|
||||
$(CPP_ID_DATA_H) tree-chrec.h $(CFGLAYOUT_H) $(EXCEPT_H) output.h \
|
||||
$(CPP_ID_DATA_H) tree-chrec.h $(EXCEPT_H) output.h \
|
||||
$(CFGLOOP_H) $(TARGET_H) $(IPA_PROP_H) $(LTO_STREAMER_H) \
|
||||
target-globals.h
|
||||
|
||||
|
@ -2443,7 +2441,7 @@ tree-cfg.o : tree-cfg.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
|
|||
$(TREE_H) $(TM_P_H) $(GGC_H) $(FLAGS_H) \
|
||||
$(DIAGNOSTIC_CORE_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
|
||||
$(TREE_DUMP_H) $(EXCEPT_H) langhooks.h $(CFGLOOP_H) $(TREE_PASS_H) \
|
||||
$(CFGLAYOUT_H) $(BASIC_BLOCK_H) \
|
||||
$(BASIC_BLOCK_H) \
|
||||
value-prof.h tree-ssa-propagate.h $(TREE_INLINE_H) $(GIMPLE_PRETTY_PRINT_H)
|
||||
tree-cfgcleanup.o : tree-cfgcleanup.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
|
||||
$(TREE_H) $(TM_P_H) $(GGC_H) $(FLAGS_H) \
|
||||
|
@ -2652,7 +2650,7 @@ tree-vect-loop.o: tree-vect-loop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
|
|||
$(GIMPLE_PRETTY_PRINT_H) $(TARGET_H) $(TREE_DATA_REF_H)
|
||||
tree-vect-loop-manip.o: tree-vect-loop-manip.c $(CONFIG_H) $(SYSTEM_H) \
|
||||
coretypes.h $(TM_H) $(GGC_H) $(TREE_H) $(BASIC_BLOCK_H) \
|
||||
$(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(CFGLAYOUT_H) $(DIAGNOSTIC_CORE_H) \
|
||||
$(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(DIAGNOSTIC_CORE_H) \
|
||||
$(SCEV_H) $(TREE_VECTORIZER_H) langhooks.h $(GIMPLE_PRETTY_PRINT_H)
|
||||
tree-vect-patterns.o: tree-vect-patterns.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
|
||||
$(TM_H) $(GGC_H) $(TREE_H) $(TARGET_H) $(BASIC_BLOCK_H) \
|
||||
|
@ -2756,7 +2754,7 @@ toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
|
|||
$(RECOG_H) Makefile toplev.h $(DWARF2OUT_H) sdbout.h dbxout.h $(EXPR_H) \
|
||||
hard-reg-set.h $(BASIC_BLOCK_H) graph.h $(EXCEPT_H) $(REGS_H) $(TIMEVAR_H) \
|
||||
value-prof.h $(PARAMS_H) $(TM_P_H) reload.h ira.h dwarf2asm.h $(TARGET_H) \
|
||||
langhooks.h insn-flags.h $(CFGLAYOUT_H) $(CFGLOOP_H) hosthooks.h \
|
||||
langhooks.h insn-flags.h $(CFGLOOP_H) hosthooks.h \
|
||||
$(CGRAPH_H) $(COVERAGE_H) alloc-pool.h $(GGC_H) \
|
||||
$(OPTS_H) params.def tree-mudflap.h $(TREE_PASS_H) $(GIMPLE_H) \
|
||||
tree-ssa-alias.h $(PLUGIN_H) realmpfr.h tree-diagnostic.h \
|
||||
|
@ -2807,7 +2805,7 @@ varasm.o : varasm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
|
|||
$(CGRAPH_H) $(TARGET_DEF_H) tree-mudflap.h \
|
||||
pointer-set.h $(COMMON_TARGET_H)
|
||||
function.o : function.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
|
||||
$(TREE_H) $(CFGLAYOUT_H) $(GIMPLE_H) $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) \
|
||||
$(TREE_H) $(GIMPLE_H) $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) \
|
||||
$(OPTABS_H) $(LIBFUNCS_H) $(REGS_H) hard-reg-set.h insn-config.h $(RECOG_H) \
|
||||
output.h $(EXCEPT_H) $(HASHTAB_H) $(GGC_H) $(TM_P_H) langhooks.h \
|
||||
gt-function.h $(TARGET_H) $(BASIC_BLOCK_H) $(PREDICT_H) \
|
||||
|
@ -2880,7 +2878,7 @@ dwarf2out.o : dwarf2out.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
|||
$(LIBFUNCS_H) toplev.h $(DIAGNOSTIC_CORE_H) $(DWARF2OUT_H) reload.h \
|
||||
$(GGC_H) $(EXCEPT_H) dwarf2asm.h $(TM_P_H) langhooks.h $(HASHTAB_H) \
|
||||
gt-dwarf2out.h $(TARGET_H) $(CGRAPH_H) $(MD5_H) $(INPUT_H) $(FUNCTION_H) \
|
||||
$(GIMPLE_H) $(TREE_PASS_H) $(TREE_FLOW_H) $(CFGLAYOUT_H) \
|
||||
$(GIMPLE_H) $(TREE_PASS_H) $(TREE_FLOW_H) \
|
||||
$(TREE_PRETTY_PRINT_H) $(COMMON_TARGET_H) $(OPTS_H)
|
||||
dwarf2cfi.o : dwarf2cfi.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
version.h $(RTL_H) $(EXPR_H) $(REGS_H) $(FUNCTION_H) output.h \
|
||||
|
@ -2897,10 +2895,10 @@ xcoffout.o : xcoffout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
|||
godump.o : godump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) \
|
||||
$(TREE_H) $(GGC_H) pointer-set.h $(OBSTACK_H) debug.h gt-godump.h
|
||||
emit-rtl.o : emit-rtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
||||
$(TREE_H) $(FLAGS_H) $(FUNCTION_H) $(REGS_H) insn-config.h $(RECOG_H) \
|
||||
$(TREE_H) $(FLAGS_H) $(FUNCTION_H) $(REGS_H) insn-config.h $(RECOG_H) vecprim.h \
|
||||
$(GGC_H) $(EXPR_H) hard-reg-set.h $(BITMAP_H) $(DIAGNOSTIC_CORE_H) $(BASIC_BLOCK_H) \
|
||||
$(HASHTAB_H) $(TM_P_H) debug.h langhooks.h $(TREE_PASS_H) gt-emit-rtl.h \
|
||||
$(DF_H) $(PARAMS_H) $(TARGET_H) $(TREE_FLOW_H)
|
||||
$(DF_H) $(PARAMS_H) $(TARGET_H)
|
||||
real.o : real.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
|
||||
$(DIAGNOSTIC_CORE_H) $(TM_P_H) $(REAL_H) dfp.h realmpfr.h
|
||||
realmpfr.o : realmpfr.c realmpfr.h $(CONFIG_H) $(SYSTEM_H) $(REAL_H) $(TREE_H)
|
||||
|
@ -3135,7 +3133,7 @@ var-tracking.o : var-tracking.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
|||
pointer-set.h $(RECOG_H) $(TM_P_H) $(TREE_PRETTY_PRINT_H) $(ALIAS_H)
|
||||
profile.o : profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
||||
$(TREE_H) $(FLAGS_H) $(REGS_H) $(EXPR_H) $(FUNCTION_H) $(BASIC_BLOCK_H) \
|
||||
$(DIAGNOSTIC_CORE_H) $(COVERAGE_H) $(TREE_FLOW_H) value-prof.h cfghooks.h \
|
||||
$(DIAGNOSTIC_CORE_H) $(COVERAGE_H) $(TREE_FLOW_H) value-prof.h \
|
||||
$(CFGLOOP_H) $(TIMEVAR_H) $(TREE_PASS_H) profile.h
|
||||
mcf.o : mcf.c profile.h $(CONFIG_H) $(SYSTEM_H) $(TM_H) coretypes.h \
|
||||
$(BASIC_BLOCK_H) langhooks.h $(GCOV_IO_H) $(TREE_H)
|
||||
|
@ -3174,8 +3172,8 @@ cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
|
|||
$(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \
|
||||
$(FUNCTION_H) $(EXCEPT_H) $(TM_P_H) $(INSN_ATTR_H) \
|
||||
insn-config.h $(EXPR_H) \
|
||||
$(CFGLAYOUT_H) $(CFGLOOP_H) $(OBSTACK_H) $(TARGET_H) $(TREE_H) \
|
||||
$(TREE_PASS_H) $(DF_H) $(GGC_H) $(COMMON_TARGET_H)
|
||||
$(CFGLOOP_H) $(OBSTACK_H) $(TARGET_H) $(TREE_H) \
|
||||
$(TREE_PASS_H) $(DF_H) $(GGC_H) $(COMMON_TARGET_H) gt-cfgrtl.h
|
||||
cfganal.o : cfganal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
||||
$(BASIC_BLOCK_H) hard-reg-set.h insn-config.h $(RECOG_H) $(TM_P_H) \
|
||||
$(TIMEVAR_H) $(OBSTACK_H) $(DIAGNOSTIC_CORE_H) vecprim.h sbitmap.h \
|
||||
|
@ -3186,7 +3184,7 @@ cfgbuild.o : cfgbuild.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
|||
cfgcleanup.o : cfgcleanup.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
$(RTL_H) $(TIMEVAR_H) hard-reg-set.h $(FLAGS_H) $(RECOG_H) \
|
||||
$(DIAGNOSTIC_CORE_H) insn-config.h cselib.h $(TARGET_H) $(TM_P_H) $(PARAMS_H) \
|
||||
$(REGS_H) $(EMIT_RTL_H) $(CFGLAYOUT_H) $(TREE_PASS_H) $(CFGLOOP_H) $(EXPR_H) \
|
||||
$(REGS_H) $(EMIT_RTL_H) $(FUNCTION_H) $(TREE_PASS_H) $(CFGLOOP_H) $(EXPR_H) \
|
||||
$(DF_H) $(DBGCNT_H) dce.h
|
||||
cfgloop.o : cfgloop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) coretypes.h $(TM_H) \
|
||||
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(FLAGS_H) $(FUNCTION_H) \
|
||||
|
@ -3205,17 +3203,17 @@ loop-invariant.o : loop-invariant.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \
|
|||
coretypes.h $(TM_H) $(TM_P_H) $(FUNCTION_H) $(FLAGS_H) $(DF_H) \
|
||||
$(OBSTACK_H) $(HASHTAB_H) $(EXCEPT_H) $(PARAMS_H) $(REGS_H) ira.h
|
||||
cfgloopmanip.o : cfgloopmanip.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \
|
||||
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) \
|
||||
coretypes.h $(TM_H) cfghooks.h $(OBSTACK_H) $(TREE_FLOW_H)
|
||||
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) \
|
||||
coretypes.h $(TM_H) $(OBSTACK_H) $(TREE_FLOW_H)
|
||||
loop-init.o : loop-init.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(GGC_H) \
|
||||
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) \
|
||||
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) \
|
||||
coretypes.h $(TM_H) $(OBSTACK_H) $(TREE_PASS_H) $(TIMEVAR_H) $(FLAGS_H) \
|
||||
$(DF_H)
|
||||
loop-unswitch.o : loop-unswitch.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_H) \
|
||||
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) $(PARAMS_H) \
|
||||
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(PARAMS_H) \
|
||||
$(EXPR_H) coretypes.h $(TM_H) $(OBSTACK_H)
|
||||
loop-unroll.o: loop-unroll.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_H) \
|
||||
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) $(PARAMS_H) \
|
||||
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(PARAMS_H) \
|
||||
$(EXPR_H) coretypes.h $(TM_H) $(HASHTAB_H) $(RECOG_H) \
|
||||
$(OBSTACK_H)
|
||||
dominance.o : dominance.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
||||
|
@ -3328,13 +3326,13 @@ compare-elim.o : compare-elim.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
|
|||
ddg.o : ddg.c $(DDG_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TARGET_H) \
|
||||
$(DIAGNOSTIC_CORE_H) $(RTL_H) $(TM_P_H) $(REGS_H) $(FUNCTION_H) \
|
||||
$(FLAGS_H) insn-config.h $(INSN_ATTR_H) $(EXCEPT_H) $(RECOG_H) \
|
||||
$(SCHED_INT_H) $(CFGLAYOUT_H) $(CFGLOOP_H) $(EXPR_H) $(BITMAP_H) \
|
||||
$(SCHED_INT_H) $(CFGLOOP_H) $(EXPR_H) $(BITMAP_H) \
|
||||
hard-reg-set.h sbitmap.h $(TM_H)
|
||||
modulo-sched.o : modulo-sched.c $(DDG_H) $(CONFIG_H) $(CONFIG_H) $(SYSTEM_H) \
|
||||
coretypes.h $(TARGET_H) $(DIAGNOSTIC_CORE_H) $(RTL_H) $(TM_P_H) $(REGS_H) $(FUNCTION_H) \
|
||||
$(FLAGS_H) insn-config.h $(INSN_ATTR_H) $(EXCEPT_H) $(RECOG_H) \
|
||||
$(SCHED_INT_H) $(CFGLAYOUT_H) $(CFGLOOP_H) $(EXPR_H) $(PARAMS_H) \
|
||||
cfghooks.h $(GCOV_IO_H) hard-reg-set.h $(TM_H) $(TIMEVAR_H) $(TREE_PASS_H) \
|
||||
$(SCHED_INT_H) $(CFGLOOP_H) $(EXPR_H) $(PARAMS_H) \
|
||||
$(GCOV_IO_H) hard-reg-set.h $(TM_H) $(TIMEVAR_H) $(TREE_PASS_H) \
|
||||
$(DF_H) $(DBGCNT_H)
|
||||
haifa-sched.o : haifa-sched.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
||||
$(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(FUNCTION_H) \
|
||||
|
@ -3348,12 +3346,12 @@ sched-deps.o : sched-deps.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
|||
sched-rgn.o : sched-rgn.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
$(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
|
||||
$(FUNCTION_H) $(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(EXCEPT_H) $(PARAMS_H) \
|
||||
$(TM_P_H) sel-sched.h $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) $(TREE_PASS_H) \
|
||||
$(TM_P_H) sel-sched.h $(TARGET_H) $(TIMEVAR_H) $(TREE_PASS_H) \
|
||||
$(DBGCNT_H)
|
||||
sched-ebb.o : sched-ebb.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
$(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
|
||||
$(FUNCTION_H) $(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(EXCEPT_H) $(TM_P_H) \
|
||||
$(PARAMS_H) $(CFGLAYOUT_H) $(TARGET_H)
|
||||
$(PARAMS_H) $(TARGET_H)
|
||||
sched-vis.o : sched-vis.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
$(RTL_H) $(SCHED_INT_H) hard-reg-set.h $(BASIC_BLOCK_H) $(OBSTACK_H) \
|
||||
$(TREE_PASS_H) $(INSN_ATTR_H)
|
||||
|
@ -3366,7 +3364,7 @@ sel-sched.o : sel-sched.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
|||
sel-sched-dump.o : sel-sched-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
$(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
|
||||
$(FUNCTION_H) $(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(EXCEPT_H) $(PARAMS_H) \
|
||||
$(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) $(TREE_PASS_H) \
|
||||
$(TM_P_H) $(TARGET_H) $(TIMEVAR_H) $(TREE_PASS_H) \
|
||||
$(SEL_SCHED_DUMP_H) $(GGC_H) $(TREE_H) $(LANGHOOKS_DEF_H) $(SEL_SCHED_IR_H) \
|
||||
$(BASIC_BLOCK_H) cselib.h
|
||||
sel-sched-ir.o : sel-sched-ir.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
|
@ -3380,7 +3378,7 @@ final.o : final.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
|
|||
insn-config.h $(INSN_ATTR_H) $(FUNCTION_H) output.h hard-reg-set.h \
|
||||
$(EXCEPT_H) debug.h xcoffout.h toplev.h $(DIAGNOSTIC_CORE_H) reload.h $(DWARF2OUT_H) \
|
||||
$(TREE_PASS_H) $(BASIC_BLOCK_H) $(TM_P_H) $(TARGET_H) $(EXPR_H) \
|
||||
$(CFGLAYOUT_H) dbxout.h $(TIMEVAR_H) $(CGRAPH_H) $(COVERAGE_H) \
|
||||
dbxout.h $(TIMEVAR_H) $(CGRAPH_H) $(COVERAGE_H) \
|
||||
$(DF_H) vecprim.h $(GGC_H) $(CFGLOOP_H) $(PARAMS_H) $(TREE_FLOW_H) \
|
||||
$(TARGET_DEF_H) $(TREE_PRETTY_PRINT_H)
|
||||
recog.o : recog.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
|
||||
|
@ -3403,19 +3401,14 @@ predict.o: predict.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
|||
lists.o: lists.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(DIAGNOSTIC_CORE_H) \
|
||||
$(RTL_H) $(GGC_H) gt-lists.h
|
||||
bb-reorder.o : bb-reorder.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
$(RTL_H) $(FLAGS_H) $(TIMEVAR_H) output.h $(CFGLAYOUT_H) $(FIBHEAP_H) \
|
||||
$(RTL_H) $(FLAGS_H) $(TIMEVAR_H) output.h $(FIBHEAP_H) \
|
||||
$(TARGET_H) $(FUNCTION_H) $(TM_P_H) $(OBSTACK_H) $(EXPR_H) $(REGS_H) \
|
||||
$(PARAMS_H) toplev.h $(DIAGNOSTIC_CORE_H) $(TREE_PASS_H) $(DF_H) \
|
||||
$(EXCEPT_H) bb-reorder.h
|
||||
tracer.o : tracer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
||||
$(TREE_H) $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLAYOUT_H) \
|
||||
$(TREE_H) $(BASIC_BLOCK_H) hard-reg-set.h \
|
||||
$(FLAGS_H) $(TIMEVAR_H) $(PARAMS_H) $(COVERAGE_H) $(FIBHEAP_H) \
|
||||
$(TREE_PASS_H) $(TREE_FLOW_H) $(TREE_INLINE_H) $(CFGLOOP_H)
|
||||
cfglayout.o : cfglayout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
$(RTL_H) $(TREE_H) insn-config.h $(BASIC_BLOCK_H) hard-reg-set.h \
|
||||
$(FUNCTION_H) $(CFGLAYOUT_H) $(CFGLOOP_H) $(TARGET_H) gt-cfglayout.h \
|
||||
$(GGC_H) alloc-pool.h $(FLAGS_H) $(OBSTACK_H) $(TREE_PASS_H) vecprim.h \
|
||||
$(DF_H) $(EMIT_RTL_H) $(COMMON_TARGET_H)
|
||||
timevar.o : timevar.c $(CONFIG_H) $(SYSTEM_H) $(TIMEVAR_H)
|
||||
regcprop.o : regcprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
$(RTL_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \
|
||||
|
@ -3451,7 +3444,7 @@ target-globals.o : target-globals.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
|
|||
lower-subreg.h
|
||||
hw-doloop.o : hw-doloop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
$(RTL_H) $(FLAGS_H) $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H) \
|
||||
$(DF_H) $(CFGLAYOUT_H) $(CFGLOOP_H) $(RECOG_H) $(TARGET_H) \
|
||||
$(DF_H) $(CFGLOOP_H) $(RECOG_H) $(TARGET_H) \
|
||||
$(REGS_H) hw-doloop.h
|
||||
$(out_object_file): $(out_file) $(CONFIG_H) coretypes.h $(TM_H) $(TREE_H) \
|
||||
$(RTL_H) $(REGS_H) hard-reg-set.h insn-config.h conditions.h \
|
||||
|
@ -3741,7 +3734,7 @@ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
|
|||
$(srcdir)/gcse.c $(srcdir)/godump.c \
|
||||
$(srcdir)/lists.c $(srcdir)/optabs.c \
|
||||
$(srcdir)/profile.c $(srcdir)/mcf.c \
|
||||
$(srcdir)/reg-stack.c $(srcdir)/cfglayout.c $(srcdir)/cfglayout.h \
|
||||
$(srcdir)/reg-stack.c $(srcdir)/cfgrtl.c \
|
||||
$(srcdir)/sdbout.c $(srcdir)/stor-layout.c \
|
||||
$(srcdir)/stringpool.c $(srcdir)/tree.c $(srcdir)/varasm.c \
|
||||
$(srcdir)/gimple.h $(srcdir)/gimple.c \
|
||||
|
|
|
@ -74,7 +74,6 @@
|
|||
#include "flags.h"
|
||||
#include "timevar.h"
|
||||
#include "output.h"
|
||||
#include "cfglayout.h"
|
||||
#include "fibheap.h"
|
||||
#include "target.h"
|
||||
#include "function.h"
|
||||
|
|
|
@ -47,7 +47,7 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "params.h"
|
||||
#include "tm_p.h"
|
||||
#include "target.h"
|
||||
#include "cfglayout.h"
|
||||
#include "function.h" /* For inline functions in emit-rtl.h they need crtl. */
|
||||
#include "emit-rtl.h"
|
||||
#include "tree-pass.h"
|
||||
#include "cfgloop.h"
|
||||
|
|
121
gcc/cfghooks.c
121
gcc/cfghooks.c
|
@ -1161,3 +1161,124 @@ lv_add_condition_to_bb (basic_block first, basic_block second,
|
|||
gcc_assert (cfg_hooks->lv_add_condition_to_bb);
|
||||
cfg_hooks->lv_add_condition_to_bb (first, second, new_block, cond);
|
||||
}
|
||||
|
||||
/* Checks whether all N blocks in BBS array can be copied. */
|
||||
bool
|
||||
can_copy_bbs_p (basic_block *bbs, unsigned n)
|
||||
{
|
||||
unsigned i;
|
||||
edge e;
|
||||
int ret = true;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
bbs[i]->flags |= BB_DUPLICATED;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
/* In case we should redirect abnormal edge during duplication, fail. */
|
||||
edge_iterator ei;
|
||||
FOR_EACH_EDGE (e, ei, bbs[i]->succs)
|
||||
if ((e->flags & EDGE_ABNORMAL)
|
||||
&& (e->dest->flags & BB_DUPLICATED))
|
||||
{
|
||||
ret = false;
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (!can_duplicate_block_p (bbs[i]))
|
||||
{
|
||||
ret = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
end:
|
||||
for (i = 0; i < n; i++)
|
||||
bbs[i]->flags &= ~BB_DUPLICATED;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Duplicates N basic blocks stored in array BBS. Newly created basic blocks
|
||||
are placed into array NEW_BBS in the same order. Edges from basic blocks
|
||||
in BBS are also duplicated and copies of those of them
|
||||
that lead into BBS are redirected to appropriate newly created block. The
|
||||
function assigns bbs into loops (copy of basic block bb is assigned to
|
||||
bb->loop_father->copy loop, so this must be set up correctly in advance)
|
||||
and updates dominators locally (LOOPS structure that contains the information
|
||||
about dominators is passed to enable this).
|
||||
|
||||
BASE is the superloop to that basic block belongs; if its header or latch
|
||||
is copied, we do not set the new blocks as header or latch.
|
||||
|
||||
Created copies of N_EDGES edges in array EDGES are stored in array NEW_EDGES,
|
||||
also in the same order.
|
||||
|
||||
Newly created basic blocks are put after the basic block AFTER in the
|
||||
instruction stream, and the order of the blocks in BBS array is preserved. */
|
||||
|
||||
void
|
||||
copy_bbs (basic_block *bbs, unsigned n, basic_block *new_bbs,
|
||||
edge *edges, unsigned num_edges, edge *new_edges,
|
||||
struct loop *base, basic_block after)
|
||||
{
|
||||
unsigned i, j;
|
||||
basic_block bb, new_bb, dom_bb;
|
||||
edge e;
|
||||
|
||||
/* Duplicate bbs, update dominators, assign bbs to loops. */
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
/* Duplicate. */
|
||||
bb = bbs[i];
|
||||
new_bb = new_bbs[i] = duplicate_block (bb, NULL, after);
|
||||
after = new_bb;
|
||||
bb->flags |= BB_DUPLICATED;
|
||||
/* Possibly set loop header. */
|
||||
if (bb->loop_father->header == bb && bb->loop_father != base)
|
||||
new_bb->loop_father->header = new_bb;
|
||||
/* Or latch. */
|
||||
if (bb->loop_father->latch == bb && bb->loop_father != base)
|
||||
new_bb->loop_father->latch = new_bb;
|
||||
}
|
||||
|
||||
/* Set dominators. */
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
bb = bbs[i];
|
||||
new_bb = new_bbs[i];
|
||||
|
||||
dom_bb = get_immediate_dominator (CDI_DOMINATORS, bb);
|
||||
if (dom_bb->flags & BB_DUPLICATED)
|
||||
{
|
||||
dom_bb = get_bb_copy (dom_bb);
|
||||
set_immediate_dominator (CDI_DOMINATORS, new_bb, dom_bb);
|
||||
}
|
||||
}
|
||||
|
||||
/* Redirect edges. */
|
||||
for (j = 0; j < num_edges; j++)
|
||||
new_edges[j] = NULL;
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
edge_iterator ei;
|
||||
new_bb = new_bbs[i];
|
||||
bb = bbs[i];
|
||||
|
||||
FOR_EACH_EDGE (e, ei, new_bb->succs)
|
||||
{
|
||||
for (j = 0; j < num_edges; j++)
|
||||
if (edges[j] && edges[j]->src == bb && edges[j]->dest == e->dest)
|
||||
new_edges[j] = e;
|
||||
|
||||
if (!(e->dest->flags & BB_DUPLICATED))
|
||||
continue;
|
||||
redirect_edge_and_branch_force (e, get_bb_copy (e->dest));
|
||||
}
|
||||
}
|
||||
|
||||
/* Clear information about duplicates. */
|
||||
for (i = 0; i < n; i++)
|
||||
bbs[i]->flags &= ~BB_DUPLICATED;
|
||||
}
|
||||
|
||||
|
|
|
@ -19,8 +19,7 @@ You should have received a copy of the GNU General Public License
|
|||
along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef GCC_CFGHOOKS_H
|
||||
#define GCC_CFGHOOKS_H
|
||||
/* Only basic-block.h includes this. */
|
||||
|
||||
struct cfg_hooks
|
||||
{
|
||||
|
@ -185,6 +184,14 @@ extern void lv_adjust_loop_header_phi (basic_block, basic_block, basic_block,
|
|||
extern void lv_add_condition_to_bb (basic_block, basic_block, basic_block,
|
||||
void *);
|
||||
|
||||
extern bool can_copy_bbs_p (basic_block *, unsigned);
|
||||
extern void copy_bbs (basic_block *, unsigned, basic_block *,
|
||||
edge *, unsigned, edge *, struct loop *,
|
||||
basic_block);
|
||||
|
||||
extern void cfg_layout_initialize (unsigned int);
|
||||
extern void cfg_layout_finalize (void);
|
||||
|
||||
/* Hooks containers. */
|
||||
extern struct cfg_hooks gimple_cfg_hooks;
|
||||
extern struct cfg_hooks rtl_cfg_hooks;
|
||||
|
@ -198,4 +205,3 @@ extern void gimple_register_cfg_hooks (void);
|
|||
extern struct cfg_hooks get_cfg_hooks (void);
|
||||
extern void set_cfg_hooks (struct cfg_hooks);
|
||||
|
||||
#endif /* GCC_CFGHOOKS_H */
|
||||
|
|
1498
gcc/cfglayout.c
1498
gcc/cfglayout.c
File diff suppressed because it is too large
Load Diff
|
@ -1,38 +0,0 @@
|
|||
/* Basic block reordering routines for the GNU compiler.
|
||||
Copyright (C) 2000, 2003, 2004, 2007, 2011 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3, or (at your option)
|
||||
any later version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef GCC_CFGLAYOUT_H
|
||||
#define GCC_CFGLAYOUT_H
|
||||
|
||||
#include "basic-block.h"
|
||||
|
||||
extern GTY(()) rtx cfg_layout_function_footer;
|
||||
extern GTY(()) rtx cfg_layout_function_header;
|
||||
|
||||
extern void cfg_layout_initialize (unsigned int);
|
||||
extern void cfg_layout_finalize (void);
|
||||
extern tree insn_scope (const_rtx);
|
||||
extern void reemit_insn_block_notes (void);
|
||||
extern bool can_copy_bbs_p (basic_block *, unsigned);
|
||||
extern void copy_bbs (basic_block *, unsigned, basic_block *,
|
||||
edge *, unsigned, edge *, struct loop *,
|
||||
basic_block);
|
||||
extern rtx duplicate_insn_chain (rtx, rtx);
|
||||
|
||||
#endif /* GCC_CFGLAYOUT_H */
|
|
@ -27,8 +27,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "obstack.h"
|
||||
#include "basic-block.h"
|
||||
#include "cfgloop.h"
|
||||
#include "cfglayout.h"
|
||||
#include "cfghooks.h"
|
||||
#include "tree-flow.h"
|
||||
|
||||
static void copy_loops_to (struct loop **, int,
|
||||
|
|
983
gcc/cfgrtl.c
983
gcc/cfgrtl.c
File diff suppressed because it is too large
Load Diff
|
@ -50,7 +50,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "debug.h"
|
||||
#include "langhooks.h"
|
||||
#include "splay-tree.h"
|
||||
#include "cfglayout.h"
|
||||
#include "gimple.h"
|
||||
#include "tree-flow.h"
|
||||
#include "tree-stdarg.h"
|
||||
|
|
|
@ -51,7 +51,6 @@
|
|||
#include "tm-constrs.h"
|
||||
#include "gt-bfin.h"
|
||||
#include "basic-block.h"
|
||||
#include "cfglayout.h"
|
||||
#include "timevar.h"
|
||||
#include "df.h"
|
||||
#include "sel-sched.h"
|
||||
|
|
|
@ -43,7 +43,6 @@
|
|||
#include "function.h"
|
||||
#include "diagnostic-core.h"
|
||||
#include "cgraph.h"
|
||||
#include "cfglayout.h"
|
||||
#include "langhooks.h"
|
||||
#include "target.h"
|
||||
#include "target-def.h"
|
||||
|
|
|
@ -51,7 +51,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "tm_p.h"
|
||||
#include "hashtab.h"
|
||||
#include "langhooks.h"
|
||||
#include "cfglayout.h"
|
||||
#include "gimple.h"
|
||||
#include "intl.h"
|
||||
#include "df.h"
|
||||
|
|
|
@ -51,7 +51,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "target.h"
|
||||
#include "target-def.h"
|
||||
#include "langhooks.h"
|
||||
#include "cfglayout.h"
|
||||
#include "sched-int.h"
|
||||
#include "gimple.h"
|
||||
#include "bitmap.h"
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
#include "common/common-target.h"
|
||||
#include "langhooks.h"
|
||||
#include "reload.h"
|
||||
#include "cfglayout.h"
|
||||
#include "cfgloop.h"
|
||||
#include "sched-int.h"
|
||||
#include "gimple.h"
|
||||
|
|
|
@ -27,7 +27,7 @@ rs6000.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
|||
$(OBSTACK_H) $(TREE_H) $(EXPR_H) $(OPTABS_H) except.h function.h \
|
||||
output.h dbxout.h $(BASIC_BLOCK_H) toplev.h $(GGC_H) $(HASHTAB_H) \
|
||||
$(TM_P_H) $(TARGET_H) $(TARGET_DEF_H) langhooks.h reload.h gt-rs6000.h \
|
||||
cfglayout.h cfgloop.h $(OPTS_H) $(COMMON_TARGET_H)
|
||||
cfgloop.h $(OPTS_H) $(COMMON_TARGET_H)
|
||||
|
||||
rs6000-c.o: $(srcdir)/config/rs6000/rs6000-c.c \
|
||||
$(srcdir)/config/rs6000/rs6000-protos.h \
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include "target.h"
|
||||
#include "target-def.h"
|
||||
#include "langhooks.h"
|
||||
#include "cfglayout.h"
|
||||
#include "df.h"
|
||||
#include "opts.h"
|
||||
|
||||
|
|
|
@ -46,7 +46,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "langhooks.h"
|
||||
#include "basic-block.h"
|
||||
#include "df.h"
|
||||
#include "cfglayout.h"
|
||||
#include "intl.h"
|
||||
#include "sched-int.h"
|
||||
#include "params.h"
|
||||
|
|
|
@ -49,7 +49,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "target.h"
|
||||
#include "target-def.h"
|
||||
#include "common/common-target.h"
|
||||
#include "cfglayout.h"
|
||||
#include "gimple.h"
|
||||
#include "langhooks.h"
|
||||
#include "reload.h"
|
||||
|
|
|
@ -23,7 +23,7 @@ sparc.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
|||
insn-codes.h conditions.h output.h $(INSN_ATTR_H) $(FLAGS_H) \
|
||||
$(FUNCTION_H) $(EXCEPT_H) $(EXPR_H) $(OPTABS_H) $(RECOG_H) \
|
||||
$(DIAGNOSTIC_CORE_H) $(GGC_H) $(TM_P_H) debug.h $(TARGET_H) \
|
||||
$(TARGET_DEF_H) $(COMMON_TARGET_H) $(CFGLAYOUT_H) $(GIMPLE_H) \
|
||||
$(TARGET_DEF_H) $(COMMON_TARGET_H) $(GIMPLE_H) \
|
||||
langhooks.h reload.h $(PARAMS_H) $(DF_H) dwarf2out.h $(OPTS_H) \
|
||||
gt-sparc.h
|
||||
|
||||
|
|
|
@ -43,7 +43,6 @@
|
|||
#include "target-def.h"
|
||||
#include "langhooks.h"
|
||||
#include "reload.h"
|
||||
#include "cfglayout.h"
|
||||
#include "sched-int.h"
|
||||
#include "params.h"
|
||||
#include "machmode.h"
|
||||
|
|
|
@ -23,7 +23,7 @@ spu.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
|||
real.h insn-config.h conditions.h insn-attr.h flags.h $(RECOG_H) \
|
||||
$(OBSTACK_H) $(TREE_H) $(EXPR_H) $(OPTABS_H) except.h function.h \
|
||||
output.h $(BASIC_BLOCK_H) $(GGC_H) $(HASHTAB_H) \
|
||||
$(TM_P_H) $(TARGET_H) $(TARGET_DEF_H) langhooks.h reload.h cfglayout.h \
|
||||
$(TM_P_H) $(TARGET_H) $(TARGET_DEF_H) langhooks.h reload.h \
|
||||
$(srcdir)/config/spu/spu-protos.h \
|
||||
$(srcdir)/config/spu/spu-builtins.def
|
||||
|
||||
|
|
|
@ -37,7 +37,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "recog.h"
|
||||
#include "sched-int.h"
|
||||
#include "target.h"
|
||||
#include "cfglayout.h"
|
||||
#include "cfgloop.h"
|
||||
#include "sbitmap.h"
|
||||
#include "expr.h"
|
||||
|
|
|
@ -93,7 +93,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "gimple.h"
|
||||
#include "tree-pass.h"
|
||||
#include "tree-flow.h"
|
||||
#include "cfglayout.h" /* for insn_scope. */
|
||||
#include "opts.h"
|
||||
|
||||
static void dwarf2out_source_line (unsigned int, const char *, int, bool);
|
||||
|
|
256
gcc/emit-rtl.c
256
gcc/emit-rtl.c
|
@ -45,6 +45,7 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "flags.h"
|
||||
#include "function.h"
|
||||
#include "expr.h"
|
||||
#include "vecprim.h"
|
||||
#include "regs.h"
|
||||
#include "hard-reg-set.h"
|
||||
#include "hashtab.h"
|
||||
|
@ -59,7 +60,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "df.h"
|
||||
#include "params.h"
|
||||
#include "target.h"
|
||||
#include "tree-flow.h"
|
||||
|
||||
struct target_rtl default_target_rtl;
|
||||
#if SWITCHABLE_TARGET
|
||||
|
@ -147,7 +147,6 @@ static GTY ((if_marked ("ggc_marked_p"), param_is (struct rtx_def)))
|
|||
|
||||
#define cur_insn_uid (crtl->emit.x_cur_insn_uid)
|
||||
#define cur_debug_insn_uid (crtl->emit.x_cur_debug_insn_uid)
|
||||
#define last_location (crtl->emit.x_last_location)
|
||||
#define first_label_num (crtl->emit.x_first_label_num)
|
||||
|
||||
static rtx make_call_insn_raw (rtx);
|
||||
|
@ -4927,15 +4926,6 @@ gen_use (rtx x)
|
|||
return seq;
|
||||
}
|
||||
|
||||
/* Cause next statement to emit a line note even if the line number
|
||||
has not changed. */
|
||||
|
||||
void
|
||||
force_next_line_note (void)
|
||||
{
|
||||
last_location = -1;
|
||||
}
|
||||
|
||||
/* Place a note of KIND on insn INSN with DATUM as the datum. If a
|
||||
note of this type already exists, remove it first. */
|
||||
|
||||
|
@ -5404,7 +5394,6 @@ init_emit (void)
|
|||
cur_insn_uid = 1;
|
||||
cur_debug_insn_uid = 1;
|
||||
reg_rtx_no = LAST_VIRTUAL_REGISTER + 1;
|
||||
last_location = UNKNOWN_LOCATION;
|
||||
first_label_num = label_num;
|
||||
seq_stack = NULL;
|
||||
|
||||
|
@ -5929,4 +5918,247 @@ gen_hard_reg_clobber (enum machine_mode mode, unsigned int regno)
|
|||
gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (mode, regno)));
|
||||
}
|
||||
|
||||
/* Data structures representing mapping of INSN_LOCATOR into scope blocks, line
|
||||
numbers and files. In order to be GGC friendly we need to use separate
|
||||
varrays. This also slightly improve the memory locality in binary search.
|
||||
The _locs array contains locators where the given property change. The
|
||||
block_locators_blocks contains the scope block that is used for all insn
|
||||
locator greater than corresponding block_locators_locs value and smaller
|
||||
than the following one. Similarly for the other properties. */
|
||||
static VEC(int,heap) *block_locators_locs;
|
||||
static GTY(()) VEC(tree,gc) *block_locators_blocks;
|
||||
static VEC(int,heap) *locations_locators_locs;
|
||||
DEF_VEC_O(location_t);
|
||||
DEF_VEC_ALLOC_O(location_t,heap);
|
||||
static VEC(location_t,heap) *locations_locators_vals;
|
||||
int prologue_locator;
|
||||
int epilogue_locator;
|
||||
|
||||
/* Hold current location information and last location information, so the
|
||||
datastructures are built lazily only when some instructions in given
|
||||
place are needed. */
|
||||
static location_t curr_location, last_location;
|
||||
static tree curr_block, last_block;
|
||||
static int curr_rtl_loc = -1;
|
||||
|
||||
/* Allocate insn locator datastructure. */
|
||||
void
|
||||
insn_locators_alloc (void)
|
||||
{
|
||||
prologue_locator = epilogue_locator = 0;
|
||||
|
||||
block_locators_locs = VEC_alloc (int, heap, 32);
|
||||
block_locators_blocks = VEC_alloc (tree, gc, 32);
|
||||
locations_locators_locs = VEC_alloc (int, heap, 32);
|
||||
locations_locators_vals = VEC_alloc (location_t, heap, 32);
|
||||
|
||||
curr_location = UNKNOWN_LOCATION;
|
||||
last_location = UNKNOWN_LOCATION;
|
||||
curr_block = NULL;
|
||||
last_block = NULL;
|
||||
curr_rtl_loc = 0;
|
||||
}
|
||||
|
||||
/* At the end of emit stage, clear current location. */
|
||||
void
|
||||
insn_locators_finalize (void)
|
||||
{
|
||||
if (curr_rtl_loc >= 0)
|
||||
epilogue_locator = curr_insn_locator ();
|
||||
curr_rtl_loc = -1;
|
||||
}
|
||||
|
||||
/* Allocate insn locator datastructure. */
|
||||
void
|
||||
insn_locators_free (void)
|
||||
{
|
||||
prologue_locator = epilogue_locator = 0;
|
||||
|
||||
VEC_free (int, heap, block_locators_locs);
|
||||
VEC_free (tree,gc, block_locators_blocks);
|
||||
VEC_free (int, heap, locations_locators_locs);
|
||||
VEC_free (location_t, heap, locations_locators_vals);
|
||||
}
|
||||
|
||||
/* Set current location. */
|
||||
void
|
||||
set_curr_insn_source_location (location_t location)
|
||||
{
|
||||
/* IV opts calls into RTL expansion to compute costs of operations. At this
|
||||
time locators are not initialized. */
|
||||
if (curr_rtl_loc == -1)
|
||||
return;
|
||||
curr_location = location;
|
||||
}
|
||||
|
||||
/* Get current location. */
|
||||
location_t
|
||||
get_curr_insn_source_location (void)
|
||||
{
|
||||
return curr_location;
|
||||
}
|
||||
|
||||
/* Set current scope block. */
|
||||
void
|
||||
set_curr_insn_block (tree b)
|
||||
{
|
||||
/* IV opts calls into RTL expansion to compute costs of operations. At this
|
||||
time locators are not initialized. */
|
||||
if (curr_rtl_loc == -1)
|
||||
return;
|
||||
if (b)
|
||||
curr_block = b;
|
||||
}
|
||||
|
||||
/* Get current scope block. */
|
||||
tree
|
||||
get_curr_insn_block (void)
|
||||
{
|
||||
return curr_block;
|
||||
}
|
||||
|
||||
/* Return current insn locator. */
|
||||
int
|
||||
curr_insn_locator (void)
|
||||
{
|
||||
if (curr_rtl_loc == -1 || curr_location == UNKNOWN_LOCATION)
|
||||
return 0;
|
||||
if (last_block != curr_block)
|
||||
{
|
||||
curr_rtl_loc++;
|
||||
VEC_safe_push (int, heap, block_locators_locs, curr_rtl_loc);
|
||||
VEC_safe_push (tree, gc, block_locators_blocks, curr_block);
|
||||
last_block = curr_block;
|
||||
}
|
||||
if (last_location != curr_location)
|
||||
{
|
||||
curr_rtl_loc++;
|
||||
VEC_safe_push (int, heap, locations_locators_locs, curr_rtl_loc);
|
||||
VEC_safe_push (location_t, heap, locations_locators_vals, &curr_location);
|
||||
last_location = curr_location;
|
||||
}
|
||||
return curr_rtl_loc;
|
||||
}
|
||||
|
||||
|
||||
/* Return lexical scope block locator belongs to. */
|
||||
static tree
|
||||
locator_scope (int loc)
|
||||
{
|
||||
int max = VEC_length (int, block_locators_locs);
|
||||
int min = 0;
|
||||
|
||||
/* When block_locators_locs was initialized, the pro- and epilogue
|
||||
insns didn't exist yet and can therefore not be found this way.
|
||||
But we know that they belong to the outer most block of the
|
||||
current function.
|
||||
Without this test, the prologue would be put inside the block of
|
||||
the first valid instruction in the function and when that first
|
||||
insn is part of an inlined function then the low_pc of that
|
||||
inlined function is messed up. Likewise for the epilogue and
|
||||
the last valid instruction. */
|
||||
if (loc == prologue_locator || loc == epilogue_locator)
|
||||
return DECL_INITIAL (cfun->decl);
|
||||
|
||||
if (!max || !loc)
|
||||
return NULL;
|
||||
while (1)
|
||||
{
|
||||
int pos = (min + max) / 2;
|
||||
int tmp = VEC_index (int, block_locators_locs, pos);
|
||||
|
||||
if (tmp <= loc && min != pos)
|
||||
min = pos;
|
||||
else if (tmp > loc && max != pos)
|
||||
max = pos;
|
||||
else
|
||||
{
|
||||
min = pos;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return VEC_index (tree, block_locators_blocks, min);
|
||||
}
|
||||
|
||||
/* Return lexical scope block insn belongs to. */
|
||||
tree
|
||||
insn_scope (const_rtx insn)
|
||||
{
|
||||
return locator_scope (INSN_LOCATOR (insn));
|
||||
}
|
||||
|
||||
/* Return line number of the statement specified by the locator. */
|
||||
location_t
|
||||
locator_location (int loc)
|
||||
{
|
||||
int max = VEC_length (int, locations_locators_locs);
|
||||
int min = 0;
|
||||
|
||||
while (1)
|
||||
{
|
||||
int pos = (min + max) / 2;
|
||||
int tmp = VEC_index (int, locations_locators_locs, pos);
|
||||
|
||||
if (tmp <= loc && min != pos)
|
||||
min = pos;
|
||||
else if (tmp > loc && max != pos)
|
||||
max = pos;
|
||||
else
|
||||
{
|
||||
min = pos;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return *VEC_index (location_t, locations_locators_vals, min);
|
||||
}
|
||||
|
||||
/* Return source line of the statement that produced this insn. */
|
||||
int
|
||||
locator_line (int loc)
|
||||
{
|
||||
expanded_location xloc;
|
||||
if (!loc)
|
||||
return 0;
|
||||
else
|
||||
xloc = expand_location (locator_location (loc));
|
||||
return xloc.line;
|
||||
}
|
||||
|
||||
/* Return line number of the statement that produced this insn. */
|
||||
int
|
||||
insn_line (const_rtx insn)
|
||||
{
|
||||
return locator_line (INSN_LOCATOR (insn));
|
||||
}
|
||||
|
||||
/* Return source file of the statement specified by LOC. */
|
||||
const char *
|
||||
locator_file (int loc)
|
||||
{
|
||||
expanded_location xloc;
|
||||
if (!loc)
|
||||
return 0;
|
||||
else
|
||||
xloc = expand_location (locator_location (loc));
|
||||
return xloc.file;
|
||||
}
|
||||
|
||||
/* Return source file of the statement that produced this insn. */
|
||||
const char *
|
||||
insn_file (const_rtx insn)
|
||||
{
|
||||
return locator_file (INSN_LOCATOR (insn));
|
||||
}
|
||||
|
||||
/* Return true if LOC1 and LOC2 locators have the same location and scope. */
|
||||
bool
|
||||
locator_eq (int loc1, int loc2)
|
||||
{
|
||||
if (loc1 == loc2)
|
||||
return true;
|
||||
if (locator_location (loc1) != locator_location (loc2))
|
||||
return false;
|
||||
return locator_scope (loc1) == locator_scope (loc2);
|
||||
}
|
||||
|
||||
#include "gt-emit-rtl.h"
|
||||
|
|
109
gcc/final.c
109
gcc/final.c
|
@ -72,7 +72,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "targhooks.h"
|
||||
#include "debug.h"
|
||||
#include "expr.h"
|
||||
#include "cfglayout.h" /* for reemit_insn_block_notes */
|
||||
#include "tree-pass.h"
|
||||
#include "tree-flow.h"
|
||||
#include "timevar.h"
|
||||
|
@ -1515,6 +1514,114 @@ dwarf2_debug_info_emitted_p (tree decl)
|
|||
return true;
|
||||
}
|
||||
|
||||
/* Return scope resulting from combination of S1 and S2. */
|
||||
static tree
|
||||
choose_inner_scope (tree s1, tree s2)
|
||||
{
|
||||
if (!s1)
|
||||
return s2;
|
||||
if (!s2)
|
||||
return s1;
|
||||
if (BLOCK_NUMBER (s1) > BLOCK_NUMBER (s2))
|
||||
return s1;
|
||||
return s2;
|
||||
}
|
||||
|
||||
/* Emit lexical block notes needed to change scope from S1 to S2. */
|
||||
|
||||
static void
|
||||
change_scope (rtx orig_insn, tree s1, tree s2)
|
||||
{
|
||||
rtx insn = orig_insn;
|
||||
tree com = NULL_TREE;
|
||||
tree ts1 = s1, ts2 = s2;
|
||||
tree s;
|
||||
|
||||
while (ts1 != ts2)
|
||||
{
|
||||
gcc_assert (ts1 && ts2);
|
||||
if (BLOCK_NUMBER (ts1) > BLOCK_NUMBER (ts2))
|
||||
ts1 = BLOCK_SUPERCONTEXT (ts1);
|
||||
else if (BLOCK_NUMBER (ts1) < BLOCK_NUMBER (ts2))
|
||||
ts2 = BLOCK_SUPERCONTEXT (ts2);
|
||||
else
|
||||
{
|
||||
ts1 = BLOCK_SUPERCONTEXT (ts1);
|
||||
ts2 = BLOCK_SUPERCONTEXT (ts2);
|
||||
}
|
||||
}
|
||||
com = ts1;
|
||||
|
||||
/* Close scopes. */
|
||||
s = s1;
|
||||
while (s != com)
|
||||
{
|
||||
rtx note = emit_note_before (NOTE_INSN_BLOCK_END, insn);
|
||||
NOTE_BLOCK (note) = s;
|
||||
s = BLOCK_SUPERCONTEXT (s);
|
||||
}
|
||||
|
||||
/* Open scopes. */
|
||||
s = s2;
|
||||
while (s != com)
|
||||
{
|
||||
insn = emit_note_before (NOTE_INSN_BLOCK_BEG, insn);
|
||||
NOTE_BLOCK (insn) = s;
|
||||
s = BLOCK_SUPERCONTEXT (s);
|
||||
}
|
||||
}
|
||||
|
||||
/* Rebuild all the NOTE_INSN_BLOCK_BEG and NOTE_INSN_BLOCK_END notes based
|
||||
on the scope tree and the newly reordered instructions. */
|
||||
|
||||
static void
|
||||
reemit_insn_block_notes (void)
|
||||
{
|
||||
tree cur_block = DECL_INITIAL (cfun->decl);
|
||||
rtx insn, note;
|
||||
|
||||
insn = get_insns ();
|
||||
if (!active_insn_p (insn))
|
||||
insn = next_active_insn (insn);
|
||||
for (; insn; insn = next_active_insn (insn))
|
||||
{
|
||||
tree this_block;
|
||||
|
||||
/* Avoid putting scope notes between jump table and its label. */
|
||||
if (JUMP_TABLE_DATA_P (insn))
|
||||
continue;
|
||||
|
||||
this_block = insn_scope (insn);
|
||||
/* For sequences compute scope resulting from merging all scopes
|
||||
of instructions nested inside. */
|
||||
if (GET_CODE (PATTERN (insn)) == SEQUENCE)
|
||||
{
|
||||
int i;
|
||||
rtx body = PATTERN (insn);
|
||||
|
||||
this_block = NULL;
|
||||
for (i = 0; i < XVECLEN (body, 0); i++)
|
||||
this_block = choose_inner_scope (this_block,
|
||||
insn_scope (XVECEXP (body, 0, i)));
|
||||
}
|
||||
if (! this_block)
|
||||
continue;
|
||||
|
||||
if (this_block != cur_block)
|
||||
{
|
||||
change_scope (insn, cur_block, this_block);
|
||||
cur_block = this_block;
|
||||
}
|
||||
}
|
||||
|
||||
/* change_scope emits before the insn, not after. */
|
||||
note = emit_note (NOTE_INSN_DELETED);
|
||||
change_scope (note, cur_block, DECL_INITIAL (cfun->decl));
|
||||
delete_insn (note);
|
||||
|
||||
reorder_blocks ();
|
||||
}
|
||||
|
||||
/* Output assembler code for the start of a function,
|
||||
and initialize some of the variables in this file
|
||||
for the new function. The label for the function and associated
|
||||
|
|
|
@ -57,7 +57,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "langhooks.h"
|
||||
#include "target.h"
|
||||
#include "common/common-target.h"
|
||||
#include "cfglayout.h"
|
||||
#include "gimple.h"
|
||||
#include "tree-pass.h"
|
||||
#include "predict.h"
|
||||
|
@ -4852,9 +4851,6 @@ expand_function_start (tree subr)
|
|||
/* If we are doing generic stack checking, the probe should go here. */
|
||||
if (flag_stack_check == GENERIC_STACK_CHECK)
|
||||
stack_check_probe_note = emit_note (NOTE_INSN_DELETED);
|
||||
|
||||
/* Make sure there is a line number after the function entry setup code. */
|
||||
force_next_line_note ();
|
||||
}
|
||||
|
||||
/* Undo the effects of init_dummy_function_start. */
|
||||
|
@ -4999,7 +4995,6 @@ expand_function_end (void)
|
|||
|
||||
/* Output a linenumber for the end of the function.
|
||||
SDB depends on this. */
|
||||
force_next_line_note ();
|
||||
set_curr_insn_source_location (input_location);
|
||||
|
||||
/* Before the return label (if any), clobber the return
|
||||
|
|
|
@ -70,10 +70,6 @@ struct GTY(()) emit_status {
|
|||
--param min-nondebug-insn-uid=<value> is given with nonzero value. */
|
||||
int x_cur_debug_insn_uid;
|
||||
|
||||
/* Location the last line-number NOTE emitted.
|
||||
This is used to avoid generating duplicates. */
|
||||
location_t x_last_location;
|
||||
|
||||
/* The length of the regno_pointer_align, regno_decl, and x_regno_reg_rtx
|
||||
vectors. Since these vectors are needed during the expansion phase when
|
||||
the total number of registers in the function is not yet known, the
|
||||
|
|
|
@ -1563,7 +1563,7 @@ open_base_files (void)
|
|||
"hard-reg-set.h", "basic-block.h", "cselib.h", "insn-addr.h",
|
||||
"optabs.h", "libfuncs.h", "debug.h", "ggc.h", "cgraph.h",
|
||||
"tree-flow.h", "reload.h", "cpp-id-data.h", "tree-chrec.h",
|
||||
"cfglayout.h", "except.h", "output.h", "gimple.h", "cfgloop.h",
|
||||
"except.h", "output.h", "gimple.h", "cfgloop.h",
|
||||
"target.h", "ipa-prop.h", "lto-streamer.h", "target-globals.h",
|
||||
"ipa-inline.h", "dwarf2out.h", NULL
|
||||
};
|
||||
|
|
|
@ -30,7 +30,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "basic-block.h"
|
||||
#include "tm_p.h"
|
||||
#include "df.h"
|
||||
#include "cfglayout.h"
|
||||
#include "cfgloop.h"
|
||||
#include "recog.h"
|
||||
#include "target.h"
|
||||
|
|
|
@ -27,7 +27,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "obstack.h"
|
||||
#include "basic-block.h"
|
||||
#include "cfgloop.h"
|
||||
#include "cfglayout.h"
|
||||
#include "tree-pass.h"
|
||||
#include "timevar.h"
|
||||
#include "flags.h"
|
||||
|
|
|
@ -27,7 +27,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "obstack.h"
|
||||
#include "basic-block.h"
|
||||
#include "cfgloop.h"
|
||||
#include "cfglayout.h"
|
||||
#include "params.h"
|
||||
#include "expr.h"
|
||||
#include "hashtab.h"
|
||||
|
|
|
@ -27,7 +27,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "obstack.h"
|
||||
#include "basic-block.h"
|
||||
#include "cfgloop.h"
|
||||
#include "cfglayout.h"
|
||||
#include "params.h"
|
||||
#include "expr.h"
|
||||
|
||||
|
|
|
@ -37,9 +37,7 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "recog.h"
|
||||
#include "sched-int.h"
|
||||
#include "target.h"
|
||||
#include "cfglayout.h"
|
||||
#include "cfgloop.h"
|
||||
#include "cfghooks.h"
|
||||
#include "expr.h"
|
||||
#include "params.h"
|
||||
#include "gcov-io.h"
|
||||
|
|
|
@ -63,7 +63,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "coverage.h"
|
||||
#include "value-prof.h"
|
||||
#include "tree.h"
|
||||
#include "cfghooks.h"
|
||||
#include "tree-flow.h"
|
||||
#include "timevar.h"
|
||||
#include "cfgloop.h"
|
||||
|
|
|
@ -1799,7 +1799,7 @@ extern rtx skip_consecutive_labels (rtx);
|
|||
extern rtx next_cc0_user (rtx);
|
||||
extern rtx prev_cc0_setter (rtx);
|
||||
|
||||
/* In cfglayout.c */
|
||||
/* In emit-rtl.c */
|
||||
extern int insn_line (const_rtx);
|
||||
extern const char * insn_file (const_rtx);
|
||||
extern location_t locator_location (int);
|
||||
|
@ -1807,6 +1807,7 @@ extern int locator_line (int);
|
|||
extern const char * locator_file (int);
|
||||
extern bool locator_eq (int, int);
|
||||
extern int prologue_locator, epilogue_locator;
|
||||
extern tree insn_scope (const_rtx);
|
||||
|
||||
/* In jump.c */
|
||||
extern enum rtx_code reverse_condition (enum rtx_code);
|
||||
|
@ -2420,7 +2421,6 @@ extern void reorder_insns (rtx, rtx, rtx);
|
|||
extern void reorder_insns_nobb (rtx, rtx, rtx);
|
||||
extern int get_max_insn_count (void);
|
||||
extern int in_sequence_p (void);
|
||||
extern void force_next_line_note (void);
|
||||
extern void init_emit (void);
|
||||
extern void init_emit_regs (void);
|
||||
extern void init_emit_once (void);
|
||||
|
@ -2509,6 +2509,7 @@ extern int fixup_args_size_notes (rtx, rtx, int);
|
|||
|
||||
/* In cfgrtl.c */
|
||||
extern void print_rtl_with_bb (FILE *, const_rtx);
|
||||
extern rtx duplicate_insn_chain (rtx, rtx);
|
||||
|
||||
/* In cfg.c. */
|
||||
extern void dump_reg_info (FILE *);
|
||||
|
|
|
@ -36,7 +36,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "insn-attr.h"
|
||||
#include "except.h"
|
||||
#include "recog.h"
|
||||
#include "cfglayout.h"
|
||||
#include "params.h"
|
||||
#include "sched-int.h"
|
||||
#include "target.h"
|
||||
|
|
|
@ -60,7 +60,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "insn-attr.h"
|
||||
#include "except.h"
|
||||
#include "recog.h"
|
||||
#include "cfglayout.h"
|
||||
#include "params.h"
|
||||
#include "sched-int.h"
|
||||
#include "sel-sched.h"
|
||||
|
|
|
@ -42,7 +42,6 @@
|
|||
#include "rtl.h"
|
||||
#include "hard-reg-set.h"
|
||||
#include "basic-block.h"
|
||||
#include "cfglayout.h"
|
||||
#include "fibheap.h"
|
||||
#include "flags.h"
|
||||
#include "timevar.h"
|
||||
|
|
|
@ -39,7 +39,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "diagnostic-core.h"
|
||||
#include "except.h"
|
||||
#include "cfgloop.h"
|
||||
#include "cfglayout.h" /* for can_copy_bbs_p and copy_bbs */
|
||||
#include "tree-ssa-propagate.h"
|
||||
#include "value-prof.h"
|
||||
#include "pointer-set.h"
|
||||
|
|
|
@ -772,12 +772,7 @@ extern void make_eh_edges (gimple);
|
|||
extern bool make_eh_dispatch_edges (gimple);
|
||||
extern edge redirect_eh_edge (edge, basic_block);
|
||||
extern void redirect_eh_dispatch_edge (gimple, edge, basic_block);
|
||||
extern bool tree_could_trap_p (tree);
|
||||
extern bool operation_could_trap_helper_p (enum tree_code, bool, bool, bool,
|
||||
bool, tree, bool *);
|
||||
extern bool operation_could_trap_p (enum tree_code, bool, bool, tree);
|
||||
extern bool stmt_could_throw_p (gimple);
|
||||
extern bool tree_could_throw_p (tree);
|
||||
extern bool stmt_can_throw_internal (gimple);
|
||||
extern bool stmt_can_throw_external (gimple);
|
||||
extern void add_stmt_to_eh_lp_fn (struct function *, gimple, int);
|
||||
|
|
|
@ -32,7 +32,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "tree-flow.h"
|
||||
#include "tree-dump.h"
|
||||
#include "cfgloop.h"
|
||||
#include "cfglayout.h" /* for can_copy_bbs_p and copy_bbs */
|
||||
#include "diagnostic-core.h"
|
||||
#include "tree-scalar-evolution.h"
|
||||
#include "tree-vectorizer.h"
|
||||
|
|
|
@ -5212,6 +5212,12 @@ extern void expand_return (tree);
|
|||
/* In tree-eh.c */
|
||||
extern void using_eh_for_cleanups (void);
|
||||
|
||||
extern bool tree_could_trap_p (tree);
|
||||
extern bool operation_could_trap_helper_p (enum tree_code, bool, bool, bool,
|
||||
bool, tree, bool *);
|
||||
extern bool operation_could_trap_p (enum tree_code, bool, bool, tree);
|
||||
extern bool tree_could_throw_p (tree);
|
||||
|
||||
/* Compare and hash for any structure which begins with a canonical
|
||||
pointer. Assumes all pointers are interchangeable, which is sort
|
||||
of already assumed by gcc elsewhere IIRC. */
|
||||
|
|
Loading…
Reference in New Issue