]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
integrate.c: Remove.
authorSteven Bosscher <steven@gcc.gnu.org>
Tue, 29 May 2012 15:36:18 +0000 (15:36 +0000)
committerSteven Bosscher <steven@gcc.gnu.org>
Tue, 29 May 2012 15:36:18 +0000 (15:36 +0000)
* 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

44 files changed:
gcc/ChangeLog
gcc/Makefile.in
gcc/cfgexpand.c
gcc/config/alpha/alpha.c
gcc/config/arm/arm.c
gcc/config/arm/t-arm
gcc/config/bfin/bfin.c
gcc/config/c6x/c6x.c
gcc/config/epiphany/epiphany.c
gcc/config/frv/frv.c
gcc/config/m32r/m32r.c
gcc/config/mep/mep.c
gcc/config/microblaze/microblaze.c
gcc/config/mips/mips.c
gcc/config/mmix/mmix.c
gcc/config/pa/pa.c
gcc/config/picochip/picochip.c
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/t-rs6000
gcc/config/s390/s390.c
gcc/config/score/score.c
gcc/config/sh/sh.c
gcc/config/spu/spu.c
gcc/config/spu/t-spu-elf
gcc/config/tilegx/tilegx.c
gcc/config/tilepro/tilepro.c
gcc/config/v850/v850.c
gcc/cse.c
gcc/dwarf2out.c
gcc/except.c
gcc/expmed.c
gcc/function.c
gcc/function.h
gcc/genemit.c
gcc/input.c
gcc/integrate.c [deleted file]
gcc/integrate.h [deleted file]
gcc/ira.c
gcc/langhooks.c
gcc/passes.c
gcc/reload.h
gcc/toplev.c
gcc/tree-inline.c
gcc/tree.h

index 50ba4a088f35c3ed72e26b4c648fc976b7953c29..07a610f48e3000edc496a74915ff98cf3843d013 100644 (file)
@@ -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>
 
        * config/avr/t-avr (s-avr-mmcu-texi): Call 
        * doc/options.texi (EnabledBy): Document
        * opts.c: Include opts.h and options.h before tm.h.
        (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.
        * opth-gen.awk: Declare common_handle_option_auto.
        * common.opt (Wuninitialized): Use EnabledBy. Delete Init.
index a6fe0e4eba20d1cc348a6d825d17669ec057f37d..6cdd8ee367194453c5e6744e0210ae2247b91ffa 100644 (file)
@@ -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) \
        $(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)
-INTEGRATE_H = integrate.h
 CFGLAYOUT_H = cfglayout.h $(BASIC_BLOCK_H)
 CFGLOOP_H = cfgloop.h $(BASIC_BLOCK_H) $(RTL_H) vecprim.h double-int.h \
        $(BITMAP_H) sbitmap.h
@@ -1253,7 +1252,6 @@ OBJS = \
        ree.o \
        incpath.o \
        init-regs.o \
-       integrate.o \
        internal-fn.o \
        ipa-cp.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 \
    $(DIAGNOSTIC_CORE_H) $(STREAMER_HOOKS_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) \
    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) \
@@ -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) \
    intl.h $(FUNCTION_H) $(GIMPLE_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
 print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_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) \
    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 \
-   $(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) \
    tree-ssa-alias.h $(PLUGIN_H) realmpfr.h tree-diagnostic.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) \
    langhooks.h insn-flags.h $(CFGLAYOUT_H) $(CFGLOOP_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) \
    $(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) \
    $(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) $(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 \
    $(COMMON_TARGET_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) \
    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) \
-   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) \
    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) \
@@ -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)
 fixed-value.o: fixed-value.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_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) \
    $(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) \
@@ -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) \
    value-prof.h $(TREE_INLINE_H) $(TARGET_H) $(SSAEXPAND_H) $(REGS_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) \
    $(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) \
@@ -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) \
    $(BITMAP_H) hard-reg-set.h $(BASIC_BLOCK_H) $(DBGCNT_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) \
    insn-config.h $(TIMEVAR_H) $(TREE_PASS_H) $(DF_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)               \
   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   \
-  $(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-extract.o : insn-extract.c $(CONFIG_H) $(SYSTEM_H) coretypes.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)/function.c $(srcdir)/except.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)/reg-stack.c $(srcdir)/cfglayout.c $(srcdir)/cfglayout.h \
   $(srcdir)/sdbout.c $(srcdir)/stor-layout.c \
index 126b132eb055e31cc8af0d5625b5a597ede66bab..8a31a9f5835c23c5cc2cc64dce3d499aa531512b 100644 (file)
@@ -49,7 +49,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "sbitmap.h"
 #include "cfgloop.h"
 #include "regs.h" /* For reg_renumber.  */
-#include "integrate.h" /* For emit_initial_value_sets.  */
 #include "insn-attr.h" /* For INSN_SCHEDULING.  */
 
 /* This variable holds information helping the rewriting of SSA trees
index 225c9ab3c54203b4c93c0fcf6bf554219586290e..6d15bf70cffe143f4b75ea6fc34a1ebe052db46b 100644 (file)
@@ -43,7 +43,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "function.h"
 #include "diagnostic-core.h"
 #include "ggc.h"
-#include "integrate.h"
 #include "tm_p.h"
 #include "target.h"
 #include "target-def.h"
index cb7eed5ae58b2fb0db32feaf98b732a1b020e038..c6d466055ab2595ac28e4dcf8a7362454c067461 100644 (file)
@@ -46,7 +46,6 @@
 #include "ggc.h"
 #include "except.h"
 #include "c-family/c-pragma.h" /* ??? */
-#include "integrate.h"
 #include "tm_p.h"
 #include "target.h"
 #include "target-def.h"
index 1128d1904b0df1447dfd6c9f22306d535c7746cd..2bc97a65dacce0c9875d13281f4178e5418e7cf4 100644 (file)
@@ -78,7 +78,7 @@ arm.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
   insn-config.h conditions.h output.h \
   $(INSN_ATTR_H) $(FLAGS_H) reload.h $(FUNCTION_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) \
   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
index 1342c568fd03e101a5783a3dc784bb5cc28258f2..3cef847c952dfe60a377273db52f230570ec59e8 100644 (file)
@@ -44,7 +44,6 @@
 #include "recog.h"
 #include "optabs.h"
 #include "ggc.h"
-#include "integrate.h"
 #include "cgraph.h"
 #include "langhooks.h"
 #include "bfin-protos.h"
index a613bbae8e1029e993636c4b5293a9796310c0cd..978d0cba82b3caebd972c0e9c875a3b9e06036e6 100644 (file)
@@ -40,7 +40,7 @@
 #include "tm-preds.h"
 #include "tm-constrs.h"
 #include "df.h"
-#include "integrate.h"
+#include "function.h"
 #include "diagnostic-core.h"
 #include "cgraph.h"
 #include "cfglayout.h"
index f1a8db76353ede77a4c0f7a49ead2f6565a8d4b7..aca296f0152fc62a12c67bb6be29a9714ed56961 100644 (file)
@@ -46,7 +46,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "ggc.h"
 #include "tm-constrs.h"
 #include "tree-pass.h"
-#include "integrate.h"
 
 /* Which cpu we're compiling for.  */
 int epiphany_cpu_type;
index ace9e437118fc9c7be8d7ca989007d13d0116b67..d7a111acbbbbe85773ade8f9e1fda0357600d9bc 100644 (file)
@@ -46,7 +46,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "target.h"
 #include "target-def.h"
 #include "targhooks.h"
-#include "integrate.h"
 #include "langhooks.h"
 #include "df.h"
 
index b27a3a5bb89e36605c1f019f3c7c26c0fa62c7dc..a2ae35ae75e8d014af0bb1f0a9ce1137a7ccc533 100644 (file)
@@ -36,7 +36,6 @@
 #include "recog.h"
 #include "diagnostic-core.h"
 #include "ggc.h"
-#include "integrate.h"
 #include "df.h"
 #include "tm_p.h"
 #include "target.h"
index f9ebab840488fa5104309b73316a9b4d6ddcaf5e..8e6cc4d1a8cbe45be3e912b233ad52816cee9415 100644 (file)
@@ -45,7 +45,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm_p.h"
 #include "ggc.h"
 #include "diagnostic-core.h"
-#include "integrate.h"
 #include "target.h"
 #include "target-def.h"
 #include "langhooks.h"
index 081715d98235372d70a5c8671cf9e10dd8039d75..8d08bc282ffbc10b2a4a05324d344d3fbd3386eb 100644 (file)
@@ -31,7 +31,6 @@
 #include "conditions.h"
 #include "insn-flags.h"
 #include "insn-attr.h"
-#include "integrate.h"
 #include "recog.h"
 #include "tree.h"
 #include "function.h"
index 416c1aa41bb5fddc207c20a8493ca2ba9d641aa8..122bc98efa0017fd0163a326c76e7b9d6fedccae 100644 (file)
@@ -50,7 +50,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "debug.h"
 #include "target.h"
 #include "target-def.h"
-#include "integrate.h"
 #include "langhooks.h"
 #include "cfglayout.h"
 #include "sched-int.h"
index 8f801e6c7cae5413f0e8f17f13ac8b4a55370b16..3a99cb626af6be6cf96b9628a0c2ff03c4aea32c 100644 (file)
@@ -41,7 +41,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "dwarf2.h"
 #include "debug.h"
 #include "tm_p.h"
-#include "integrate.h"
 #include "target.h"
 #include "target-def.h"
 #include "df.h"
index a95d7037724d805a2169650fcfce547cc596483c..95f2262db3f1c1718199eea23362b6d322747531 100644 (file)
@@ -37,7 +37,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "expr.h"
 #include "optabs.h"
 #include "reload.h"
-#include "integrate.h"
 #include "function.h"
 #include "diagnostic-core.h"
 #include "ggc.h"
index 57cbd157f4174bbcf07abc9482833a182f97053e..2beddce8cc98efbbef4bf3c60cb8139f18eebc99 100644 (file)
@@ -40,7 +40,6 @@ along with GCC; see the file COPYING3.  If not, see
 #include "function.h"
 #include "output.h"
 #include "basic-block.h"
-#include "integrate.h"
 #include "diagnostic-core.h"
 #include "ggc.h"
 #include "hashtab.h"
index a11aefd14fc19c16346b3d8b78da4002fb97653b..f6cef090f1e45f1cb98888f06dc635bdde9aca5b 100644 (file)
@@ -41,7 +41,6 @@
 #include "function.h"
 #include "output.h"
 #include "basic-block.h"
-#include "integrate.h"
 #include "diagnostic-core.h"
 #include "toplev.h"
 #include "ggc.h"
index 5204f589d5d621b1b89a9160768237d7e01f26d8..3ca2732fabca3b78b44bb57010010f3059eaffa0 100644 (file)
@@ -25,7 +25,7 @@ rs6000.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
   $(RTL_H) $(REGS_H) hard-reg-set.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) $(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 \
   cfglayout.h cfgloop.h $(OPTS_H) $(COMMON_TARGET_H)
 
index ede3a5574fe14233eb7f7ebc075c98dda88de084..bc0bf8a991a8a452ff8673133ef4b82fd57f7136 100644 (file)
@@ -42,7 +42,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "reload.h"
 #include "diagnostic-core.h"
 #include "basic-block.h"
-#include "integrate.h"
 #include "ggc.h"
 #include "target.h"
 #include "target-def.h"
index 0af0fd50b82e40a3d7275112e2ed17fdb073fd72..9c68e19ed30287a1c44830caacb50a3c51f6a04f 100644 (file)
@@ -45,7 +45,6 @@
 #include "debug.h"
 #include "target.h"
 #include "target-def.h"
-#include "integrate.h"
 #include "langhooks.h"
 #include "cfglayout.h"
 #include "df.h"
index 048a7549739af91492e4df63389a4fb921253645..4a2e8f43d8968c189ec4b4fbeb9b590844872dc3 100644 (file)
@@ -39,7 +39,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "insn-attr.h"
 #include "diagnostic-core.h"
 #include "recog.h"
-#include "integrate.h"
 #include "dwarf2.h"
 #include "tm_p.h"
 #include "target.h"
index fb482fb4c8202a5911cb816add35a2152460d9fb..b81bf5e8f2d075a825b9f732c21cc49ef01f0db5 100644 (file)
@@ -35,7 +35,6 @@
 #include "function.h"
 #include "output.h"
 #include "basic-block.h"
-#include "integrate.h"
 #include "diagnostic-core.h"
 #include "ggc.h"
 #include "hashtab.h"
index 50c8d0353f53c580833c6e4282dcba0255ea05d3..84fbbb28ad2bbe64574997008a53ffc325ec48e5 100644 (file)
@@ -22,7 +22,7 @@ spu.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
   $(RTL_H) $(REGS_H) hard-reg-set.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) $(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 \
   $(srcdir)/config/spu/spu-protos.h \
   $(srcdir)/config/spu/spu-builtins.def 
index a23e193ee3aa4f05d7065f822607cb5ad1344478..7ca4eb68be4dd464854418c8ad63646560d0cab3 100644 (file)
@@ -37,7 +37,7 @@
 #include "tm-constrs.h"
 #include "target.h"
 #include "target-def.h"
-#include "integrate.h"
+#include "function.h"
 #include "dwarf2.h"
 #include "timevar.h"
 #include "gimple.h"
index 2b18b4f6622ac12784acaaa867c3c90ecea87b8a..ce28d9e822104b1bcdf2ddfe09dae95c40543a27 100644 (file)
@@ -38,7 +38,7 @@
 #include "tm-constrs.h"
 #include "target.h"
 #include "target-def.h"
-#include "integrate.h"
+#include "function.h"
 #include "dwarf2.h"
 #include "timevar.h"
 #include "gimple.h"
index e2a72b0b3d5c705fef3a85f495a15250e6e86c1f..186327da7ac94c07be2f7ab347be9f223a1d4f81 100644 (file)
@@ -37,7 +37,6 @@
 #include "function.h"
 #include "diagnostic-core.h"
 #include "ggc.h"
-#include "integrate.h"
 #include "tm_p.h"
 #include "target.h"
 #include "target-def.h"
index 9f4e97932eda5511565b19e2d3f06476ac2a7e17..c36ed74d6e62b3a6a1f69267e48c456408578179 100644 (file)
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -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;
 \f
-/* Nonzero if X has the form (PLUS frame-pointer integer).  We check for
-   virtual regs here because the simplify_*_operation routines are called
-   by integrate.c, which is called before virtual register instantiation.  */
+/* Nonzero if X has the form (PLUS frame-pointer integer).  */
 
 static bool
 fixed_base_plus_p (rtx x)
@@ -636,9 +634,6 @@ fixed_base_plus_p (rtx x)
        return true;
       if (x == arg_pointer_rtx && fixed_regs[ARG_POINTER_REGNUM])
        return true;
-      if (REGNO (x) >= FIRST_VIRTUAL_REGISTER
-         && REGNO (x) <= LAST_VIRTUAL_REGISTER)
-       return true;
       return false;
 
     case PLUS:
index 15cbff0a45c933c56876c58cea095d91a36819dc..b233d30ce460715772f0f1586d663728d6fd57f7 100644 (file)
@@ -16409,6 +16409,135 @@ gen_type_die_for_member (tree type, tree member, dw_die_ref context_die)
       pop_decl_scope ();
     }
 }
+\f
+/* 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));
+       }
+    }
+}
+\f
+/* 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
    may later generate inlined and/or out-of-line instances of.  */
index 158ca20745a89be38f52565c449ce01222fc6822..aae8aa0e09126719dab67367f029d0d55302f988 100644 (file)
@@ -123,7 +123,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "libfuncs.h"
 #include "insn-config.h"
 #include "except.h"
-#include "integrate.h"
 #include "hard-reg-set.h"
 #include "basic-block.h"
 #include "output.h"
index a64138738975b9158fced670ee68fd8361ef9b3d..96056b4e8624614c4a75b956496cecdcc258e10e 100644 (file)
@@ -1865,9 +1865,9 @@ extract_fixed_bit_field (enum machine_mode tmode, rtx op0,
          /* If the field does not already start at the lsb,
             shift it so it does.  */
          /* 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);
-         if (tmode != mode) subtarget = 0;
+         if (tmode != mode)
+           subtarget = 0;
          op0 = expand_shift (RSHIFT_EXPR, mode, op0, bitpos, subtarget, 1);
        }
       /* Convert the value to the desired mode.  */
index 87edf7abbcd893ac5ce97f666793c671acded03a..274d42191cb43b412883172f9d393bdc8925d1df 100644 (file)
@@ -54,7 +54,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "hashtab.h"
 #include "ggc.h"
 #include "tm_p.h"
-#include "integrate.h"
 #include "langhooks.h"
 #include "target.h"
 #include "common/common-target.h"
@@ -1224,6 +1223,133 @@ init_temp_slots (void)
     htab_empty (temp_slot_address_table);
 }
 \f
+/* 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;
+}
+\f
 /* These routines are responsible for converting virtual register references
    to the actual hard register references once RTL generation is complete.
 
index 34efb3157abe1c349f462c6b6f2deef0a26a4b5b..c8357bf5ee0fa6c159896fc4e076f609200da34c 100644 (file)
@@ -264,8 +264,11 @@ struct GTY(()) rtl_data {
      the hard register containing the result.  */
   rtx return_rtx;
 
-  /* Opaque pointer used by get_hard_reg_initial_val and
-     has_hard_reg_initial_val (see integrate.[hc]).  */
+  /* Vector of initial-value pairs.  Each pair consists of a pseudo
+     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;
 
   /* 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.  */
 extern GTY(()) VEC(tree,gc) *types_used_by_cur_var_decl;
 
-
 /* cfun shouldn't be set directly; use one of these functions instead.  */
 extern void set_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);
 #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 */
 extern bool optimize_function_for_size_p (struct function *);
 extern bool optimize_function_for_speed_p (struct function *);
index 91025e24d8839a67fed9fe01864bdcd17e08b284..eefe4978d43e1090def03a677639674a95dd04b3 100644 (file)
@@ -809,7 +809,6 @@ from the machine description file `md'.  */\n\n");
   printf ("#include \"tm-constrs.h\"\n");
   printf ("#include \"ggc.h\"\n");
   printf ("#include \"basic-block.h\"\n");
-  printf ("#include \"integrate.h\"\n");
   printf ("#include \"target.h\"\n\n");
   printf ("#define FAIL return (end_sequence (), _val)\n");
   printf ("#define DONE return (_val = get_insns (), end_sequence (), _val)\n\n");
index 99e6e041bb283bcaf91a07bdc7af0966619c9745..52dde0bc97e288a704f6a59a5ec45fcf58eb25ef 100644 (file)
@@ -117,7 +117,7 @@ read_line (FILE *file)
    the null character.  */
 
 const char *
-location_get_source_line(expanded_location xloc)
+location_get_source_line (expanded_location xloc)
 {
   const char *buffer;
   int lines = 1;
diff --git a/gcc/integrate.c b/gcc/integrate.c
deleted file mode 100644 (file)
index 53c5d78..0000000
+++ /dev/null
@@ -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))
-\f
-
-/* 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);
-\f
-
-/* 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;
-}
-\f
-/* 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));
-       }
-    }
-}
-\f
-/* 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);
-    }
-}
-\f
-/* 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"
diff --git a/gcc/integrate.h b/gcc/integrate.h
deleted file mode 100644 (file)
index e32a92a..0000000
+++ /dev/null
@@ -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);
-
index 1809e0da83ac77cdb35966dd85b79b41b5863e71..f01c6e1022b0d9e837d5a9ac11b96e1ae4eceab5 100644 (file)
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -380,7 +380,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "except.h"
 #include "reload.h"
 #include "diagnostic-core.h"
-#include "integrate.h"
+#include "function.h"
 #include "ggc.h"
 #include "ira-int.h"
 #include "dce.h"
@@ -4034,7 +4034,55 @@ move_unallocated_pseudos (void)
       }
 }
 \f
+/* 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));
+    }
+}
+\f
 /* All natural loops.  */
 struct loops ira_loops;
 
@@ -4239,7 +4287,7 @@ ira (FILE *f)
       memset (ira_spilled_reg_stack_slots, 0,
              max_regno * sizeof (struct ira_spilled_reg_stack_slot));
     }
-  allocate_initial_values (reg_equivs);
+  allocate_initial_values ();
 
   /* See comment for find_moveable_pseudos call.  */
   if (ira_conflicts_p)
index 340cc99fa2925691bb77f397eba1306fe62cdb0b..46c19c33a69c50c0b5407116d90864c0f5cf3bee 100644 (file)
@@ -30,7 +30,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple.h"
 #include "rtl.h"
 #include "insn-config.h"
-#include "integrate.h"
 #include "flags.h"
 #include "langhooks.h"
 #include "target.h"
index b6fe18e4501a668d663dab360c703b34360a31b8..54bf029a6037eb4fed3f84e84486df17423570d0 100644 (file)
@@ -54,7 +54,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "params.h"
 #include "reload.h"
 #include "dwarf2asm.h"
-#include "integrate.h"
 #include "debug.h"
 #include "target.h"
 #include "langhooks.h"
index f747099abedd8ba7e8da4f52444c3a4a6878dbf8..29d15ea75aea7c3d3b4f89c3001fce4cc1acca00 100644 (file)
@@ -460,9 +460,5 @@ extern void debug_reload (void);
    reloading to/from a register that is wider than a word.  */
 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.  */
 extern void grow_reg_equivs (void);
index 3ac69cd6374ad12af243b0ed845d630b80d26629..0bdb21872a7e1c96665ef3900c92c253909e6284 100644 (file)
@@ -59,7 +59,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "reload.h"
 #include "ira.h"
 #include "dwarf2asm.h"
-#include "integrate.h"
 #include "debug.h"
 #include "target.h"
 #include "common/common-target.h"
index 0190aa953f51aaaa63466c17b871cdde45482bc0..ccda8c9a7f54a873303b80ec27fa49da3d38b7d0 100644 (file)
@@ -48,7 +48,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "value-prof.h"
 #include "tree-pass.h"
 #include "target.h"
-#include "integrate.h"
 
 #include "rtl.h"       /* FIXME: For asm_str_count.  */
 
@@ -3236,6 +3235,29 @@ inline_forbidden_p (tree fndecl)
   pointer_set_destroy (visited_nodes);
   return forbidden_p;
 }
+\f
+/* 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
    fundamental inline blocking properties.  */
index 94750b0b716e00c8a59e5348be0f5ea25751798b..398d621802ffc52fc84a5c4820dfaf921cfce900 100644 (file)
@@ -5658,10 +5658,6 @@ extern tree decl_attributes (tree *, tree, int);
 
 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 */
 extern void set_min_and_max_values_for_integral_type (tree, int, bool);
 extern void fixup_signed_type (tree);