mirror of git://gcc.gnu.org/git/gcc.git
integrate.c: Remove.
* integrate.c: Remove. * integrate.h: Remove. * Makefile.in: Remove make rules for integrate.c and INTEGRATE_H. * config/arm/t-arm: Remove INTEGRATE_H dependency for target files. * config/rs6000/t-rs6000: Likewise * config/spu/t-spu-elf: Likewise. * function.h (get_hard_reg_initial_val, has_hard_reg_initial_val, get_hard_reg_initial_reg, emit_initial_value_sets): Move prototypes from integrate.h to here. (initial_value_entry): New prototype. * reload.h (allocate_initial_values): Remove prototype. * tree.h (set_decl_abstract_flags, set_decl_origin_self): Likewise. * cse.c (fixed_base_plus_p): Don't handle virtual registers for integrate.c. * dwarf2out.c (set_decl_origin_self, set_block_origin_self, set_decl_abstract_flags, set_block_abstract_flags): Move from integrate.c to here, the only user. * expmed.c (extract_fixed_bit_field): Remove outdated comment about integrate.c. * function.c: Don't include integrate.h. (struct initial_value_pair, struct initial_value_struct, get_hard_reg_initial_val, has_hard_reg_initial_val, get_hard_reg_initial_reg, emit_initial_value_sets): Move from integrate.c to here. (initial_value_entry): New function. * genemit.c (main): Don't print integrate.h include line. * ira.c: Don't include integrate.h. (allocate_initial_values): Move from integrate.c to here. (ira): Update allocate_initial_values call. * tree-inline.c: Don't include integrate.h. (function_attribute_inlinable_p): Moved from integrate.c to here. * cfgexpand.c: Don't include integrate.h. * except.c: Likewise. * langhooks.c: Likewise. * passes.c: Likewise. * toplev.c: Likewise. * config/frv/frv.c: Likewise. * config/pa/pa.c: Likewise. * config/spu/spu.c: Likewise. * config/epiphany/epiphany.c: Likewise. * config/mep/mep.c: Likewise. * config/score/score.c: Likewise. * config/picochip/picochip.c: Likewise. * config/sh/sh.c: Likewise. * config/alpha/alpha.c: Likewise. * config/microblaze/microblaze.c: Likewise. * config/mips/mips.c: Likewise. * config/v850/v850.c: Likewise. * config/mmix/mmix.c: Likewise. * config/bfin/bfin.c: Likewise. * config/arm/arm.c: Likewise. * config/s390/s390.c: Likewise. * config/m32r/m32r.c: Likewise. * config/rs6000/rs6000.c: Likewise. * config/c6x/c6x.c: Include function.h instead of integrate.h. * config/tilegx/tilegx.c: Likewise. * config/tilepro/tilepro.c: Likewise. From-SVN: r187969
This commit is contained in:
parent
030a9eb6d8
commit
6399c0abb3
|
@ -1,3 +1,63 @@
|
||||||
|
2012-05-29 Steven Bosscher <steven@gcc.gnu.org>
|
||||||
|
|
||||||
|
* integrate.c: Remove.
|
||||||
|
* integrate.h: Remove.
|
||||||
|
* Makefile.in: Remove make rules for integrate.c and INTEGRATE_H.
|
||||||
|
* config/arm/t-arm: Remove INTEGRATE_H dependency for target files.
|
||||||
|
* config/rs6000/t-rs6000: Likewise
|
||||||
|
* config/spu/t-spu-elf: Likewise.
|
||||||
|
* function.h (get_hard_reg_initial_val, has_hard_reg_initial_val,
|
||||||
|
get_hard_reg_initial_reg, emit_initial_value_sets): Move prototypes
|
||||||
|
from integrate.h to here.
|
||||||
|
(initial_value_entry): New prototype.
|
||||||
|
* reload.h (allocate_initial_values): Remove prototype.
|
||||||
|
* tree.h (set_decl_abstract_flags, set_decl_origin_self): Likewise.
|
||||||
|
* cse.c (fixed_base_plus_p): Don't handle virtual registers for
|
||||||
|
integrate.c.
|
||||||
|
* dwarf2out.c (set_decl_origin_self, set_block_origin_self,
|
||||||
|
set_decl_abstract_flags, set_block_abstract_flags): Move from
|
||||||
|
integrate.c to here, the only user.
|
||||||
|
* expmed.c (extract_fixed_bit_field): Remove outdated comment
|
||||||
|
about integrate.c.
|
||||||
|
* function.c: Don't include integrate.h.
|
||||||
|
(struct initial_value_pair, struct initial_value_struct,
|
||||||
|
get_hard_reg_initial_val, has_hard_reg_initial_val,
|
||||||
|
get_hard_reg_initial_reg, emit_initial_value_sets): Move from
|
||||||
|
integrate.c to here.
|
||||||
|
(initial_value_entry): New function.
|
||||||
|
* genemit.c (main): Don't print integrate.h include line.
|
||||||
|
* ira.c: Don't include integrate.h.
|
||||||
|
(allocate_initial_values): Move from integrate.c to here.
|
||||||
|
(ira): Update allocate_initial_values call.
|
||||||
|
* tree-inline.c: Don't include integrate.h.
|
||||||
|
(function_attribute_inlinable_p): Moved from integrate.c to here.
|
||||||
|
* cfgexpand.c: Don't include integrate.h.
|
||||||
|
* except.c: Likewise.
|
||||||
|
* langhooks.c: Likewise.
|
||||||
|
* passes.c: Likewise.
|
||||||
|
* toplev.c: Likewise.
|
||||||
|
* config/frv/frv.c: Likewise.
|
||||||
|
* config/pa/pa.c: Likewise.
|
||||||
|
* config/spu/spu.c: Likewise.
|
||||||
|
* config/epiphany/epiphany.c: Likewise.
|
||||||
|
* config/mep/mep.c: Likewise.
|
||||||
|
* config/score/score.c: Likewise.
|
||||||
|
* config/picochip/picochip.c: Likewise.
|
||||||
|
* config/sh/sh.c: Likewise.
|
||||||
|
* config/alpha/alpha.c: Likewise.
|
||||||
|
* config/microblaze/microblaze.c: Likewise.
|
||||||
|
* config/mips/mips.c: Likewise.
|
||||||
|
* config/v850/v850.c: Likewise.
|
||||||
|
* config/mmix/mmix.c: Likewise.
|
||||||
|
* config/bfin/bfin.c: Likewise.
|
||||||
|
* config/arm/arm.c: Likewise.
|
||||||
|
* config/s390/s390.c: Likewise.
|
||||||
|
* config/m32r/m32r.c: Likewise.
|
||||||
|
* config/rs6000/rs6000.c: Likewise.
|
||||||
|
* config/c6x/c6x.c: Include function.h instead of integrate.h.
|
||||||
|
* config/tilegx/tilegx.c: Likewise.
|
||||||
|
* config/tilepro/tilepro.c: Likewise.
|
||||||
|
|
||||||
2012-05-29 Georg-Johann Lay <avr@gjlay.de>
|
2012-05-29 Georg-Johann Lay <avr@gjlay.de>
|
||||||
|
|
||||||
* config/avr/t-avr (s-avr-mmcu-texi): Call
|
* config/avr/t-avr (s-avr-mmcu-texi): Call
|
||||||
|
@ -1448,7 +1508,8 @@
|
||||||
* doc/options.texi (EnabledBy): Document
|
* doc/options.texi (EnabledBy): Document
|
||||||
* opts.c: Include opts.h and options.h before tm.h.
|
* opts.c: Include opts.h and options.h before tm.h.
|
||||||
(finish_options): Do not handle some sub-options here...
|
(finish_options): Do not handle some sub-options here...
|
||||||
(common_handle_option): ... instead call common_handle_option_auto here.
|
(common_handle_option): ... instead call common_handle_option_auto
|
||||||
|
here.
|
||||||
* optc-gen.awk: Handle EnabledBy.
|
* optc-gen.awk: Handle EnabledBy.
|
||||||
* opth-gen.awk: Declare common_handle_option_auto.
|
* opth-gen.awk: Declare common_handle_option_auto.
|
||||||
* common.opt (Wuninitialized): Use EnabledBy. Delete Init.
|
* common.opt (Wuninitialized): Use EnabledBy. Delete Init.
|
||||||
|
|
|
@ -884,7 +884,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) \
|
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)
|
$(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)
|
SEL_SCHED_DUMP_H = sel-sched-dump.h $(SEL_SCHED_IR_H)
|
||||||
INTEGRATE_H = integrate.h
|
|
||||||
CFGLAYOUT_H = cfglayout.h $(BASIC_BLOCK_H)
|
CFGLAYOUT_H = cfglayout.h $(BASIC_BLOCK_H)
|
||||||
CFGLOOP_H = cfgloop.h $(BASIC_BLOCK_H) $(RTL_H) vecprim.h double-int.h \
|
CFGLOOP_H = cfgloop.h $(BASIC_BLOCK_H) $(RTL_H) vecprim.h double-int.h \
|
||||||
$(BITMAP_H) sbitmap.h
|
$(BITMAP_H) sbitmap.h
|
||||||
|
@ -1253,7 +1252,6 @@ OBJS = \
|
||||||
ree.o \
|
ree.o \
|
||||||
incpath.o \
|
incpath.o \
|
||||||
init-regs.o \
|
init-regs.o \
|
||||||
integrate.o \
|
|
||||||
internal-fn.o \
|
internal-fn.o \
|
||||||
ipa-cp.o \
|
ipa-cp.o \
|
||||||
ipa-split.o \
|
ipa-split.o \
|
||||||
|
@ -2259,7 +2257,7 @@ lto-streamer.o: lto-streamer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
|
||||||
$(TREE_FLOW_H) $(DIAGNOSTIC_CORE_H) $(LTO_SYMTAB_H) toplev.h \
|
$(TREE_FLOW_H) $(DIAGNOSTIC_CORE_H) $(LTO_SYMTAB_H) toplev.h \
|
||||||
$(DIAGNOSTIC_CORE_H) $(STREAMER_HOOKS_H)
|
$(DIAGNOSTIC_CORE_H) $(STREAMER_HOOKS_H)
|
||||||
langhooks.o : langhooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
langhooks.o : langhooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||||
$(TREE_H) toplev.h $(DIAGNOSTIC_CORE_H) $(TREE_INLINE_H) $(RTL_H) insn-config.h $(INTEGRATE_H) \
|
$(TREE_H) toplev.h $(DIAGNOSTIC_CORE_H) $(TREE_INLINE_H) $(RTL_H) insn-config.h \
|
||||||
langhooks.h $(TARGET_H) $(LANGHOOKS_DEF_H) $(FLAGS_H) $(GGC_H) $(DIAGNOSTIC_H) \
|
langhooks.h $(TARGET_H) $(LANGHOOKS_DEF_H) $(FLAGS_H) $(GGC_H) $(DIAGNOSTIC_H) \
|
||||||
intl.h $(GIMPLE_H) $(CGRAPH_H) output.h tree-diagnostic.h
|
intl.h $(GIMPLE_H) $(CGRAPH_H) output.h tree-diagnostic.h
|
||||||
tree.o: tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
|
tree.o: tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
|
||||||
|
@ -2278,7 +2276,7 @@ tree-inline.o : tree-inline.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||||
$(HASHTAB_H) langhooks.h $(TREE_INLINE_H) $(CGRAPH_H) \
|
$(HASHTAB_H) langhooks.h $(TREE_INLINE_H) $(CGRAPH_H) \
|
||||||
intl.h $(FUNCTION_H) $(GIMPLE_H) \
|
intl.h $(FUNCTION_H) $(GIMPLE_H) \
|
||||||
debug.h $(DIAGNOSTIC_H) $(EXCEPT_H) $(TREE_FLOW_H) tree-iterator.h tree-mudflap.h \
|
debug.h $(DIAGNOSTIC_H) $(EXCEPT_H) $(TREE_FLOW_H) tree-iterator.h tree-mudflap.h \
|
||||||
$(IPA_PROP_H) value-prof.h $(TREE_PASS_H) $(TARGET_H) $(INTEGRATE_H) \
|
$(IPA_PROP_H) value-prof.h $(TREE_PASS_H) $(TARGET_H) \
|
||||||
tree-pretty-print.h
|
tree-pretty-print.h
|
||||||
print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
|
print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
|
||||||
$(GGC_H) langhooks.h tree-iterator.h \
|
$(GGC_H) langhooks.h tree-iterator.h \
|
||||||
|
@ -2751,7 +2749,7 @@ toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
|
||||||
hard-reg-set.h $(BASIC_BLOCK_H) graph.h $(EXCEPT_H) $(REGS_H) $(TIMEVAR_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) \
|
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 $(CFGLAYOUT_H) $(CFGLOOP_H) hosthooks.h \
|
||||||
$(CGRAPH_H) $(COVERAGE_H) alloc-pool.h $(GGC_H) $(INTEGRATE_H) \
|
$(CGRAPH_H) $(COVERAGE_H) alloc-pool.h $(GGC_H) \
|
||||||
$(OPTS_H) params.def tree-mudflap.h $(TREE_PASS_H) $(GIMPLE_H) \
|
$(OPTS_H) params.def tree-mudflap.h $(TREE_PASS_H) $(GIMPLE_H) \
|
||||||
tree-ssa-alias.h $(PLUGIN_H) realmpfr.h tree-diagnostic.h \
|
tree-ssa-alias.h $(PLUGIN_H) realmpfr.h tree-diagnostic.h \
|
||||||
tree-pretty-print.h opts-diagnostic.h $(COMMON_TARGET_H)
|
tree-pretty-print.h opts-diagnostic.h $(COMMON_TARGET_H)
|
||||||
|
@ -2766,7 +2764,7 @@ passes.o : passes.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
|
||||||
$(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) \
|
$(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) \
|
||||||
langhooks.h insn-flags.h $(CFGLAYOUT_H) $(CFGLOOP_H) \
|
langhooks.h insn-flags.h $(CFGLAYOUT_H) $(CFGLOOP_H) \
|
||||||
hosthooks.h $(CGRAPH_H) $(COVERAGE_H) $(TREE_PASS_H) $(TREE_DUMP_H) \
|
hosthooks.h $(CGRAPH_H) $(COVERAGE_H) $(TREE_PASS_H) $(TREE_DUMP_H) \
|
||||||
$(GGC_H) $(INTEGRATE_H) $(CPPLIB_H) $(OPTS_H) $(TREE_FLOW_H) $(TREE_INLINE_H) \
|
$(GGC_H) $(CPPLIB_H) $(OPTS_H) $(TREE_FLOW_H) $(TREE_INLINE_H) \
|
||||||
gt-passes.h $(DF_H) $(PREDICT_H) $(LTO_HEADER_H) $(LTO_SECTION_OUT_H) \
|
gt-passes.h $(DF_H) $(PREDICT_H) $(LTO_HEADER_H) $(LTO_SECTION_OUT_H) \
|
||||||
$(PLUGIN_H) $(IPA_UTILS_H)
|
$(PLUGIN_H) $(IPA_UTILS_H)
|
||||||
|
|
||||||
|
@ -2804,7 +2802,7 @@ function.o : function.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_
|
||||||
$(TREE_H) $(CFGLAYOUT_H) $(GIMPLE_H) $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) \
|
$(TREE_H) $(CFGLAYOUT_H) $(GIMPLE_H) $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) \
|
||||||
$(OPTABS_H) $(LIBFUNCS_H) $(REGS_H) hard-reg-set.h insn-config.h $(RECOG_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 \
|
output.h $(EXCEPT_H) $(HASHTAB_H) $(GGC_H) $(TM_P_H) langhooks.h \
|
||||||
gt-function.h $(TARGET_H) $(BASIC_BLOCK_H) $(INTEGRATE_H) $(PREDICT_H) \
|
gt-function.h $(TARGET_H) $(BASIC_BLOCK_H) $(PREDICT_H) \
|
||||||
$(TREE_PASS_H) $(DF_H) $(TIMEVAR_H) vecprim.h $(PARAMS_H) bb-reorder.h \
|
$(TREE_PASS_H) $(DF_H) $(TIMEVAR_H) vecprim.h $(PARAMS_H) bb-reorder.h \
|
||||||
$(COMMON_TARGET_H)
|
$(COMMON_TARGET_H)
|
||||||
statistics.o : statistics.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
|
statistics.o : statistics.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
|
||||||
|
@ -2819,7 +2817,7 @@ except.o : except.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
||||||
$(TREE_H) $(FLAGS_H) $(EXCEPT_H) $(FUNCTION_H) $(EXPR_H) $(LIBFUNCS_H) \
|
$(TREE_H) $(FLAGS_H) $(EXCEPT_H) $(FUNCTION_H) $(EXPR_H) $(LIBFUNCS_H) \
|
||||||
langhooks.h insn-config.h hard-reg-set.h $(BASIC_BLOCK_H) output.h \
|
langhooks.h insn-config.h hard-reg-set.h $(BASIC_BLOCK_H) output.h \
|
||||||
dwarf2asm.h dwarf2out.h toplev.h $(DIAGNOSTIC_CORE_H) $(HASHTAB_H) intl.h $(GGC_H) \
|
dwarf2asm.h dwarf2out.h toplev.h $(DIAGNOSTIC_CORE_H) $(HASHTAB_H) intl.h $(GGC_H) \
|
||||||
gt-except.h $(CGRAPH_H) $(INTEGRATE_H) $(DIAGNOSTIC_H) $(DWARF2_H) \
|
gt-except.h $(CGRAPH_H) $(DIAGNOSTIC_H) $(DWARF2_H) \
|
||||||
$(TARGET_H) $(TM_P_H) $(TREE_PASS_H) $(TIMEVAR_H) $(TREE_FLOW_H) \
|
$(TARGET_H) $(TM_P_H) $(TREE_PASS_H) $(TIMEVAR_H) $(TREE_FLOW_H) \
|
||||||
tree-pretty-print.h sbitmap.h $(COMMON_TARGET_H) $(CFGLOOP_H)
|
tree-pretty-print.h sbitmap.h $(COMMON_TARGET_H) $(CFGLOOP_H)
|
||||||
expr.o : expr.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
expr.o : expr.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
||||||
|
@ -2900,11 +2898,6 @@ dfp.o : dfp.c dfp.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
|
||||||
$(DIAGNOSTIC_CORE_H) $(TM_P_H) $(REAL_H) $(DECNUM_H)
|
$(DIAGNOSTIC_CORE_H) $(TM_P_H) $(REAL_H) $(DECNUM_H)
|
||||||
fixed-value.o: fixed-value.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
fixed-value.o: fixed-value.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||||
$(TREE_H) $(REAL_H) $(DIAGNOSTIC_CORE_H)
|
$(TREE_H) $(REAL_H) $(DIAGNOSTIC_CORE_H)
|
||||||
integrate.o : integrate.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
|
||||||
$(RTL_H) $(TREE_H) $(FLAGS_H) debug.h $(INTEGRATE_H) insn-config.h \
|
|
||||||
$(EXPR_H) $(REGS_H) intl.h $(FUNCTION_H) output.h $(RECOG_H) \
|
|
||||||
$(EXCEPT_H) $(DIAGNOSTIC_CORE_H) $(PARAMS_H) $(TM_P_H) $(TARGET_H) langhooks.h \
|
|
||||||
gt-integrate.h $(GGC_H) $(TREE_PASS_H) $(DF_H)
|
|
||||||
jump.o : jump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
jump.o : jump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
||||||
$(FLAGS_H) hard-reg-set.h $(REGS_H) insn-config.h $(RECOG_H) $(EXPR_H) \
|
$(FLAGS_H) hard-reg-set.h $(REGS_H) insn-config.h $(RECOG_H) $(EXPR_H) \
|
||||||
$(EXCEPT_H) $(FUNCTION_H) $(BASIC_BLOCK_H) $(TREE_PASS_H) \
|
$(EXCEPT_H) $(FUNCTION_H) $(BASIC_BLOCK_H) $(TREE_PASS_H) \
|
||||||
|
@ -3167,7 +3160,7 @@ cfgexpand.o : cfgexpand.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
|
||||||
$(DIAGNOSTIC_H) toplev.h $(DIAGNOSTIC_CORE_H) $(BASIC_BLOCK_H) $(FLAGS_H) debug.h $(PARAMS_H) \
|
$(DIAGNOSTIC_H) toplev.h $(DIAGNOSTIC_CORE_H) $(BASIC_BLOCK_H) $(FLAGS_H) debug.h $(PARAMS_H) \
|
||||||
value-prof.h $(TREE_INLINE_H) $(TARGET_H) $(SSAEXPAND_H) $(REGS_H) \
|
value-prof.h $(TREE_INLINE_H) $(TARGET_H) $(SSAEXPAND_H) $(REGS_H) \
|
||||||
tree-pretty-print.h gimple-pretty-print.h $(BITMAP_H) sbitmap.h \
|
tree-pretty-print.h gimple-pretty-print.h $(BITMAP_H) sbitmap.h \
|
||||||
$(INSN_ATTR_H) $(INTEGRATE_H) $(CFGLOOP_H)
|
$(INSN_ATTR_H) $(CFGLOOP_H)
|
||||||
cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
|
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 \
|
$(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \
|
||||||
output.h $(FUNCTION_H) $(EXCEPT_H) $(TM_P_H) $(INSN_ATTR_H) \
|
output.h $(FUNCTION_H) $(EXCEPT_H) $(TM_P_H) $(INSN_ATTR_H) \
|
||||||
|
@ -3310,7 +3303,7 @@ ira.o: ira.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
|
||||||
$(TM_H) $(REGS_H) $(RTL_H) $(TM_P_H) $(TARGET_H) $(FLAGS_H) $(OBSTACK_H) \
|
$(TM_H) $(REGS_H) $(RTL_H) $(TM_P_H) $(TARGET_H) $(FLAGS_H) $(OBSTACK_H) \
|
||||||
$(BITMAP_H) hard-reg-set.h $(BASIC_BLOCK_H) $(DBGCNT_H) \
|
$(BITMAP_H) hard-reg-set.h $(BASIC_BLOCK_H) $(DBGCNT_H) \
|
||||||
$(EXPR_H) $(RECOG_H) $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) output.h \
|
$(EXPR_H) $(RECOG_H) $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) output.h \
|
||||||
$(EXCEPT_H) reload.h toplev.h $(DIAGNOSTIC_CORE_H) $(INTEGRATE_H) $(DF_H) $(GGC_H) $(IRA_INT_H)
|
$(EXCEPT_H) reload.h toplev.h $(DIAGNOSTIC_CORE_H) $(DF_H) $(GGC_H) $(IRA_INT_H)
|
||||||
regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
||||||
insn-config.h $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) \
|
insn-config.h $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) \
|
||||||
$(RECOG_H) output.h $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \
|
$(RECOG_H) output.h $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \
|
||||||
|
@ -3501,7 +3494,7 @@ insn-emit.o : insn-emit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||||
$(RTL_H) $(TM_P_H) $(FUNCTION_H) $(EXPR_H) $(OPTABS_H) \
|
$(RTL_H) $(TM_P_H) $(FUNCTION_H) $(EXPR_H) $(OPTABS_H) \
|
||||||
dfp.h $(FLAGS_H) output.h insn-config.h hard-reg-set.h $(RECOG_H) \
|
dfp.h $(FLAGS_H) output.h insn-config.h hard-reg-set.h $(RECOG_H) \
|
||||||
$(RESOURCE_H) reload.h $(DIAGNOSTIC_CORE_H) $(REGS_H) tm-constrs.h \
|
$(RESOURCE_H) reload.h $(DIAGNOSTIC_CORE_H) $(REGS_H) tm-constrs.h \
|
||||||
$(GGC_H) $(BASIC_BLOCK_H) $(INTEGRATE_H) $(TARGET_H)
|
$(GGC_H) $(BASIC_BLOCK_H) $(TARGET_H)
|
||||||
insn-enums.o : insn-enums.c $(CONFIG_H) $(SYSTEM_H) insn-constants.h
|
insn-enums.o : insn-enums.c $(CONFIG_H) $(SYSTEM_H) insn-constants.h
|
||||||
insn-extract.o : insn-extract.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
|
insn-extract.o : insn-extract.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
|
||||||
$(TM_H) $(RTL_H) $(DIAGNOSTIC_CORE_H) insn-config.h $(RECOG_H)
|
$(TM_H) $(RTL_H) $(DIAGNOSTIC_CORE_H) insn-config.h $(RECOG_H)
|
||||||
|
@ -3737,7 +3730,7 @@ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
|
||||||
$(srcdir)/expr.h \
|
$(srcdir)/expr.h \
|
||||||
$(srcdir)/function.c $(srcdir)/except.c \
|
$(srcdir)/function.c $(srcdir)/except.c \
|
||||||
$(srcdir)/gcse.c $(srcdir)/godump.c \
|
$(srcdir)/gcse.c $(srcdir)/godump.c \
|
||||||
$(srcdir)/integrate.c $(srcdir)/lists.c $(srcdir)/optabs.c \
|
$(srcdir)/lists.c $(srcdir)/optabs.c \
|
||||||
$(srcdir)/profile.c $(srcdir)/mcf.c \
|
$(srcdir)/profile.c $(srcdir)/mcf.c \
|
||||||
$(srcdir)/reg-stack.c $(srcdir)/cfglayout.c $(srcdir)/cfglayout.h \
|
$(srcdir)/reg-stack.c $(srcdir)/cfglayout.c $(srcdir)/cfglayout.h \
|
||||||
$(srcdir)/sdbout.c $(srcdir)/stor-layout.c \
|
$(srcdir)/sdbout.c $(srcdir)/stor-layout.c \
|
||||||
|
|
|
@ -49,7 +49,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "sbitmap.h"
|
#include "sbitmap.h"
|
||||||
#include "cfgloop.h"
|
#include "cfgloop.h"
|
||||||
#include "regs.h" /* For reg_renumber. */
|
#include "regs.h" /* For reg_renumber. */
|
||||||
#include "integrate.h" /* For emit_initial_value_sets. */
|
|
||||||
#include "insn-attr.h" /* For INSN_SCHEDULING. */
|
#include "insn-attr.h" /* For INSN_SCHEDULING. */
|
||||||
|
|
||||||
/* This variable holds information helping the rewriting of SSA trees
|
/* This variable holds information helping the rewriting of SSA trees
|
||||||
|
|
|
@ -43,7 +43,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "function.h"
|
#include "function.h"
|
||||||
#include "diagnostic-core.h"
|
#include "diagnostic-core.h"
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "tm_p.h"
|
#include "tm_p.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
|
|
|
@ -46,7 +46,6 @@
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
#include "except.h"
|
#include "except.h"
|
||||||
#include "c-family/c-pragma.h" /* ??? */
|
#include "c-family/c-pragma.h" /* ??? */
|
||||||
#include "integrate.h"
|
|
||||||
#include "tm_p.h"
|
#include "tm_p.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
|
|
|
@ -78,7 +78,7 @@ arm.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||||
insn-config.h conditions.h output.h \
|
insn-config.h conditions.h output.h \
|
||||||
$(INSN_ATTR_H) $(FLAGS_H) reload.h $(FUNCTION_H) \
|
$(INSN_ATTR_H) $(FLAGS_H) reload.h $(FUNCTION_H) \
|
||||||
$(EXPR_H) $(OPTABS_H) $(RECOG_H) $(CGRAPH_H) \
|
$(EXPR_H) $(OPTABS_H) $(RECOG_H) $(CGRAPH_H) \
|
||||||
$(GGC_H) except.h $(C_PRAGMA_H) $(INTEGRATE_H) $(TM_P_H) \
|
$(GGC_H) except.h $(C_PRAGMA_H) $(TM_P_H) \
|
||||||
$(TARGET_H) $(TARGET_DEF_H) debug.h langhooks.h $(DF_H) \
|
$(TARGET_H) $(TARGET_DEF_H) debug.h langhooks.h $(DF_H) \
|
||||||
intl.h libfuncs.h $(PARAMS_H) $(OPTS_H) $(srcdir)/config/arm/arm-cores.def \
|
intl.h libfuncs.h $(PARAMS_H) $(OPTS_H) $(srcdir)/config/arm/arm-cores.def \
|
||||||
$(srcdir)/config/arm/arm-arches.def $(srcdir)/config/arm/arm-fpus.def
|
$(srcdir)/config/arm/arm-arches.def $(srcdir)/config/arm/arm-fpus.def
|
||||||
|
|
|
@ -44,7 +44,6 @@
|
||||||
#include "recog.h"
|
#include "recog.h"
|
||||||
#include "optabs.h"
|
#include "optabs.h"
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "cgraph.h"
|
#include "cgraph.h"
|
||||||
#include "langhooks.h"
|
#include "langhooks.h"
|
||||||
#include "bfin-protos.h"
|
#include "bfin-protos.h"
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
#include "tm-preds.h"
|
#include "tm-preds.h"
|
||||||
#include "tm-constrs.h"
|
#include "tm-constrs.h"
|
||||||
#include "df.h"
|
#include "df.h"
|
||||||
#include "integrate.h"
|
#include "function.h"
|
||||||
#include "diagnostic-core.h"
|
#include "diagnostic-core.h"
|
||||||
#include "cgraph.h"
|
#include "cgraph.h"
|
||||||
#include "cfglayout.h"
|
#include "cfglayout.h"
|
||||||
|
|
|
@ -46,7 +46,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
#include "tm-constrs.h"
|
#include "tm-constrs.h"
|
||||||
#include "tree-pass.h"
|
#include "tree-pass.h"
|
||||||
#include "integrate.h"
|
|
||||||
|
|
||||||
/* Which cpu we're compiling for. */
|
/* Which cpu we're compiling for. */
|
||||||
int epiphany_cpu_type;
|
int epiphany_cpu_type;
|
||||||
|
|
|
@ -46,7 +46,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
#include "targhooks.h"
|
#include "targhooks.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "langhooks.h"
|
#include "langhooks.h"
|
||||||
#include "df.h"
|
#include "df.h"
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,6 @@
|
||||||
#include "recog.h"
|
#include "recog.h"
|
||||||
#include "diagnostic-core.h"
|
#include "diagnostic-core.h"
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "df.h"
|
#include "df.h"
|
||||||
#include "tm_p.h"
|
#include "tm_p.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
|
|
|
@ -45,7 +45,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "tm_p.h"
|
#include "tm_p.h"
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
#include "diagnostic-core.h"
|
#include "diagnostic-core.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
#include "langhooks.h"
|
#include "langhooks.h"
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
#include "conditions.h"
|
#include "conditions.h"
|
||||||
#include "insn-flags.h"
|
#include "insn-flags.h"
|
||||||
#include "insn-attr.h"
|
#include "insn-attr.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "recog.h"
|
#include "recog.h"
|
||||||
#include "tree.h"
|
#include "tree.h"
|
||||||
#include "function.h"
|
#include "function.h"
|
||||||
|
|
|
@ -50,7 +50,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "langhooks.h"
|
#include "langhooks.h"
|
||||||
#include "cfglayout.h"
|
#include "cfglayout.h"
|
||||||
#include "sched-int.h"
|
#include "sched-int.h"
|
||||||
|
|
|
@ -41,7 +41,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "dwarf2.h"
|
#include "dwarf2.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "tm_p.h"
|
#include "tm_p.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
#include "df.h"
|
#include "df.h"
|
||||||
|
|
|
@ -37,7 +37,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "expr.h"
|
#include "expr.h"
|
||||||
#include "optabs.h"
|
#include "optabs.h"
|
||||||
#include "reload.h"
|
#include "reload.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "function.h"
|
#include "function.h"
|
||||||
#include "diagnostic-core.h"
|
#include "diagnostic-core.h"
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
|
|
|
@ -40,7 +40,6 @@ along with GCC; see the file COPYING3. If not, see
|
||||||
#include "function.h"
|
#include "function.h"
|
||||||
#include "output.h"
|
#include "output.h"
|
||||||
#include "basic-block.h"
|
#include "basic-block.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "diagnostic-core.h"
|
#include "diagnostic-core.h"
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
#include "hashtab.h"
|
#include "hashtab.h"
|
||||||
|
|
|
@ -41,7 +41,6 @@
|
||||||
#include "function.h"
|
#include "function.h"
|
||||||
#include "output.h"
|
#include "output.h"
|
||||||
#include "basic-block.h"
|
#include "basic-block.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "diagnostic-core.h"
|
#include "diagnostic-core.h"
|
||||||
#include "toplev.h"
|
#include "toplev.h"
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
|
|
|
@ -25,7 +25,7 @@ rs6000.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||||
$(RTL_H) $(REGS_H) hard-reg-set.h \
|
$(RTL_H) $(REGS_H) hard-reg-set.h \
|
||||||
real.h insn-config.h conditions.h insn-attr.h flags.h $(RECOG_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 \
|
$(OBSTACK_H) $(TREE_H) $(EXPR_H) $(OPTABS_H) except.h function.h \
|
||||||
output.h $(BASIC_BLOCK_H) $(INTEGRATE_H) toplev.h $(GGC_H) $(HASHTAB_H) \
|
output.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 \
|
$(TM_P_H) $(TARGET_H) $(TARGET_DEF_H) langhooks.h reload.h gt-rs6000.h \
|
||||||
cfglayout.h cfgloop.h $(OPTS_H) $(COMMON_TARGET_H)
|
cfglayout.h cfgloop.h $(OPTS_H) $(COMMON_TARGET_H)
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "reload.h"
|
#include "reload.h"
|
||||||
#include "diagnostic-core.h"
|
#include "diagnostic-core.h"
|
||||||
#include "basic-block.h"
|
#include "basic-block.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
|
|
|
@ -45,7 +45,6 @@
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "langhooks.h"
|
#include "langhooks.h"
|
||||||
#include "cfglayout.h"
|
#include "cfglayout.h"
|
||||||
#include "df.h"
|
#include "df.h"
|
||||||
|
|
|
@ -39,7 +39,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "insn-attr.h"
|
#include "insn-attr.h"
|
||||||
#include "diagnostic-core.h"
|
#include "diagnostic-core.h"
|
||||||
#include "recog.h"
|
#include "recog.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "dwarf2.h"
|
#include "dwarf2.h"
|
||||||
#include "tm_p.h"
|
#include "tm_p.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
|
|
|
@ -35,7 +35,6 @@
|
||||||
#include "function.h"
|
#include "function.h"
|
||||||
#include "output.h"
|
#include "output.h"
|
||||||
#include "basic-block.h"
|
#include "basic-block.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "diagnostic-core.h"
|
#include "diagnostic-core.h"
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
#include "hashtab.h"
|
#include "hashtab.h"
|
||||||
|
|
|
@ -22,7 +22,7 @@ spu.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||||
$(RTL_H) $(REGS_H) hard-reg-set.h \
|
$(RTL_H) $(REGS_H) hard-reg-set.h \
|
||||||
real.h insn-config.h conditions.h insn-attr.h flags.h $(RECOG_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 \
|
$(OBSTACK_H) $(TREE_H) $(EXPR_H) $(OPTABS_H) except.h function.h \
|
||||||
output.h $(BASIC_BLOCK_H) $(INTEGRATE_H) $(GGC_H) $(HASHTAB_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 cfglayout.h \
|
||||||
$(srcdir)/config/spu/spu-protos.h \
|
$(srcdir)/config/spu/spu-protos.h \
|
||||||
$(srcdir)/config/spu/spu-builtins.def
|
$(srcdir)/config/spu/spu-builtins.def
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
#include "tm-constrs.h"
|
#include "tm-constrs.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
#include "integrate.h"
|
#include "function.h"
|
||||||
#include "dwarf2.h"
|
#include "dwarf2.h"
|
||||||
#include "timevar.h"
|
#include "timevar.h"
|
||||||
#include "gimple.h"
|
#include "gimple.h"
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
#include "tm-constrs.h"
|
#include "tm-constrs.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
#include "integrate.h"
|
#include "function.h"
|
||||||
#include "dwarf2.h"
|
#include "dwarf2.h"
|
||||||
#include "timevar.h"
|
#include "timevar.h"
|
||||||
#include "gimple.h"
|
#include "gimple.h"
|
||||||
|
|
|
@ -37,7 +37,6 @@
|
||||||
#include "function.h"
|
#include "function.h"
|
||||||
#include "diagnostic-core.h"
|
#include "diagnostic-core.h"
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "tm_p.h"
|
#include "tm_p.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "target-def.h"
|
#include "target-def.h"
|
||||||
|
|
|
@ -622,9 +622,7 @@ static enum machine_mode cse_cc_succs (basic_block, basic_block, rtx, rtx,
|
||||||
|
|
||||||
static const struct rtl_hooks cse_rtl_hooks = RTL_HOOKS_INITIALIZER;
|
static const struct rtl_hooks cse_rtl_hooks = RTL_HOOKS_INITIALIZER;
|
||||||
|
|
||||||
/* Nonzero if X has the form (PLUS frame-pointer integer). We check for
|
/* Nonzero if X has the form (PLUS frame-pointer integer). */
|
||||||
virtual regs here because the simplify_*_operation routines are called
|
|
||||||
by integrate.c, which is called before virtual register instantiation. */
|
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
fixed_base_plus_p (rtx x)
|
fixed_base_plus_p (rtx x)
|
||||||
|
@ -636,9 +634,6 @@ fixed_base_plus_p (rtx x)
|
||||||
return true;
|
return true;
|
||||||
if (x == arg_pointer_rtx && fixed_regs[ARG_POINTER_REGNUM])
|
if (x == arg_pointer_rtx && fixed_regs[ARG_POINTER_REGNUM])
|
||||||
return true;
|
return true;
|
||||||
if (REGNO (x) >= FIRST_VIRTUAL_REGISTER
|
|
||||||
&& REGNO (x) <= LAST_VIRTUAL_REGISTER)
|
|
||||||
return true;
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
case PLUS:
|
case PLUS:
|
||||||
|
|
129
gcc/dwarf2out.c
129
gcc/dwarf2out.c
|
@ -16409,6 +16409,135 @@ gen_type_die_for_member (tree type, tree member, dw_die_ref context_die)
|
||||||
pop_decl_scope ();
|
pop_decl_scope ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Forward declare these functions, because they are mutually recursive
|
||||||
|
with their set_block_* pairing functions. */
|
||||||
|
static void set_decl_origin_self (tree);
|
||||||
|
static void set_decl_abstract_flags (tree, int);
|
||||||
|
|
||||||
|
/* Given a pointer to some BLOCK node, if the BLOCK_ABSTRACT_ORIGIN for the
|
||||||
|
given BLOCK node is NULL, set the BLOCK_ABSTRACT_ORIGIN for the node so
|
||||||
|
that it points to the node itself, thus indicating that the node is its
|
||||||
|
own (abstract) origin. Additionally, if the BLOCK_ABSTRACT_ORIGIN for
|
||||||
|
the given node is NULL, recursively descend the decl/block tree which
|
||||||
|
it is the root of, and for each other ..._DECL or BLOCK node contained
|
||||||
|
therein whose DECL_ABSTRACT_ORIGINs or BLOCK_ABSTRACT_ORIGINs are also
|
||||||
|
still NULL, set *their* DECL_ABSTRACT_ORIGIN or BLOCK_ABSTRACT_ORIGIN
|
||||||
|
values to point to themselves. */
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_block_origin_self (tree stmt)
|
||||||
|
{
|
||||||
|
if (BLOCK_ABSTRACT_ORIGIN (stmt) == NULL_TREE)
|
||||||
|
{
|
||||||
|
BLOCK_ABSTRACT_ORIGIN (stmt) = stmt;
|
||||||
|
|
||||||
|
{
|
||||||
|
tree local_decl;
|
||||||
|
|
||||||
|
for (local_decl = BLOCK_VARS (stmt);
|
||||||
|
local_decl != NULL_TREE;
|
||||||
|
local_decl = DECL_CHAIN (local_decl))
|
||||||
|
if (! DECL_EXTERNAL (local_decl))
|
||||||
|
set_decl_origin_self (local_decl); /* Potential recursion. */
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
tree subblock;
|
||||||
|
|
||||||
|
for (subblock = BLOCK_SUBBLOCKS (stmt);
|
||||||
|
subblock != NULL_TREE;
|
||||||
|
subblock = BLOCK_CHAIN (subblock))
|
||||||
|
set_block_origin_self (subblock); /* Recurse. */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Given a pointer to some ..._DECL node, if the DECL_ABSTRACT_ORIGIN for
|
||||||
|
the given ..._DECL node is NULL, set the DECL_ABSTRACT_ORIGIN for the
|
||||||
|
node to so that it points to the node itself, thus indicating that the
|
||||||
|
node represents its own (abstract) origin. Additionally, if the
|
||||||
|
DECL_ABSTRACT_ORIGIN for the given node is NULL, recursively descend
|
||||||
|
the decl/block tree of which the given node is the root of, and for
|
||||||
|
each other ..._DECL or BLOCK node contained therein whose
|
||||||
|
DECL_ABSTRACT_ORIGINs or BLOCK_ABSTRACT_ORIGINs are also still NULL,
|
||||||
|
set *their* DECL_ABSTRACT_ORIGIN or BLOCK_ABSTRACT_ORIGIN values to
|
||||||
|
point to themselves. */
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_decl_origin_self (tree decl)
|
||||||
|
{
|
||||||
|
if (DECL_ABSTRACT_ORIGIN (decl) == NULL_TREE)
|
||||||
|
{
|
||||||
|
DECL_ABSTRACT_ORIGIN (decl) = decl;
|
||||||
|
if (TREE_CODE (decl) == FUNCTION_DECL)
|
||||||
|
{
|
||||||
|
tree arg;
|
||||||
|
|
||||||
|
for (arg = DECL_ARGUMENTS (decl); arg; arg = DECL_CHAIN (arg))
|
||||||
|
DECL_ABSTRACT_ORIGIN (arg) = arg;
|
||||||
|
if (DECL_INITIAL (decl) != NULL_TREE
|
||||||
|
&& DECL_INITIAL (decl) != error_mark_node)
|
||||||
|
set_block_origin_self (DECL_INITIAL (decl));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Given a pointer to some BLOCK node, and a boolean value to set the
|
||||||
|
"abstract" flags to, set that value into the BLOCK_ABSTRACT flag for
|
||||||
|
the given block, and for all local decls and all local sub-blocks
|
||||||
|
(recursively) which are contained therein. */
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_block_abstract_flags (tree stmt, int setting)
|
||||||
|
{
|
||||||
|
tree local_decl;
|
||||||
|
tree subblock;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
BLOCK_ABSTRACT (stmt) = setting;
|
||||||
|
|
||||||
|
for (local_decl = BLOCK_VARS (stmt);
|
||||||
|
local_decl != NULL_TREE;
|
||||||
|
local_decl = DECL_CHAIN (local_decl))
|
||||||
|
if (! DECL_EXTERNAL (local_decl))
|
||||||
|
set_decl_abstract_flags (local_decl, setting);
|
||||||
|
|
||||||
|
for (i = 0; i < BLOCK_NUM_NONLOCALIZED_VARS (stmt); i++)
|
||||||
|
{
|
||||||
|
local_decl = BLOCK_NONLOCALIZED_VAR (stmt, i);
|
||||||
|
if ((TREE_CODE (local_decl) == VAR_DECL && !TREE_STATIC (local_decl))
|
||||||
|
|| TREE_CODE (local_decl) == PARM_DECL)
|
||||||
|
set_decl_abstract_flags (local_decl, setting);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (subblock = BLOCK_SUBBLOCKS (stmt);
|
||||||
|
subblock != NULL_TREE;
|
||||||
|
subblock = BLOCK_CHAIN (subblock))
|
||||||
|
set_block_abstract_flags (subblock, setting);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Given a pointer to some ..._DECL node, and a boolean value to set the
|
||||||
|
"abstract" flags to, set that value into the DECL_ABSTRACT flag for the
|
||||||
|
given decl, and (in the case where the decl is a FUNCTION_DECL) also
|
||||||
|
set the abstract flags for all of the parameters, local vars, local
|
||||||
|
blocks and sub-blocks (recursively) to the same setting. */
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_decl_abstract_flags (tree decl, int setting)
|
||||||
|
{
|
||||||
|
DECL_ABSTRACT (decl) = setting;
|
||||||
|
if (TREE_CODE (decl) == FUNCTION_DECL)
|
||||||
|
{
|
||||||
|
tree arg;
|
||||||
|
|
||||||
|
for (arg = DECL_ARGUMENTS (decl); arg; arg = DECL_CHAIN (arg))
|
||||||
|
DECL_ABSTRACT (arg) = setting;
|
||||||
|
if (DECL_INITIAL (decl) != NULL_TREE
|
||||||
|
&& DECL_INITIAL (decl) != error_mark_node)
|
||||||
|
set_block_abstract_flags (DECL_INITIAL (decl), setting);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Generate the DWARF2 info for the "abstract" instance of a function which we
|
/* Generate the DWARF2 info for the "abstract" instance of a function which we
|
||||||
may later generate inlined and/or out-of-line instances of. */
|
may later generate inlined and/or out-of-line instances of. */
|
||||||
|
|
|
@ -123,7 +123,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "libfuncs.h"
|
#include "libfuncs.h"
|
||||||
#include "insn-config.h"
|
#include "insn-config.h"
|
||||||
#include "except.h"
|
#include "except.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "hard-reg-set.h"
|
#include "hard-reg-set.h"
|
||||||
#include "basic-block.h"
|
#include "basic-block.h"
|
||||||
#include "output.h"
|
#include "output.h"
|
||||||
|
|
|
@ -1865,9 +1865,9 @@ extract_fixed_bit_field (enum machine_mode tmode, rtx op0,
|
||||||
/* If the field does not already start at the lsb,
|
/* If the field does not already start at the lsb,
|
||||||
shift it so it does. */
|
shift it so it does. */
|
||||||
/* Maybe propagate the target for the shift. */
|
/* Maybe propagate the target for the shift. */
|
||||||
/* But not if we will return it--could confuse integrate.c. */
|
|
||||||
rtx subtarget = (target != 0 && REG_P (target) ? target : 0);
|
rtx subtarget = (target != 0 && REG_P (target) ? target : 0);
|
||||||
if (tmode != mode) subtarget = 0;
|
if (tmode != mode)
|
||||||
|
subtarget = 0;
|
||||||
op0 = expand_shift (RSHIFT_EXPR, mode, op0, bitpos, subtarget, 1);
|
op0 = expand_shift (RSHIFT_EXPR, mode, op0, bitpos, subtarget, 1);
|
||||||
}
|
}
|
||||||
/* Convert the value to the desired mode. */
|
/* Convert the value to the desired mode. */
|
||||||
|
|
128
gcc/function.c
128
gcc/function.c
|
@ -54,7 +54,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "hashtab.h"
|
#include "hashtab.h"
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
#include "tm_p.h"
|
#include "tm_p.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "langhooks.h"
|
#include "langhooks.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "common/common-target.h"
|
#include "common/common-target.h"
|
||||||
|
@ -1224,6 +1223,133 @@ init_temp_slots (void)
|
||||||
htab_empty (temp_slot_address_table);
|
htab_empty (temp_slot_address_table);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Functions and data structures to keep track of the values hard regs
|
||||||
|
had at the start of the function. */
|
||||||
|
|
||||||
|
/* Private type used by get_hard_reg_initial_reg, get_hard_reg_initial_val,
|
||||||
|
and has_hard_reg_initial_val.. */
|
||||||
|
typedef struct GTY(()) initial_value_pair {
|
||||||
|
rtx hard_reg;
|
||||||
|
rtx pseudo;
|
||||||
|
} initial_value_pair;
|
||||||
|
/* ??? This could be a VEC but there is currently no way to define an
|
||||||
|
opaque VEC type. This could be worked around by defining struct
|
||||||
|
initial_value_pair in function.h. */
|
||||||
|
typedef struct GTY(()) initial_value_struct {
|
||||||
|
int num_entries;
|
||||||
|
int max_entries;
|
||||||
|
initial_value_pair * GTY ((length ("%h.num_entries"))) entries;
|
||||||
|
} initial_value_struct;
|
||||||
|
|
||||||
|
/* If a pseudo represents an initial hard reg (or expression), return
|
||||||
|
it, else return NULL_RTX. */
|
||||||
|
|
||||||
|
rtx
|
||||||
|
get_hard_reg_initial_reg (rtx reg)
|
||||||
|
{
|
||||||
|
struct initial_value_struct *ivs = crtl->hard_reg_initial_vals;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (ivs == 0)
|
||||||
|
return NULL_RTX;
|
||||||
|
|
||||||
|
for (i = 0; i < ivs->num_entries; i++)
|
||||||
|
if (rtx_equal_p (ivs->entries[i].pseudo, reg))
|
||||||
|
return ivs->entries[i].hard_reg;
|
||||||
|
|
||||||
|
return NULL_RTX;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make sure that there's a pseudo register of mode MODE that stores the
|
||||||
|
initial value of hard register REGNO. Return an rtx for such a pseudo. */
|
||||||
|
|
||||||
|
rtx
|
||||||
|
get_hard_reg_initial_val (enum machine_mode mode, unsigned int regno)
|
||||||
|
{
|
||||||
|
struct initial_value_struct *ivs;
|
||||||
|
rtx rv;
|
||||||
|
|
||||||
|
rv = has_hard_reg_initial_val (mode, regno);
|
||||||
|
if (rv)
|
||||||
|
return rv;
|
||||||
|
|
||||||
|
ivs = crtl->hard_reg_initial_vals;
|
||||||
|
if (ivs == 0)
|
||||||
|
{
|
||||||
|
ivs = ggc_alloc_initial_value_struct ();
|
||||||
|
ivs->num_entries = 0;
|
||||||
|
ivs->max_entries = 5;
|
||||||
|
ivs->entries = ggc_alloc_vec_initial_value_pair (5);
|
||||||
|
crtl->hard_reg_initial_vals = ivs;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ivs->num_entries >= ivs->max_entries)
|
||||||
|
{
|
||||||
|
ivs->max_entries += 5;
|
||||||
|
ivs->entries = GGC_RESIZEVEC (initial_value_pair, ivs->entries,
|
||||||
|
ivs->max_entries);
|
||||||
|
}
|
||||||
|
|
||||||
|
ivs->entries[ivs->num_entries].hard_reg = gen_rtx_REG (mode, regno);
|
||||||
|
ivs->entries[ivs->num_entries].pseudo = gen_reg_rtx (mode);
|
||||||
|
|
||||||
|
return ivs->entries[ivs->num_entries++].pseudo;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* See if get_hard_reg_initial_val has been used to create a pseudo
|
||||||
|
for the initial value of hard register REGNO in mode MODE. Return
|
||||||
|
the associated pseudo if so, otherwise return NULL. */
|
||||||
|
|
||||||
|
rtx
|
||||||
|
has_hard_reg_initial_val (enum machine_mode mode, unsigned int regno)
|
||||||
|
{
|
||||||
|
struct initial_value_struct *ivs;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
ivs = crtl->hard_reg_initial_vals;
|
||||||
|
if (ivs != 0)
|
||||||
|
for (i = 0; i < ivs->num_entries; i++)
|
||||||
|
if (GET_MODE (ivs->entries[i].hard_reg) == mode
|
||||||
|
&& REGNO (ivs->entries[i].hard_reg) == regno)
|
||||||
|
return ivs->entries[i].pseudo;
|
||||||
|
|
||||||
|
return NULL_RTX;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int
|
||||||
|
emit_initial_value_sets (void)
|
||||||
|
{
|
||||||
|
struct initial_value_struct *ivs = crtl->hard_reg_initial_vals;
|
||||||
|
int i;
|
||||||
|
rtx seq;
|
||||||
|
|
||||||
|
if (ivs == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
start_sequence ();
|
||||||
|
for (i = 0; i < ivs->num_entries; i++)
|
||||||
|
emit_move_insn (ivs->entries[i].pseudo, ivs->entries[i].hard_reg);
|
||||||
|
seq = get_insns ();
|
||||||
|
end_sequence ();
|
||||||
|
|
||||||
|
emit_insn_at_entry (seq);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return the hardreg-pseudoreg initial values pair entry I and
|
||||||
|
TRUE if I is a valid entry, or FALSE if I is not a valid entry. */
|
||||||
|
bool
|
||||||
|
initial_value_entry (int i, rtx *hreg, rtx *preg)
|
||||||
|
{
|
||||||
|
struct initial_value_struct *ivs = crtl->hard_reg_initial_vals;
|
||||||
|
if (!ivs || i >= ivs->num_entries)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
*hreg = ivs->entries[i].hard_reg;
|
||||||
|
*preg = ivs->entries[i].pseudo;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/* These routines are responsible for converting virtual register references
|
/* These routines are responsible for converting virtual register references
|
||||||
to the actual hard register references once RTL generation is complete.
|
to the actual hard register references once RTL generation is complete.
|
||||||
|
|
||||||
|
|
|
@ -264,8 +264,11 @@ struct GTY(()) rtl_data {
|
||||||
the hard register containing the result. */
|
the hard register containing the result. */
|
||||||
rtx return_rtx;
|
rtx return_rtx;
|
||||||
|
|
||||||
/* Opaque pointer used by get_hard_reg_initial_val and
|
/* Vector of initial-value pairs. Each pair consists of a pseudo
|
||||||
has_hard_reg_initial_val (see integrate.[hc]). */
|
register of approprite mode that stores the initial value a hard
|
||||||
|
register REGNO, and that hard register itself. */
|
||||||
|
/* ??? This could be a VEC but there is currently no way to define an
|
||||||
|
opaque VEC type. */
|
||||||
struct initial_value_struct *hard_reg_initial_vals;
|
struct initial_value_struct *hard_reg_initial_vals;
|
||||||
|
|
||||||
/* A variable living at the top of the frame that holds a known value.
|
/* A variable living at the top of the frame that holds a known value.
|
||||||
|
@ -688,7 +691,6 @@ void types_used_by_var_decl_insert (tree type, tree var_decl);
|
||||||
referenced by the global variable. */
|
referenced by the global variable. */
|
||||||
extern GTY(()) VEC(tree,gc) *types_used_by_cur_var_decl;
|
extern GTY(()) VEC(tree,gc) *types_used_by_cur_var_decl;
|
||||||
|
|
||||||
|
|
||||||
/* cfun shouldn't be set directly; use one of these functions instead. */
|
/* cfun shouldn't be set directly; use one of these functions instead. */
|
||||||
extern void set_cfun (struct function *new_cfun);
|
extern void set_cfun (struct function *new_cfun);
|
||||||
extern void push_cfun (struct function *new_cfun);
|
extern void push_cfun (struct function *new_cfun);
|
||||||
|
@ -760,6 +762,14 @@ extern int get_last_funcdef_no (void);
|
||||||
extern bool requires_stack_frame_p (rtx, HARD_REG_SET, HARD_REG_SET);
|
extern bool requires_stack_frame_p (rtx, HARD_REG_SET, HARD_REG_SET);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern rtx get_hard_reg_initial_val (enum machine_mode, unsigned int);
|
||||||
|
extern rtx has_hard_reg_initial_val (enum machine_mode, unsigned int);
|
||||||
|
extern rtx get_hard_reg_initial_reg (rtx);
|
||||||
|
extern bool initial_value_entry (int i, rtx *, rtx *);
|
||||||
|
|
||||||
|
/* Called from gimple_expand_cfg. */
|
||||||
|
extern unsigned int emit_initial_value_sets (void);
|
||||||
|
|
||||||
/* In predict.c */
|
/* In predict.c */
|
||||||
extern bool optimize_function_for_size_p (struct function *);
|
extern bool optimize_function_for_size_p (struct function *);
|
||||||
extern bool optimize_function_for_speed_p (struct function *);
|
extern bool optimize_function_for_speed_p (struct function *);
|
||||||
|
|
|
@ -809,7 +809,6 @@ from the machine description file `md'. */\n\n");
|
||||||
printf ("#include \"tm-constrs.h\"\n");
|
printf ("#include \"tm-constrs.h\"\n");
|
||||||
printf ("#include \"ggc.h\"\n");
|
printf ("#include \"ggc.h\"\n");
|
||||||
printf ("#include \"basic-block.h\"\n");
|
printf ("#include \"basic-block.h\"\n");
|
||||||
printf ("#include \"integrate.h\"\n");
|
|
||||||
printf ("#include \"target.h\"\n\n");
|
printf ("#include \"target.h\"\n\n");
|
||||||
printf ("#define FAIL return (end_sequence (), _val)\n");
|
printf ("#define FAIL return (end_sequence (), _val)\n");
|
||||||
printf ("#define DONE return (_val = get_insns (), end_sequence (), _val)\n\n");
|
printf ("#define DONE return (_val = get_insns (), end_sequence (), _val)\n\n");
|
||||||
|
|
|
@ -117,7 +117,7 @@ read_line (FILE *file)
|
||||||
the null character. */
|
the null character. */
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
location_get_source_line(expanded_location xloc)
|
location_get_source_line (expanded_location xloc)
|
||||||
{
|
{
|
||||||
const char *buffer;
|
const char *buffer;
|
||||||
int lines = 1;
|
int lines = 1;
|
||||||
|
|
360
gcc/integrate.c
360
gcc/integrate.c
|
@ -1,360 +0,0 @@
|
||||||
/* Procedure integration for GCC.
|
|
||||||
Copyright (C) 1988, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
|
||||||
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
|
||||||
Free Software Foundation, Inc.
|
|
||||||
Contributed by Michael Tiemann (tiemann@cygnus.com)
|
|
||||||
|
|
||||||
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/>. */
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
#include "system.h"
|
|
||||||
#include "coretypes.h"
|
|
||||||
#include "tm.h"
|
|
||||||
|
|
||||||
#include "rtl.h"
|
|
||||||
#include "tree.h"
|
|
||||||
#include "tm_p.h"
|
|
||||||
#include "regs.h"
|
|
||||||
#include "flags.h"
|
|
||||||
#include "debug.h"
|
|
||||||
#include "insn-config.h"
|
|
||||||
#include "expr.h"
|
|
||||||
#include "output.h"
|
|
||||||
#include "recog.h"
|
|
||||||
/* For reg_equivs. */
|
|
||||||
#include "reload.h"
|
|
||||||
#include "integrate.h"
|
|
||||||
#include "except.h"
|
|
||||||
#include "function.h"
|
|
||||||
#include "diagnostic-core.h"
|
|
||||||
#include "intl.h"
|
|
||||||
#include "params.h"
|
|
||||||
#include "ggc.h"
|
|
||||||
#include "target.h"
|
|
||||||
#include "langhooks.h"
|
|
||||||
#include "tree-pass.h"
|
|
||||||
#include "df.h"
|
|
||||||
|
|
||||||
/* Round to the next highest integer that meets the alignment. */
|
|
||||||
#define CEIL_ROUND(VALUE,ALIGN) (((VALUE) + (ALIGN) - 1) & ~((ALIGN)- 1))
|
|
||||||
|
|
||||||
|
|
||||||
/* Private type used by {get/has}_hard_reg_initial_val. */
|
|
||||||
typedef struct GTY(()) initial_value_pair {
|
|
||||||
rtx hard_reg;
|
|
||||||
rtx pseudo;
|
|
||||||
} initial_value_pair;
|
|
||||||
typedef struct GTY(()) initial_value_struct {
|
|
||||||
int num_entries;
|
|
||||||
int max_entries;
|
|
||||||
initial_value_pair * GTY ((length ("%h.num_entries"))) entries;
|
|
||||||
} initial_value_struct;
|
|
||||||
|
|
||||||
static void set_block_origin_self (tree);
|
|
||||||
static void set_block_abstract_flags (tree, int);
|
|
||||||
|
|
||||||
|
|
||||||
/* Return false if the function FNDECL cannot be inlined on account of its
|
|
||||||
attributes, true otherwise. */
|
|
||||||
bool
|
|
||||||
function_attribute_inlinable_p (const_tree fndecl)
|
|
||||||
{
|
|
||||||
if (targetm.attribute_table)
|
|
||||||
{
|
|
||||||
const_tree a;
|
|
||||||
|
|
||||||
for (a = DECL_ATTRIBUTES (fndecl); a; a = TREE_CHAIN (a))
|
|
||||||
{
|
|
||||||
const_tree name = TREE_PURPOSE (a);
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; targetm.attribute_table[i].name != NULL; i++)
|
|
||||||
if (is_attribute_p (targetm.attribute_table[i].name, name))
|
|
||||||
return targetm.function_attribute_inlinable_p (fndecl);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Given a pointer to some BLOCK node, if the BLOCK_ABSTRACT_ORIGIN for the
|
|
||||||
given BLOCK node is NULL, set the BLOCK_ABSTRACT_ORIGIN for the node so
|
|
||||||
that it points to the node itself, thus indicating that the node is its
|
|
||||||
own (abstract) origin. Additionally, if the BLOCK_ABSTRACT_ORIGIN for
|
|
||||||
the given node is NULL, recursively descend the decl/block tree which
|
|
||||||
it is the root of, and for each other ..._DECL or BLOCK node contained
|
|
||||||
therein whose DECL_ABSTRACT_ORIGINs or BLOCK_ABSTRACT_ORIGINs are also
|
|
||||||
still NULL, set *their* DECL_ABSTRACT_ORIGIN or BLOCK_ABSTRACT_ORIGIN
|
|
||||||
values to point to themselves. */
|
|
||||||
|
|
||||||
static void
|
|
||||||
set_block_origin_self (tree stmt)
|
|
||||||
{
|
|
||||||
if (BLOCK_ABSTRACT_ORIGIN (stmt) == NULL_TREE)
|
|
||||||
{
|
|
||||||
BLOCK_ABSTRACT_ORIGIN (stmt) = stmt;
|
|
||||||
|
|
||||||
{
|
|
||||||
tree local_decl;
|
|
||||||
|
|
||||||
for (local_decl = BLOCK_VARS (stmt);
|
|
||||||
local_decl != NULL_TREE;
|
|
||||||
local_decl = DECL_CHAIN (local_decl))
|
|
||||||
if (! DECL_EXTERNAL (local_decl))
|
|
||||||
set_decl_origin_self (local_decl); /* Potential recursion. */
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
tree subblock;
|
|
||||||
|
|
||||||
for (subblock = BLOCK_SUBBLOCKS (stmt);
|
|
||||||
subblock != NULL_TREE;
|
|
||||||
subblock = BLOCK_CHAIN (subblock))
|
|
||||||
set_block_origin_self (subblock); /* Recurse. */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Given a pointer to some ..._DECL node, if the DECL_ABSTRACT_ORIGIN for
|
|
||||||
the given ..._DECL node is NULL, set the DECL_ABSTRACT_ORIGIN for the
|
|
||||||
node to so that it points to the node itself, thus indicating that the
|
|
||||||
node represents its own (abstract) origin. Additionally, if the
|
|
||||||
DECL_ABSTRACT_ORIGIN for the given node is NULL, recursively descend
|
|
||||||
the decl/block tree of which the given node is the root of, and for
|
|
||||||
each other ..._DECL or BLOCK node contained therein whose
|
|
||||||
DECL_ABSTRACT_ORIGINs or BLOCK_ABSTRACT_ORIGINs are also still NULL,
|
|
||||||
set *their* DECL_ABSTRACT_ORIGIN or BLOCK_ABSTRACT_ORIGIN values to
|
|
||||||
point to themselves. */
|
|
||||||
|
|
||||||
void
|
|
||||||
set_decl_origin_self (tree decl)
|
|
||||||
{
|
|
||||||
if (DECL_ABSTRACT_ORIGIN (decl) == NULL_TREE)
|
|
||||||
{
|
|
||||||
DECL_ABSTRACT_ORIGIN (decl) = decl;
|
|
||||||
if (TREE_CODE (decl) == FUNCTION_DECL)
|
|
||||||
{
|
|
||||||
tree arg;
|
|
||||||
|
|
||||||
for (arg = DECL_ARGUMENTS (decl); arg; arg = DECL_CHAIN (arg))
|
|
||||||
DECL_ABSTRACT_ORIGIN (arg) = arg;
|
|
||||||
if (DECL_INITIAL (decl) != NULL_TREE
|
|
||||||
&& DECL_INITIAL (decl) != error_mark_node)
|
|
||||||
set_block_origin_self (DECL_INITIAL (decl));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Given a pointer to some BLOCK node, and a boolean value to set the
|
|
||||||
"abstract" flags to, set that value into the BLOCK_ABSTRACT flag for
|
|
||||||
the given block, and for all local decls and all local sub-blocks
|
|
||||||
(recursively) which are contained therein. */
|
|
||||||
|
|
||||||
static void
|
|
||||||
set_block_abstract_flags (tree stmt, int setting)
|
|
||||||
{
|
|
||||||
tree local_decl;
|
|
||||||
tree subblock;
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
BLOCK_ABSTRACT (stmt) = setting;
|
|
||||||
|
|
||||||
for (local_decl = BLOCK_VARS (stmt);
|
|
||||||
local_decl != NULL_TREE;
|
|
||||||
local_decl = DECL_CHAIN (local_decl))
|
|
||||||
if (! DECL_EXTERNAL (local_decl))
|
|
||||||
set_decl_abstract_flags (local_decl, setting);
|
|
||||||
|
|
||||||
for (i = 0; i < BLOCK_NUM_NONLOCALIZED_VARS (stmt); i++)
|
|
||||||
{
|
|
||||||
local_decl = BLOCK_NONLOCALIZED_VAR (stmt, i);
|
|
||||||
if ((TREE_CODE (local_decl) == VAR_DECL && !TREE_STATIC (local_decl))
|
|
||||||
|| TREE_CODE (local_decl) == PARM_DECL)
|
|
||||||
set_decl_abstract_flags (local_decl, setting);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (subblock = BLOCK_SUBBLOCKS (stmt);
|
|
||||||
subblock != NULL_TREE;
|
|
||||||
subblock = BLOCK_CHAIN (subblock))
|
|
||||||
set_block_abstract_flags (subblock, setting);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Given a pointer to some ..._DECL node, and a boolean value to set the
|
|
||||||
"abstract" flags to, set that value into the DECL_ABSTRACT flag for the
|
|
||||||
given decl, and (in the case where the decl is a FUNCTION_DECL) also
|
|
||||||
set the abstract flags for all of the parameters, local vars, local
|
|
||||||
blocks and sub-blocks (recursively) to the same setting. */
|
|
||||||
|
|
||||||
void
|
|
||||||
set_decl_abstract_flags (tree decl, int setting)
|
|
||||||
{
|
|
||||||
DECL_ABSTRACT (decl) = setting;
|
|
||||||
if (TREE_CODE (decl) == FUNCTION_DECL)
|
|
||||||
{
|
|
||||||
tree arg;
|
|
||||||
|
|
||||||
for (arg = DECL_ARGUMENTS (decl); arg; arg = DECL_CHAIN (arg))
|
|
||||||
DECL_ABSTRACT (arg) = setting;
|
|
||||||
if (DECL_INITIAL (decl) != NULL_TREE
|
|
||||||
&& DECL_INITIAL (decl) != error_mark_node)
|
|
||||||
set_block_abstract_flags (DECL_INITIAL (decl), setting);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Functions to keep track of the values hard regs had at the start of
|
|
||||||
the function. */
|
|
||||||
|
|
||||||
rtx
|
|
||||||
get_hard_reg_initial_reg (rtx reg)
|
|
||||||
{
|
|
||||||
struct initial_value_struct *ivs = crtl->hard_reg_initial_vals;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (ivs == 0)
|
|
||||||
return NULL_RTX;
|
|
||||||
|
|
||||||
for (i = 0; i < ivs->num_entries; i++)
|
|
||||||
if (rtx_equal_p (ivs->entries[i].pseudo, reg))
|
|
||||||
return ivs->entries[i].hard_reg;
|
|
||||||
|
|
||||||
return NULL_RTX;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Make sure that there's a pseudo register of mode MODE that stores the
|
|
||||||
initial value of hard register REGNO. Return an rtx for such a pseudo. */
|
|
||||||
|
|
||||||
rtx
|
|
||||||
get_hard_reg_initial_val (enum machine_mode mode, unsigned int regno)
|
|
||||||
{
|
|
||||||
struct initial_value_struct *ivs;
|
|
||||||
rtx rv;
|
|
||||||
|
|
||||||
rv = has_hard_reg_initial_val (mode, regno);
|
|
||||||
if (rv)
|
|
||||||
return rv;
|
|
||||||
|
|
||||||
ivs = crtl->hard_reg_initial_vals;
|
|
||||||
if (ivs == 0)
|
|
||||||
{
|
|
||||||
ivs = ggc_alloc_initial_value_struct ();
|
|
||||||
ivs->num_entries = 0;
|
|
||||||
ivs->max_entries = 5;
|
|
||||||
ivs->entries = ggc_alloc_vec_initial_value_pair (5);
|
|
||||||
crtl->hard_reg_initial_vals = ivs;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ivs->num_entries >= ivs->max_entries)
|
|
||||||
{
|
|
||||||
ivs->max_entries += 5;
|
|
||||||
ivs->entries = GGC_RESIZEVEC (initial_value_pair, ivs->entries,
|
|
||||||
ivs->max_entries);
|
|
||||||
}
|
|
||||||
|
|
||||||
ivs->entries[ivs->num_entries].hard_reg = gen_rtx_REG (mode, regno);
|
|
||||||
ivs->entries[ivs->num_entries].pseudo = gen_reg_rtx (mode);
|
|
||||||
|
|
||||||
return ivs->entries[ivs->num_entries++].pseudo;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* See if get_hard_reg_initial_val has been used to create a pseudo
|
|
||||||
for the initial value of hard register REGNO in mode MODE. Return
|
|
||||||
the associated pseudo if so, otherwise return NULL. */
|
|
||||||
|
|
||||||
rtx
|
|
||||||
has_hard_reg_initial_val (enum machine_mode mode, unsigned int regno)
|
|
||||||
{
|
|
||||||
struct initial_value_struct *ivs;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
ivs = crtl->hard_reg_initial_vals;
|
|
||||||
if (ivs != 0)
|
|
||||||
for (i = 0; i < ivs->num_entries; i++)
|
|
||||||
if (GET_MODE (ivs->entries[i].hard_reg) == mode
|
|
||||||
&& REGNO (ivs->entries[i].hard_reg) == regno)
|
|
||||||
return ivs->entries[i].pseudo;
|
|
||||||
|
|
||||||
return NULL_RTX;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned int
|
|
||||||
emit_initial_value_sets (void)
|
|
||||||
{
|
|
||||||
struct initial_value_struct *ivs = crtl->hard_reg_initial_vals;
|
|
||||||
int i;
|
|
||||||
rtx seq;
|
|
||||||
|
|
||||||
if (ivs == 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
start_sequence ();
|
|
||||||
for (i = 0; i < ivs->num_entries; i++)
|
|
||||||
emit_move_insn (ivs->entries[i].pseudo, ivs->entries[i].hard_reg);
|
|
||||||
seq = get_insns ();
|
|
||||||
end_sequence ();
|
|
||||||
|
|
||||||
emit_insn_at_entry (seq);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If the backend knows where to allocate pseudos for hard
|
|
||||||
register initial values, register these allocations now. */
|
|
||||||
void
|
|
||||||
allocate_initial_values (VEC (reg_equivs_t, gc) *reg_equivs)
|
|
||||||
{
|
|
||||||
if (targetm.allocate_initial_value)
|
|
||||||
{
|
|
||||||
struct initial_value_struct *ivs = crtl->hard_reg_initial_vals;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (ivs == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (i = 0; i < ivs->num_entries; i++)
|
|
||||||
{
|
|
||||||
int regno = REGNO (ivs->entries[i].pseudo);
|
|
||||||
rtx x = targetm.allocate_initial_value (ivs->entries[i].hard_reg);
|
|
||||||
|
|
||||||
if (x && REG_N_SETS (REGNO (ivs->entries[i].pseudo)) <= 1)
|
|
||||||
{
|
|
||||||
if (MEM_P (x))
|
|
||||||
reg_equiv_memory_loc (regno) = x;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
basic_block bb;
|
|
||||||
int new_regno;
|
|
||||||
|
|
||||||
gcc_assert (REG_P (x));
|
|
||||||
new_regno = REGNO (x);
|
|
||||||
reg_renumber[regno] = new_regno;
|
|
||||||
/* Poke the regno right into regno_reg_rtx so that even
|
|
||||||
fixed regs are accepted. */
|
|
||||||
SET_REGNO (ivs->entries[i].pseudo, new_regno);
|
|
||||||
/* Update global register liveness information. */
|
|
||||||
FOR_EACH_BB (bb)
|
|
||||||
{
|
|
||||||
if (REGNO_REG_SET_P(df_get_live_in (bb), regno))
|
|
||||||
SET_REGNO_REG_SET (df_get_live_in (bb), new_regno);
|
|
||||||
if (REGNO_REG_SET_P(df_get_live_out (bb), regno))
|
|
||||||
SET_REGNO_REG_SET (df_get_live_out (bb), new_regno);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#include "gt-integrate.h"
|
|
|
@ -1,33 +0,0 @@
|
||||||
/* Function integration definitions for GCC
|
|
||||||
Copyright (C) 1990, 1995, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
|
|
||||||
2007, 2008, 2010 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/>. */
|
|
||||||
|
|
||||||
extern rtx get_hard_reg_initial_val (enum machine_mode, unsigned int);
|
|
||||||
extern rtx has_hard_reg_initial_val (enum machine_mode, unsigned int);
|
|
||||||
/* If a pseudo represents an initial hard reg (or expression), return
|
|
||||||
it, else return NULL_RTX. */
|
|
||||||
extern rtx get_hard_reg_initial_reg (rtx);
|
|
||||||
/* Called from rest_of_compilation. */
|
|
||||||
extern unsigned int emit_initial_value_sets (void);
|
|
||||||
|
|
||||||
/* Check whether there's any attribute in a function declaration that
|
|
||||||
makes the function uninlinable. Returns false if it finds any,
|
|
||||||
true otherwise. */
|
|
||||||
extern bool function_attribute_inlinable_p (const_tree);
|
|
||||||
|
|
52
gcc/ira.c
52
gcc/ira.c
|
@ -380,7 +380,7 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "except.h"
|
#include "except.h"
|
||||||
#include "reload.h"
|
#include "reload.h"
|
||||||
#include "diagnostic-core.h"
|
#include "diagnostic-core.h"
|
||||||
#include "integrate.h"
|
#include "function.h"
|
||||||
#include "ggc.h"
|
#include "ggc.h"
|
||||||
#include "ira-int.h"
|
#include "ira-int.h"
|
||||||
#include "dce.h"
|
#include "dce.h"
|
||||||
|
@ -4034,7 +4034,55 @@ move_unallocated_pseudos (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If the backend knows where to allocate pseudos for hard
|
||||||
|
register initial values, register these allocations now. */
|
||||||
|
void
|
||||||
|
allocate_initial_values (void)
|
||||||
|
{
|
||||||
|
if (targetm.allocate_initial_value)
|
||||||
|
{
|
||||||
|
rtx hreg, preg, x;
|
||||||
|
int i, regno;
|
||||||
|
|
||||||
|
for (i = 0; HARD_REGISTER_NUM_P (i); i++)
|
||||||
|
{
|
||||||
|
if (! initial_value_entry (i, &hreg, &preg))
|
||||||
|
break;
|
||||||
|
|
||||||
|
x = targetm.allocate_initial_value (hreg);
|
||||||
|
regno = REGNO (preg);
|
||||||
|
if (x && REG_N_SETS (regno) <= 1)
|
||||||
|
{
|
||||||
|
if (MEM_P (x))
|
||||||
|
reg_equiv_memory_loc (regno) = x;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
basic_block bb;
|
||||||
|
int new_regno;
|
||||||
|
|
||||||
|
gcc_assert (REG_P (x));
|
||||||
|
new_regno = REGNO (x);
|
||||||
|
reg_renumber[regno] = new_regno;
|
||||||
|
/* Poke the regno right into regno_reg_rtx so that even
|
||||||
|
fixed regs are accepted. */
|
||||||
|
SET_REGNO (preg, new_regno);
|
||||||
|
/* Update global register liveness information. */
|
||||||
|
FOR_EACH_BB (bb)
|
||||||
|
{
|
||||||
|
if (REGNO_REG_SET_P(df_get_live_in (bb), regno))
|
||||||
|
SET_REGNO_REG_SET (df_get_live_in (bb), new_regno);
|
||||||
|
if (REGNO_REG_SET_P(df_get_live_out (bb), regno))
|
||||||
|
SET_REGNO_REG_SET (df_get_live_out (bb), new_regno);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gcc_checking_assert (! initial_value_entry (FIRST_PSEUDO_REGISTER,
|
||||||
|
&hreg, &preg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* All natural loops. */
|
/* All natural loops. */
|
||||||
struct loops ira_loops;
|
struct loops ira_loops;
|
||||||
|
|
||||||
|
@ -4239,7 +4287,7 @@ ira (FILE *f)
|
||||||
memset (ira_spilled_reg_stack_slots, 0,
|
memset (ira_spilled_reg_stack_slots, 0,
|
||||||
max_regno * sizeof (struct ira_spilled_reg_stack_slot));
|
max_regno * sizeof (struct ira_spilled_reg_stack_slot));
|
||||||
}
|
}
|
||||||
allocate_initial_values (reg_equivs);
|
allocate_initial_values ();
|
||||||
|
|
||||||
/* See comment for find_moveable_pseudos call. */
|
/* See comment for find_moveable_pseudos call. */
|
||||||
if (ira_conflicts_p)
|
if (ira_conflicts_p)
|
||||||
|
|
|
@ -30,7 +30,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "gimple.h"
|
#include "gimple.h"
|
||||||
#include "rtl.h"
|
#include "rtl.h"
|
||||||
#include "insn-config.h"
|
#include "insn-config.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "flags.h"
|
#include "flags.h"
|
||||||
#include "langhooks.h"
|
#include "langhooks.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
|
|
|
@ -54,7 +54,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "params.h"
|
#include "params.h"
|
||||||
#include "reload.h"
|
#include "reload.h"
|
||||||
#include "dwarf2asm.h"
|
#include "dwarf2asm.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "langhooks.h"
|
#include "langhooks.h"
|
||||||
|
|
|
@ -460,9 +460,5 @@ extern void debug_reload (void);
|
||||||
reloading to/from a register that is wider than a word. */
|
reloading to/from a register that is wider than a word. */
|
||||||
extern rtx reload_adjust_reg_for_mode (rtx, enum machine_mode);
|
extern rtx reload_adjust_reg_for_mode (rtx, enum machine_mode);
|
||||||
|
|
||||||
/* Ideally this function would be in ira.c or reload, but due to dependencies
|
|
||||||
on integrate.h, it's part of integrate.c. */
|
|
||||||
extern void allocate_initial_values (VEC (reg_equivs_t, gc) *);
|
|
||||||
|
|
||||||
/* Allocate or grow the reg_equiv tables, initializing new entries to 0. */
|
/* Allocate or grow the reg_equiv tables, initializing new entries to 0. */
|
||||||
extern void grow_reg_equivs (void);
|
extern void grow_reg_equivs (void);
|
||||||
|
|
|
@ -59,7 +59,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "reload.h"
|
#include "reload.h"
|
||||||
#include "ira.h"
|
#include "ira.h"
|
||||||
#include "dwarf2asm.h"
|
#include "dwarf2asm.h"
|
||||||
#include "integrate.h"
|
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "common/common-target.h"
|
#include "common/common-target.h"
|
||||||
|
|
|
@ -48,7 +48,6 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "value-prof.h"
|
#include "value-prof.h"
|
||||||
#include "tree-pass.h"
|
#include "tree-pass.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "integrate.h"
|
|
||||||
|
|
||||||
#include "rtl.h" /* FIXME: For asm_str_count. */
|
#include "rtl.h" /* FIXME: For asm_str_count. */
|
||||||
|
|
||||||
|
@ -3236,6 +3235,29 @@ inline_forbidden_p (tree fndecl)
|
||||||
pointer_set_destroy (visited_nodes);
|
pointer_set_destroy (visited_nodes);
|
||||||
return forbidden_p;
|
return forbidden_p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return false if the function FNDECL cannot be inlined on account of its
|
||||||
|
attributes, true otherwise. */
|
||||||
|
static bool
|
||||||
|
function_attribute_inlinable_p (const_tree fndecl)
|
||||||
|
{
|
||||||
|
if (targetm.attribute_table)
|
||||||
|
{
|
||||||
|
const_tree a;
|
||||||
|
|
||||||
|
for (a = DECL_ATTRIBUTES (fndecl); a; a = TREE_CHAIN (a))
|
||||||
|
{
|
||||||
|
const_tree name = TREE_PURPOSE (a);
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; targetm.attribute_table[i].name != NULL; i++)
|
||||||
|
if (is_attribute_p (targetm.attribute_table[i].name, name))
|
||||||
|
return targetm.function_attribute_inlinable_p (fndecl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/* Returns nonzero if FN is a function that does not have any
|
/* Returns nonzero if FN is a function that does not have any
|
||||||
fundamental inline blocking properties. */
|
fundamental inline blocking properties. */
|
||||||
|
|
|
@ -5658,10 +5658,6 @@ extern tree decl_attributes (tree *, tree, int);
|
||||||
|
|
||||||
extern void apply_tm_attr (tree, tree);
|
extern void apply_tm_attr (tree, tree);
|
||||||
|
|
||||||
/* In integrate.c */
|
|
||||||
extern void set_decl_abstract_flags (tree, int);
|
|
||||||
extern void set_decl_origin_self (tree);
|
|
||||||
|
|
||||||
/* In stor-layout.c */
|
/* In stor-layout.c */
|
||||||
extern void set_min_and_max_values_for_integral_type (tree, int, bool);
|
extern void set_min_and_max_values_for_integral_type (tree, int, bool);
|
||||||
extern void fixup_signed_type (tree);
|
extern void fixup_signed_type (tree);
|
||||||
|
|
Loading…
Reference in New Issue