aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog40
-rw-r--r--gcc/Makefile.in50
-rw-r--r--gcc/basic-block.h91
-rw-r--r--gcc/caller-save.c2
-rw-r--r--gcc/cfganal.c2
-rw-r--r--gcc/cfgbuild.c1
-rw-r--r--gcc/cfgexpand.c3
-rw-r--r--gcc/cfgloop.h3
-rw-r--r--gcc/cgraph.h6
-rw-r--r--gcc/coretypes.h3
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/Make-lang.in2
-rw-r--r--gcc/cp/semantics.c1
-rw-r--r--gcc/cselib.c1
-rw-r--r--gcc/df.h2
-rw-r--r--gcc/dominance.c1
-rw-r--r--gcc/domwalk.c2
-rw-r--r--gcc/except.h2
-rw-r--r--gcc/gcse.c2
-rw-r--r--gcc/ira-int.h2
-rw-r--r--gcc/ira.c4
-rw-r--r--gcc/lcm.c1
-rw-r--r--gcc/modulo-sched.c1
-rw-r--r--gcc/regset.h125
-rw-r--r--gcc/reload.c2
-rw-r--r--gcc/reload.h8
-rw-r--r--gcc/reload1.c2
-rw-r--r--gcc/sbitmap.c1
-rw-r--r--gcc/sbitmap.h5
-rw-r--r--gcc/sel-sched-ir.h2
-rw-r--r--gcc/stmt.c2
-rw-r--r--gcc/tree-flow.h1
-rw-r--r--gcc/tree-optimize.c2
33 files changed, 244 insertions, 133 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e7f0f71..a6d11a7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,43 @@
+2010-05-22 Steven Bosscher <steven@gcc.gnu.org>
+
+ * coretypes.h (struct simple_bitmap_def, sbitmap, const_sbitmap):
+ New core types.
+ * sbitmap.h (struct sbitmap_def): Do not typedef here.
+ * sbitmap.c: Include sbitmap.h.
+ * basic-block.h: Do not include bitmap.h, sbitmap.h, partition.h,
+ hard-reg-set.h. Split everything related to regsets out from here...
+ * regset.h: ...to here. New file.
+ * df.h: Include regset.h and sbitmap.h.
+ * tree-flow.h: Likewise.
+ * cfgloop.h: Likewise.
+ * except.h: Do not include sbitmap.h. Include hashtab.h.
+ * cgraph.h: Include vec.h and function.h.
+ * reload.h (struct insn_chain): Change types of live_throughout
+ and dead_or_set from regset_head to bitmap_head.
+ (compute_use_by_pseudos): Be defined also if regset.h is not included.
+ * ira-int.h (struct ira_spilled_reg_stack_slot): Change type of
+ spilled_regs from regset_head to bitmap_head to avoid dependency
+ in regset.h.
+ * sel-sched-ir.h: Include regset.h.
+ * reload.c: Include df.h before reload.h.
+ * caller-save.c: Likewise.
+ * reload1.c: Likewise.
+ * ira.c: Likewise.
+ (mark_elimination): Update type of r to bitmap, consistent with
+ DF_LR_IN.
+ * dominance.c: Include bitmap.h.
+ * modulo-sched.c: Include df.h.
+ * cfganal.c: Include bitmap.h and sbitmap.h.
+ * cfgbuild.c: Include sbitmap.h.
+ * lcm.c: Include sbitmap.h.
+ * gcse.c (alloc_gcse_mem): Allocate regset with ALLOC_REG_SET.
+ * domwalk.c: Include sbitmap.h, exclude ggc.h.
+ * cfgexpand.c: Inlcude bitmap.h and sbitmap.h.
+ * cselib.c: Include bitmap.h.
+ * tree-optimize.c: Include regset.h.
+ * stmt.c: Include bitmap.h.
+ * Makefile.in: Update dependencies.
+
2010-05-22 Jan Hubicka <jh@suse.cz>
* cgraph.h (struct varpool_node): Add same_comdat_group.
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 01073f1..e7998f4 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -858,7 +858,7 @@ REVISION_s := "\"\""
endif
# Shorthand variables for dependency lists.
-EXCEPT_H = except.h sbitmap.h vecprim.h vecir.h
+EXCEPT_H = except.h $(HASHTAB_) vecprim.h vecir.h
TOPLEV_H = toplev.h $(INPUT_H) bversion.h
TARGET_H = $(TM_H) target.h insn-modes.h
MACHMODE_H = machmode.h mode-classes.def insn-modes.h
@@ -877,9 +877,8 @@ TREE_H = tree.h all-tree.def tree.def c-common.def $(lang_tree_files) \
$(INPUT_H) statistics.h vec.h treestruct.def $(HASHTAB_H) \
double-int.h alias.h $(SYMTAB_H) options.h vecir.h \
$(REAL_H) $(FIXED_VALUE_H)
-BASIC_BLOCK_H = basic-block.h $(BITMAP_H) sbitmap.h $(PARTITION_H) \
- hard-reg-set.h $(PREDICT_H) vec.h $(FUNCTION_H) \
- cfghooks.h $(OBSTACK_H)
+REGSET_H = regset.h $(BITMAP_H) hard-reg-set.h
+BASIC_BLOCK_H = basic-block.h $(PREDICT_H) vec.h $(FUNCTION_H) cfghooks.h
GIMPLE_H = gimple.h gimple.def gsstruct.def pointer-set.h vec.h \
$(GGC_H) $(BASIC_BLOCK_H) $(TM_H) $(TARGET_H) tree-ssa-operands.h \
tree-ssa-alias.h vecir.h
@@ -894,19 +893,22 @@ FUNCTION_H = function.h $(TREE_H) $(HASHTAB_H) vecprim.h
EXPR_H = expr.h insn-config.h $(FUNCTION_H) $(RTL_H) $(FLAGS_H) $(TREE_H) $(MACHMODE_H) $(EMIT_RTL_H)
OPTABS_H = optabs.h insn-codes.h
REGS_H = regs.h $(MACHMODE_H) $(OBSTACK_H) $(BASIC_BLOCK_H) $(FUNCTION_H)
-RESOURCE_H = resource.h hard-reg-set.h
-SCHED_INT_H = sched-int.h $(INSN_ATTR_H) $(BASIC_BLOCK_H) $(RTL_H) $(DF_H) vecprim.h
+SCHED_INT_H = sched-int.h $(INSN_ATTR_H) $(BASIC_BLOCK_H) $(RTL_H) $(DF_H) \
+ vecprim.h $(REGSET_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)
+ $(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
+CFGLOOP_H = cfgloop.h $(BASIC_BLOCK_H) $(RTL_H) vecprim.h double-int.h \
+ $(BITMAP_H) sbitmap.h
IPA_UTILS_H = ipa-utils.h $(TREE_H) $(CGRAPH_H)
IPA_REFERENCE_H = ipa-reference.h $(BITMAP_H) $(TREE_H)
IPA_TYPE_ESCAPE_H = ipa-type-escape.h $(TREE_H)
-CGRAPH_H = cgraph.h $(TREE_H) $(BASIC_BLOCK_H) cif-code.def ipa-ref.h ipa-ref-inline.h
-DF_H = df.h $(BITMAP_H) $(BASIC_BLOCK_H) alloc-pool.h $(TIMEVAR_H)
+CGRAPH_H = cgraph.h vec.h $(TREE_H) $(BASIC_BLOCK_H) $(FUNCTION_H) \
+ cif-code.def ipa-ref.h ipa-ref-inline.h
+DF_H = df.h $(BITMAP_H) $(REGSET_H) sbitmap.h $(BASIC_BLOCK_H) \
+ alloc-pool.h $(TIMEVAR_H)
RESOURCE_H = resource.h hard-reg-set.h $(DF_H)
DDG_H = ddg.h sbitmap.h $(DF_H)
GCC_H = gcc.h version.h
@@ -933,7 +935,7 @@ CPP_INTERNAL_H = $(srcdir)/../libcpp/internal.h $(CPP_ID_DATA_H)
TREE_PASS_H = tree-pass.h $(TIMEVAR_H)
TREE_DUMP_H = tree-dump.h $(SPLAY_TREE_H) $(TREE_PASS_H)
TREE_FLOW_H = tree-flow.h tree-flow-inline.h tree-ssa-operands.h \
- $(BITMAP_H) $(BASIC_BLOCK_H) $(GIMPLE_H) \
+ $(BITMAP_H) sbitmap.h $(BASIC_BLOCK_H) $(GIMPLE_H) \
$(HASHTAB_H) $(CGRAPH_H) $(IPA_REFERENCE_H) \
tree-ssa-alias.h
TREE_SSA_LIVE_H = tree-ssa-live.h $(PARTITION_H) vecprim.h
@@ -2382,7 +2384,7 @@ tree-phinodes.o : tree-phinodes.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(GGC_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) \
gt-tree-phinodes.h $(RTL_H) $(TOPLEV_H) $(GIMPLE_H)
domwalk.o : domwalk.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(BASIC_BLOCK_H) domwalk.h $(GGC_H)
+ $(BASIC_BLOCK_H) domwalk.h sbitmap.h
tree-ssa-live.o : tree-ssa-live.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
$(TREE_SSA_LIVE_H) $(BITMAP_H) $(TOPLEV_H) debug.h $(FLAGS_H) \
@@ -2543,7 +2545,7 @@ tree-optimize.o : tree-optimize.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TREE_DUMP_H) $(TOPLEV_H) $(FUNCTION_H) langhooks.h \
$(FLAGS_H) $(CGRAPH_H) $(PLUGIN_H) \
$(TREE_INLINE_H) tree-mudflap.h $(GGC_H) graph.h $(CGRAPH_H) \
- $(TREE_PASS_H) $(CFGLOOP_H) $(EXCEPT_H)
+ $(TREE_PASS_H) $(CFGLOOP_H) $(EXCEPT_H) $(REGSET_H)
c-gimplify.o : c-gimplify.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
$(C_TREE_H) $(C_COMMON_H) $(DIAGNOSTIC_H) $(GIMPLE_H) \
@@ -2824,14 +2826,14 @@ stmt.o : stmt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) $(FUNCTION_H) insn-config.h hard-reg-set.h $(EXPR_H) \
libfuncs.h $(EXCEPT_H) $(RECOG_H) $(TOPLEV_H) output.h $(GGC_H) $(TM_P_H) \
langhooks.h $(PREDICT_H) $(OPTABS_H) $(TARGET_H) $(GIMPLE_H) $(MACHMODE_H) \
- $(REGS_H) alloc-pool.h $(PRETTY_PRINT_H)
+ $(REGS_H) alloc-pool.h $(PRETTY_PRINT_H) $(BITMAP_H)
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) $(HASHTAB_H) intl.h $(GGC_H) \
gt-except.h $(CGRAPH_H) $(INTEGRATE_H) $(DIAGNOSTIC_H) $(DWARF2_H) \
$(TARGET_H) $(TM_P_H) $(TREE_PASS_H) $(TIMEVAR_H) $(TREE_FLOW_H) \
- tree-pretty-print.h
+ tree-pretty-print.h sbitmap.h
expr.o : expr.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) $(FUNCTION_H) $(REGS_H) $(EXPR_H) $(OPTABS_H) \
libfuncs.h $(INSN_ATTR_H) insn-config.h $(RECOG_H) output.h \
@@ -2994,7 +2996,7 @@ cselib.o : cselib.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(RECOG_H) \
$(EMIT_RTL_H) $(TOPLEV_H) output.h $(FUNCTION_H) $(TREE_PASS_H) \
cselib.h gt-cselib.h $(GGC_H) $(TM_P_H) $(PARAMS_H) alloc-pool.h \
- $(HASHTAB_H) $(TARGET_H)
+ $(HASHTAB_H) $(TARGET_H) $(BITMAP_H)
cse.o : cse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) \
hard-reg-set.h $(FLAGS_H) insn-config.h $(RECOG_H) $(EXPR_H) $(TOPLEV_H) \
output.h $(FUNCTION_H) $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) $(TIMEVAR_H) \
@@ -3006,7 +3008,8 @@ dce.o : dce.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
dse.o : dse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(TM_P_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(RECOG_H) $(EXPR_H) $(DF_H) cselib.h $(DBGCNT_H) $(TIMEVAR_H) \
- $(TREE_PASS_H) alloc-pool.h $(ALIAS_H) dse.h $(OPTABS_H) $(TARGET_H)
+ $(TREE_PASS_H) alloc-pool.h $(ALIAS_H) dse.h $(OPTABS_H) $(TARGET_H) \
+ $(BITMAP_H)
fwprop.o : fwprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TOPLEV_H) insn-config.h $(RECOG_H) $(FLAGS_H) $(OBSTACK_H) $(BASIC_BLOCK_H) \
output.h $(DF_H) alloc-pool.h $(TIMEVAR_H) $(TREE_PASS_H) $(TARGET_H) \
@@ -3023,7 +3026,8 @@ gcse.o : gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(GGC_H) \
$(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \
$(TM_P_H) $(PARAMS_H) cselib.h $(EXCEPT_H) gt-gcse.h $(TREE_H) $(TIMEVAR_H) \
- intl.h $(OBSTACK_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H) $(TARGET_H)
+ intl.h $(OBSTACK_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H) $(TARGET_H) \
+ $(DF_H)
store-motion.o : store-motion.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(GGC_H) \
$(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \
@@ -3034,7 +3038,7 @@ resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h $(SYSTEM_H) \
$(FUNCTION_H) $(TOPLEV_H) $(INSN_ATTR_H) $(EXCEPT_H) $(PARAMS_H) $(TM_P_H)
lcm.o : lcm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) \
hard-reg-set.h $(FLAGS_H) insn-config.h $(INSN_ATTR_H) $(RECOG_H) \
- $(BASIC_BLOCK_H) $(TM_P_H) $(FUNCTION_H) output.h
+ $(BASIC_BLOCK_H) $(TM_P_H) $(FUNCTION_H) output.h sbitmap.h
mode-switching.o : mode-switching.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(INSN_ATTR_H) $(RECOG_H) $(BASIC_BLOCK_H) $(TM_P_H) $(FUNCTION_H) \
@@ -3131,7 +3135,7 @@ cfgexpand.o : cfgexpand.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TREE_DUMP_H) $(EXCEPT_H) langhooks.h $(TREE_PASS_H) $(RTL_H) \
$(DIAGNOSTIC_H) $(TOPLEV_H) $(BASIC_BLOCK_H) $(FLAGS_H) debug.h $(PARAMS_H) \
value-prof.h $(TREE_INLINE_H) $(TARGET_H) $(SSAEXPAND_H) \
- tree-pretty-print.h gimple-pretty-print.h
+ tree-pretty-print.h gimple-pretty-print.h $(BITMAP_H) sbitmap.h
cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \
output.h $(TOPLEV_H) $(FUNCTION_H) $(EXCEPT_H) $(TM_P_H) $(INSN_ATTR_H) \
@@ -3140,10 +3144,10 @@ cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_PASS_H) $(DF_H) $(GGC_H)
cfganal.o : cfganal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(BASIC_BLOCK_H) hard-reg-set.h insn-config.h $(RECOG_H) $(TM_P_H) \
- $(TIMEVAR_H) $(OBSTACK_H) $(TOPLEV_H) vecprim.h
+ $(TIMEVAR_H) $(OBSTACK_H) $(TOPLEV_H) vecprim.h sbitmap.h $(BITMAP_H)
cfgbuild.o : cfgbuild.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FLAGS_H) $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h $(TOPLEV_H) \
- $(FUNCTION_H) $(EXCEPT_H) $(TIMEVAR_H) $(TREE_H) $(EXPR_H)
+ $(FUNCTION_H) $(EXCEPT_H) $(TIMEVAR_H) $(TREE_H) $(EXPR_H) sbitmap.h
cfgcleanup.o : cfgcleanup.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(TIMEVAR_H) hard-reg-set.h output.h $(FLAGS_H) $(RECOG_H) \
$(TOPLEV_H) insn-config.h cselib.h $(TARGET_H) $(TM_P_H) $(PARAMS_H) \
@@ -3181,7 +3185,7 @@ loop-unroll.o: loop-unroll.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_H) \
$(OBSTACK_H)
dominance.o : dominance.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
hard-reg-set.h $(BASIC_BLOCK_H) et-forest.h $(OBSTACK_H) $(TOPLEV_H) \
- $(TIMEVAR_H) graphds.h vecprim.h pointer-set.h
+ $(TIMEVAR_H) graphds.h vecprim.h pointer-set.h $(BITMAP_H)
et-forest.o : et-forest.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
et-forest.h alloc-pool.h $(BASIC_BLOCK_H)
combine.o : combine.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index 4bd33bd..c5b8799 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -1,4 +1,4 @@
-/* Define control and data flow tables, and regsets.
+/* Define control flow data structures for the CFG.
Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
@@ -21,95 +21,10 @@ along with GCC; see the file COPYING3. If not see
#ifndef GCC_BASIC_BLOCK_H
#define GCC_BASIC_BLOCK_H
-#include "bitmap.h"
-#include "sbitmap.h"
-#include "partition.h"
-#include "hard-reg-set.h"
#include "predict.h"
#include "vec.h"
#include "function.h"
-/* Head of register set linked list. */
-typedef bitmap_head regset_head;
-
-/* A pointer to a regset_head. */
-typedef bitmap regset;
-
-/* Allocate a register set with oballoc. */
-#define ALLOC_REG_SET(OBSTACK) BITMAP_ALLOC (OBSTACK)
-
-/* Do any cleanup needed on a regset when it is no longer used. */
-#define FREE_REG_SET(REGSET) BITMAP_FREE (REGSET)
-
-/* Initialize a new regset. */
-#define INIT_REG_SET(HEAD) bitmap_initialize (HEAD, &reg_obstack)
-
-/* Clear a register set by freeing up the linked list. */
-#define CLEAR_REG_SET(HEAD) bitmap_clear (HEAD)
-
-/* Copy a register set to another register set. */
-#define COPY_REG_SET(TO, FROM) bitmap_copy (TO, FROM)
-
-/* Compare two register sets. */
-#define REG_SET_EQUAL_P(A, B) bitmap_equal_p (A, B)
-
-/* `and' a register set with a second register set. */
-#define AND_REG_SET(TO, FROM) bitmap_and_into (TO, FROM)
-
-/* `and' the complement of a register set with a register set. */
-#define AND_COMPL_REG_SET(TO, FROM) bitmap_and_compl_into (TO, FROM)
-
-/* Inclusive or a register set with a second register set. */
-#define IOR_REG_SET(TO, FROM) bitmap_ior_into (TO, FROM)
-
-/* Exclusive or a register set with a second register set. */
-#define XOR_REG_SET(TO, FROM) bitmap_xor_into (TO, FROM)
-
-/* Or into TO the register set FROM1 `and'ed with the complement of FROM2. */
-#define IOR_AND_COMPL_REG_SET(TO, FROM1, FROM2) \
- bitmap_ior_and_compl_into (TO, FROM1, FROM2)
-
-/* Clear a single register in a register set. */
-#define CLEAR_REGNO_REG_SET(HEAD, REG) bitmap_clear_bit (HEAD, REG)
-
-/* Set a single register in a register set. */
-#define SET_REGNO_REG_SET(HEAD, REG) bitmap_set_bit (HEAD, REG)
-
-/* Return true if a register is set in a register set. */
-#define REGNO_REG_SET_P(TO, REG) bitmap_bit_p (TO, REG)
-
-/* Copy the hard registers in a register set to the hard register set. */
-extern void reg_set_to_hard_reg_set (HARD_REG_SET *, const_bitmap);
-#define REG_SET_TO_HARD_REG_SET(TO, FROM) \
-do { \
- CLEAR_HARD_REG_SET (TO); \
- reg_set_to_hard_reg_set (&TO, FROM); \
-} while (0)
-
-typedef bitmap_iterator reg_set_iterator;
-
-/* Loop over all registers in REGSET, starting with MIN, setting REGNUM to the
- register number and executing CODE for all registers that are set. */
-#define EXECUTE_IF_SET_IN_REG_SET(REGSET, MIN, REGNUM, RSI) \
- EXECUTE_IF_SET_IN_BITMAP (REGSET, MIN, REGNUM, RSI)
-
-/* Loop over all registers in REGSET1 and REGSET2, starting with MIN, setting
- REGNUM to the register number and executing CODE for all registers that are
- set in the first regset and not set in the second. */
-#define EXECUTE_IF_AND_COMPL_IN_REG_SET(REGSET1, REGSET2, MIN, REGNUM, RSI) \
- EXECUTE_IF_AND_COMPL_IN_BITMAP (REGSET1, REGSET2, MIN, REGNUM, RSI)
-
-/* Loop over all registers in REGSET1 and REGSET2, starting with MIN, setting
- REGNUM to the register number and executing CODE for all registers that are
- set in both regsets. */
-#define EXECUTE_IF_AND_IN_REG_SET(REGSET1, REGSET2, MIN, REGNUM, RSI) \
- EXECUTE_IF_AND_IN_BITMAP (REGSET1, REGSET2, MIN, REGNUM, RSI) \
-
-/* Same information as REGS_INVALIDATED_BY_CALL but in regset form to be used
- in dataflow more conveniently. */
-
-extern regset regs_invalidated_by_call_regset;
-
/* Type we use to hold basic block counters. Should be at least
64bit. Although a counter cannot be negative, we use a signed
type, because erroneous negative counts can be generated when the
@@ -482,8 +397,6 @@ struct GTY(()) control_flow_graph {
#define FOR_ALL_BB_FN(BB, FN) \
for (BB = ENTRY_BLOCK_PTR_FOR_FUNCTION (FN); BB; BB = BB->next_bb)
-extern bitmap_obstack reg_obstack;
-
/* Stuff for recording basic block info. */
@@ -857,8 +770,6 @@ extern bool predictable_edge_p (edge);
extern void init_flow (struct function *);
extern void debug_bb (basic_block);
extern basic_block debug_bb_n (int);
-extern void dump_regset (regset, FILE *);
-extern void debug_regset (regset);
extern void expunge_block (basic_block);
extern void link_block (basic_block, basic_block);
extern void unlink_block (basic_block);
diff --git a/gcc/caller-save.c b/gcc/caller-save.c
index 7a00dbd..6bcfd4b 100644
--- a/gcc/caller-save.c
+++ b/gcc/caller-save.c
@@ -30,6 +30,7 @@ along with GCC; see the file COPYING3. If not see
#include "hard-reg-set.h"
#include "recog.h"
#include "basic-block.h"
+#include "df.h"
#include "reload.h"
#include "function.h"
#include "expr.h"
@@ -37,7 +38,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "addresses.h"
#include "output.h"
-#include "df.h"
#include "ggc.h"
/* True if caller-save has been initialized. */
diff --git a/gcc/cfganal.c b/gcc/cfganal.c
index 22a0503..e0c6443 100644
--- a/gcc/cfganal.c
+++ b/gcc/cfganal.c
@@ -34,6 +34,8 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "vec.h"
#include "vecprim.h"
+#include "bitmap.h"
+#include "sbitmap.h"
#include "timevar.h"
/* Store the data structures necessary for depth-first search. */
diff --git a/gcc/cfgbuild.c b/gcc/cfgbuild.c
index b063f89..79b6183 100644
--- a/gcc/cfgbuild.c
+++ b/gcc/cfgbuild.c
@@ -36,6 +36,7 @@ along with GCC; see the file COPYING3. If not see
#include "expr.h"
#include "toplev.h"
#include "timevar.h"
+#include "sbitmap.h"
static void make_edges (basic_block, basic_block, int);
static void make_label_edge (sbitmap, basic_block, rtx, int);
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 1d3ec84..3a36ee1 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -45,7 +45,8 @@ along with GCC; see the file COPYING3. If not see
#include "value-prof.h"
#include "target.h"
#include "ssaexpand.h"
-
+#include "bitmap.h"
+#include "sbitmap.h"
/* This variable holds information helping the rewriting of SSA trees
into RTL. */
diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h
index 4135ed7..96911c6 100644
--- a/gcc/cfgloop.h
+++ b/gcc/cfgloop.h
@@ -27,6 +27,9 @@ along with GCC; see the file COPYING3. If not see
#include "vecprim.h"
#include "double-int.h"
+#include "bitmap.h"
+#include "sbitmap.h"
+
/* Structure to hold decision about unrolling/peeling. */
enum lpt_dec
{
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index a9a2962..f352cc6 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -21,9 +21,12 @@ along with GCC; see the file COPYING3. If not see
#ifndef GCC_CGRAPH_H
#define GCC_CGRAPH_H
+
+#include "vec.h"
#include "tree.h"
#include "basic-block.h"
-#include "ipa-ref.h"
+#include "function.h"
+#include "ipa-ref.h" /* FIXME: inappropriate dependency of cgraph on IPA. */
enum availability
{
@@ -914,6 +917,7 @@ varpool_all_refs_explicit_p (struct varpool_node *vnode)
/* Constant pool accessor function. */
htab_t constant_pool_htab (void);
+/* FIXME: inappropriate dependency of cgraph on IPA. */
#include "ipa-ref-inline.h"
#endif /* GCC_CGRAPH_H */
diff --git a/gcc/coretypes.h b/gcc/coretypes.h
index 0b8261f..a7bc8db 100644
--- a/gcc/coretypes.h
+++ b/gcc/coretypes.h
@@ -46,6 +46,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
struct bitmap_head_def;
typedef struct bitmap_head_def *bitmap;
typedef const struct bitmap_head_def *const_bitmap;
+struct simple_bitmap_def;
+typedef struct simple_bitmap_def *sbitmap;
+typedef const struct simple_bitmap_def *const_sbitmap;
struct rtx_def;
typedef struct rtx_def *rtx;
typedef const struct rtx_def *const_rtx;
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 47f5308..7acd413 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2010-05-22 Steven Bosscher <steven@gcc.gnu.org>
+
+ * semantics.c: Include bitmap.h.
+ * Make-lang.in: Update dependencies.
+
2010-05-22 Jan Hubicka <jh@suse.cz>
* decl2.c (maybe_emit_vtables): Produce same comdat group when outputting
diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in
index e0553a0..c4f553e 100644
--- a/gcc/cp/Make-lang.in
+++ b/gcc/cp/Make-lang.in
@@ -303,7 +303,7 @@ cp/repo.o: cp/repo.c $(CXX_TREE_H) $(TM_H) toplev.h $(DIAGNOSTIC_H) \
cp/semantics.o: cp/semantics.c $(CXX_TREE_H) $(TM_H) except.h toplev.h \
$(FLAGS_H) debug.h output.h $(RTL_H) $(TIMEVAR_H) $(EXPR_H) \
$(TREE_INLINE_H) $(CGRAPH_H) $(TARGET_H) $(C_COMMON_H) $(GIMPLE_H) \
- gt-cp-semantics.h
+ bitmap.h gt-cp-semantics.h
cp/dump.o: cp/dump.c $(CXX_TREE_H) $(TM_H) $(TREE_DUMP_H)
cp/optimize.o: cp/optimize.c $(CXX_TREE_H) $(TM_H) rtl.h $(INTEGRATE_H) \
insn-config.h input.h $(PARAMS_H) debug.h $(TREE_INLINE_H) $(GIMPLE_H) \
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 173ef96..b97a4c3 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -47,6 +47,7 @@ along with GCC; see the file COPYING3. If not see
#include "vec.h"
#include "target.h"
#include "gimple.h"
+#include "bitmap.h"
/* There routines provide a modular interface to perform many parsing
operations. They may therefore be used during actual parsing, or
diff --git a/gcc/cselib.c b/gcc/cselib.c
index af2bb0e..5e819cd 100644
--- a/gcc/cselib.c
+++ b/gcc/cselib.c
@@ -42,6 +42,7 @@ along with GCC; see the file COPYING3. If not see
#include "params.h"
#include "alloc-pool.h"
#include "target.h"
+#include "bitmap.h"
static bool cselib_record_memory;
static bool cselib_preserve_constants;
diff --git a/gcc/df.h b/gcc/df.h
index c73f00f..0632b1d 100644
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -27,6 +27,8 @@ along with GCC; see the file COPYING3. If not see
#define GCC_DF_H
#include "bitmap.h"
+#include "regset.h"
+#include "sbitmap.h"
#include "basic-block.h"
#include "alloc-pool.h"
#include "timevar.h"
diff --git a/gcc/dominance.c b/gcc/dominance.c
index fde79d7..f7db0f1 100644
--- a/gcc/dominance.c
+++ b/gcc/dominance.c
@@ -47,6 +47,7 @@
#include "vecprim.h"
#include "pointer-set.h"
#include "graphds.h"
+#include "bitmap.h"
/* We name our nodes with integers, beginning with 1. Zero is reserved for
'undefined' or 'end of list'. The name of each node is given by the dfs
diff --git a/gcc/domwalk.c b/gcc/domwalk.c
index 4f0e919..89d2e46 100644
--- a/gcc/domwalk.c
+++ b/gcc/domwalk.c
@@ -25,7 +25,7 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "basic-block.h"
#include "domwalk.h"
-#include "ggc.h"
+#include "sbitmap.h"
/* This file implements a generic walker for dominator trees.
diff --git a/gcc/except.h b/gcc/except.h
index de4fbf7..ef511c9 100644
--- a/gcc/except.h
+++ b/gcc/except.h
@@ -19,7 +19,7 @@ You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
-#include "sbitmap.h"
+#include "hashtab.h"
#include "vecprim.h"
#include "vecir.h"
diff --git a/gcc/gcse.c b/gcc/gcse.c
index 4e2fe86..10f015f 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -624,7 +624,7 @@ static void
alloc_gcse_mem (void)
{
/* Allocate vars to track sets of regs. */
- reg_set_bitmap = BITMAP_ALLOC (NULL);
+ reg_set_bitmap = ALLOC_REG_SET (NULL);
/* Allocate array to keep a list of insns which modify memory in each
basic block. */
diff --git a/gcc/ira-int.h b/gcc/ira-int.h
index 6ee7393..e56e051 100644
--- a/gcc/ira-int.h
+++ b/gcc/ira-int.h
@@ -542,7 +542,7 @@ extern int ira_copies_num;
struct ira_spilled_reg_stack_slot
{
/* pseudo-registers assigned to the stack slot. */
- regset_head spilled_regs;
+ bitmap_head spilled_regs;
/* RTL representation of the stack slot. */
rtx mem;
/* Size of the stack slot. */
diff --git a/gcc/ira.c b/gcc/ira.c
index abeb9da..574fe07 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -310,6 +310,7 @@ along with GCC; see the file COPYING3. If not see
#include "bitmap.h"
#include "hard-reg-set.h"
#include "basic-block.h"
+#include "df.h"
#include "expr.h"
#include "recog.h"
#include "params.h"
@@ -320,7 +321,6 @@ along with GCC; see the file COPYING3. If not see
#include "reload.h"
#include "toplev.h"
#include "integrate.h"
-#include "df.h"
#include "ggc.h"
#include "ira-int.h"
@@ -1899,7 +1899,7 @@ mark_elimination (int from, int to)
FOR_EACH_BB (bb)
{
/* We don't use LIVE info in IRA. */
- regset r = DF_LR_IN (bb);
+ bitmap r = DF_LR_IN (bb);
if (REGNO_REG_SET_P (r, from))
{
diff --git a/gcc/lcm.c b/gcc/lcm.c
index 62777b0..619d2ab 100644
--- a/gcc/lcm.c
+++ b/gcc/lcm.c
@@ -63,6 +63,7 @@ along with GCC; see the file COPYING3. If not see
#include "output.h"
#include "tm_p.h"
#include "function.h"
+#include "sbitmap.h"
/* We want target macros for the mode switching code to be able to refer
to instruction attribute values. */
diff --git a/gcc/modulo-sched.c b/gcc/modulo-sched.c
index cc9f788..ebf7649 100644
--- a/gcc/modulo-sched.c
+++ b/gcc/modulo-sched.c
@@ -48,6 +48,7 @@ along with GCC; see the file COPYING3. If not see
#include "timevar.h"
#include "tree-pass.h"
#include "dbgcnt.h"
+#include "df.h"
#ifdef INSN_SCHEDULING
diff --git a/gcc/regset.h b/gcc/regset.h
new file mode 100644
index 0000000..75082a0
--- /dev/null
+++ b/gcc/regset.h
@@ -0,0 +1,125 @@
+/* Define regsets.
+ Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2006, 2007, 2008, 2009, 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/>. */
+
+#ifndef GCC_REGSET_H
+#define GCC_REGSET_H
+
+/* TODO: regset is just a bitmap in its implementation. The compiler does
+ not consistently use one or the other, i.e. sometimes variables are
+ declared as bitmap but they are actually regsets and regset accessors
+ are used, and vice versa, or mixed (see e.g. spilled_regs in IRA).
+
+ This should be cleaned up, either by just dropping the regset type, or
+ by changing all bitmaps that are really regsets to the regset type. For
+ the latter option, a good start would be to change everything allocated
+ on the reg_obstack to regset. */
+
+#include "bitmap.h" /* For bitmap_iterator. */
+#include "hard-reg-set.h"
+
+/* Head of register set linked list. */
+typedef bitmap_head regset_head;
+
+/* A pointer to a regset_head. */
+typedef bitmap regset;
+
+/* Allocate a register set with oballoc. */
+#define ALLOC_REG_SET(OBSTACK) BITMAP_ALLOC (OBSTACK)
+
+/* Do any cleanup needed on a regset when it is no longer used. */
+#define FREE_REG_SET(REGSET) BITMAP_FREE (REGSET)
+
+/* Initialize a new regset. */
+#define INIT_REG_SET(HEAD) bitmap_initialize (HEAD, &reg_obstack)
+
+/* Clear a register set by freeing up the linked list. */
+#define CLEAR_REG_SET(HEAD) bitmap_clear (HEAD)
+
+/* Copy a register set to another register set. */
+#define COPY_REG_SET(TO, FROM) bitmap_copy (TO, FROM)
+
+/* Compare two register sets. */
+#define REG_SET_EQUAL_P(A, B) bitmap_equal_p (A, B)
+
+/* `and' a register set with a second register set. */
+#define AND_REG_SET(TO, FROM) bitmap_and_into (TO, FROM)
+
+/* `and' the complement of a register set with a register set. */
+#define AND_COMPL_REG_SET(TO, FROM) bitmap_and_compl_into (TO, FROM)
+
+/* Inclusive or a register set with a second register set. */
+#define IOR_REG_SET(TO, FROM) bitmap_ior_into (TO, FROM)
+
+/* Exclusive or a register set with a second register set. */
+#define XOR_REG_SET(TO, FROM) bitmap_xor_into (TO, FROM)
+
+/* Or into TO the register set FROM1 `and'ed with the complement of FROM2. */
+#define IOR_AND_COMPL_REG_SET(TO, FROM1, FROM2) \
+ bitmap_ior_and_compl_into (TO, FROM1, FROM2)
+
+/* Clear a single register in a register set. */
+#define CLEAR_REGNO_REG_SET(HEAD, REG) bitmap_clear_bit (HEAD, REG)
+
+/* Set a single register in a register set. */
+#define SET_REGNO_REG_SET(HEAD, REG) bitmap_set_bit (HEAD, REG)
+
+/* Return true if a register is set in a register set. */
+#define REGNO_REG_SET_P(TO, REG) bitmap_bit_p (TO, REG)
+
+/* Copy the hard registers in a register set to the hard register set. */
+extern void reg_set_to_hard_reg_set (HARD_REG_SET *, const_bitmap);
+#define REG_SET_TO_HARD_REG_SET(TO, FROM) \
+do { \
+ CLEAR_HARD_REG_SET (TO); \
+ reg_set_to_hard_reg_set (&TO, FROM); \
+} while (0)
+
+typedef bitmap_iterator reg_set_iterator;
+
+/* Loop over all registers in REGSET, starting with MIN, setting REGNUM to the
+ register number and executing CODE for all registers that are set. */
+#define EXECUTE_IF_SET_IN_REG_SET(REGSET, MIN, REGNUM, RSI) \
+ EXECUTE_IF_SET_IN_BITMAP (REGSET, MIN, REGNUM, RSI)
+
+/* Loop over all registers in REGSET1 and REGSET2, starting with MIN, setting
+ REGNUM to the register number and executing CODE for all registers that are
+ set in the first regset and not set in the second. */
+#define EXECUTE_IF_AND_COMPL_IN_REG_SET(REGSET1, REGSET2, MIN, REGNUM, RSI) \
+ EXECUTE_IF_AND_COMPL_IN_BITMAP (REGSET1, REGSET2, MIN, REGNUM, RSI)
+
+/* Loop over all registers in REGSET1 and REGSET2, starting with MIN, setting
+ REGNUM to the register number and executing CODE for all registers that are
+ set in both regsets. */
+#define EXECUTE_IF_AND_IN_REG_SET(REGSET1, REGSET2, MIN, REGNUM, RSI) \
+ EXECUTE_IF_AND_IN_BITMAP (REGSET1, REGSET2, MIN, REGNUM, RSI) \
+
+/* Same information as REGS_INVALIDATED_BY_CALL but in regset form to be used
+ in dataflow more conveniently. */
+
+extern regset regs_invalidated_by_call_regset;
+
+/* An obstack for regsets. */
+extern bitmap_obstack reg_obstack;
+
+/* In cfg.c */
+extern void dump_regset (regset, FILE *);
+extern void debug_regset (regset);
+
+#endif /* GCC_REGSET_H */
diff --git a/gcc/reload.c b/gcc/reload.c
index 599e335..af520ef1 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -100,6 +100,7 @@ a register with any other reload. */
#include "expr.h"
#include "optabs.h"
#include "recog.h"
+#include "df.h"
#include "reload.h"
#include "regs.h"
#include "addresses.h"
@@ -110,7 +111,6 @@ a register with any other reload. */
#include "toplev.h"
#include "params.h"
#include "target.h"
-#include "df.h"
#include "ira.h"
/* True if X is a constant that can be forced into the constant pool. */
diff --git a/gcc/reload.h b/gcc/reload.h
index 6118bed..a285670 100644
--- a/gcc/reload.h
+++ b/gcc/reload.h
@@ -225,8 +225,8 @@ struct insn_chain
/* Register life information: record all live hard registers, and
all live pseudos that have a hard register. This set also
contains pseudos spilled by IRA. */
- regset_head live_throughout;
- regset_head dead_or_set;
+ bitmap_head live_throughout;
+ bitmap_head dead_or_set;
/* Copies of the global variables computed by find_reloads. */
struct reload *rld;
@@ -242,8 +242,10 @@ extern struct insn_chain *reload_insn_chain;
/* Allocate a new insn_chain structure. */
extern struct insn_chain *new_insn_chain (void);
+#endif
-extern void compute_use_by_pseudos (HARD_REG_SET *, regset);
+#if defined SET_HARD_REG_BIT
+extern void compute_use_by_pseudos (HARD_REG_SET *, bitmap);
#endif
/* Functions from reload.c: */
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 7c89b64..504c9e0 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -37,6 +37,7 @@ along with GCC; see the file COPYING3. If not see
#include "regs.h"
#include "addresses.h"
#include "basic-block.h"
+#include "df.h"
#include "reload.h"
#include "recog.h"
#include "output.h"
@@ -44,7 +45,6 @@ along with GCC; see the file COPYING3. If not see
#include "except.h"
#include "tree.h"
#include "ira.h"
-#include "df.h"
#include "target.h"
#include "emit-rtl.h"
diff --git a/gcc/sbitmap.c b/gcc/sbitmap.c
index f429f70..205b182 100644
--- a/gcc/sbitmap.c
+++ b/gcc/sbitmap.c
@@ -27,6 +27,7 @@ along with GCC; see the file COPYING3. If not see
#include "hard-reg-set.h"
#include "obstack.h"
#include "basic-block.h"
+#include "sbitmap.h"
#if GCC_VERSION >= 3400
#if HOST_BITS_PER_WIDEST_FAST_INT == HOST_BITS_PER_LONG
diff --git a/gcc/sbitmap.h b/gcc/sbitmap.h
index 7e2bc70..dc6d671 100644
--- a/gcc/sbitmap.h
+++ b/gcc/sbitmap.h
@@ -36,14 +36,13 @@ along with GCC; see the file COPYING3. If not see
#error Need to increase size of datatype used for popcount
#endif
-typedef struct simple_bitmap_def
+struct simple_bitmap_def
{
unsigned char *popcount; /* Population count. */
unsigned int n_bits; /* Number of bits. */
unsigned int size; /* Size in elements. */
SBITMAP_ELT_TYPE elms[1]; /* The elements. */
-} *sbitmap;
-typedef const struct simple_bitmap_def *const_sbitmap;
+};
typedef SBITMAP_ELT_TYPE *sbitmap_ptr;
typedef const SBITMAP_ELT_TYPE *const_sbitmap_ptr;
diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h
index 20f0bba..f3025e8 100644
--- a/gcc/sel-sched-ir.h
+++ b/gcc/sel-sched-ir.h
@@ -23,7 +23,7 @@ along with GCC; see the file COPYING3. If not see
/* For state_t. */
#include "insn-attr.h"
-/* For regset_head. */
+#include "regset.h"
#include "basic-block.h"
/* For reg_note. */
#include "rtl.h"
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 2778bef..4b91ab6 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -52,6 +52,8 @@ along with GCC; see the file COPYING3. If not see
#include "regs.h"
#include "alloc-pool.h"
#include "pretty-print.h"
+#include "bitmap.h"
+
/* Functions and data structures for expanding case statements. */
diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h
index 864f3b9..bcbd7fb 100644
--- a/gcc/tree-flow.h
+++ b/gcc/tree-flow.h
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3. If not see
#define _TREE_FLOW_H 1
#include "bitmap.h"
+#include "sbitmap.h"
#include "basic-block.h"
#include "hashtab.h"
#include "gimple.h"
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c
index f71ab4d..76918f1 100644
--- a/gcc/tree-optimize.c
+++ b/gcc/tree-optimize.c
@@ -47,7 +47,7 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h"
#include "except.h"
#include "plugin.h"
-
+#include "regset.h" /* FIXME: For reg_obstack. */
/* Gate: execute, or not, all of the non-trivial optimizations. */