sbitmap.h (sbitmap_ptr, [...]): Move from here...
authorSteven Bosscher <steven@gcc.gnu.org>
Sun, 23 May 2010 00:11:55 +0000 (00:11 +0000)
committerSteven Bosscher <steven@gcc.gnu.org>
Sun, 23 May 2010 00:11:55 +0000 (00:11 +0000)
* sbitmap.h (sbitmap_ptr, const_sbitmap_ptr): Move from here...
* sbitmap.c: ...to here to internalize sbitmap element access.
Do not include tm.h, rtl.h, flags.h, hard-reg-set.h, and obstack.h.
Explain why basic-block.h is included.
* function.h: Include tm.h for CUMULATIVE_ARGS.
* Makefile.in: Update dependencies.

From-SVN: r159749

gcc/ChangeLog
gcc/Makefile.in
gcc/function.h
gcc/sbitmap.c
gcc/sbitmap.h

index a6d11a7..c1baa8e 100644 (file)
@@ -1,3 +1,12 @@
+2010-05-23  Steven Bosscher  <steven@gcc.gnu.org>
+
+       * sbitmap.h (sbitmap_ptr, const_sbitmap_ptr): Move from here...
+       * sbitmap.c: ...to here to internalize sbitmap element access.
+       Do not include tm.h, rtl.h, flags.h, hard-reg-set.h, and obstack.h.
+       Explain why basic-block.h is included.
+       * function.h: Include tm.h for CUMULATIVE_ARGS.
+       * Makefile.in: Update dependencies.
+
 2010-05-22  Steven Bosscher  <steven@gcc.gnu.org>
 
        * coretypes.h (struct simple_bitmap_def, sbitmap, const_sbitmap):
index e7998f4..6899b5f 100644 (file)
@@ -889,7 +889,7 @@ RECOG_H = recog.h
 ALIAS_H = alias.h coretypes.h
 EMIT_RTL_H = emit-rtl.h
 FLAGS_H = flags.h coretypes.h options.h
-FUNCTION_H = function.h $(TREE_H) $(HASHTAB_H) vecprim.h
+FUNCTION_H = function.h $(TREE_H) $(HASHTAB_H) vecprim.h $(TM_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)
@@ -2013,8 +2013,7 @@ c-pragma.o: c-pragma.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
 graph.o: graph.c $(SYSTEM_H) coretypes.h $(TM_H) $(TOPLEV_H) $(FLAGS_H) output.h \
     $(RTL_H) $(FUNCTION_H) hard-reg-set.h $(BASIC_BLOCK_H) graph.h $(OBSTACK_H) \
     $(CONFIG_H)
-sbitmap.o: sbitmap.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
-    $(FLAGS_H) hard-reg-set.h $(BASIC_BLOCK_H) $(OBSTACK_H)
+sbitmap.o: sbitmap.c sbitmap.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(BASIC_BLOCK_H)
 ebitmap.o: ebitmap.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
        $(EBITMAP_H) $(RTL_H) $(FLAGS_H) $(OBSTACK_H)
 sparseset.o: sparseset.c $(SYSTEM_H) sparseset.h $(CONFIG_H)
index d008e85..9063e52 100644 (file)
@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "hashtab.h"
 #include "vecprim.h"
+#include "tm.h"                /* For CUMULATIVE_ARGS.  */
 
 /* Stack of pending (incomplete) sequences saved by `start_sequence'.
    Each element describes one pending sequence.
index 205b182..8ffc6f3 100644 (file)
@@ -21,27 +21,33 @@ along with GCC; see the file COPYING3.  If not see
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
-#include "tm.h"
-#include "rtl.h"
-#include "flags.h"
-#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
-#define do_popcount(x) __builtin_popcountl(x)
-#elif HOST_BITS_PER_WIDEST_FAST_INT == HOST_BITS_PER_LONGLONG
-#define do_popcount(x) __builtin_popcountll(x)
-#else
-#error "internal error: sbitmap.h and hwint.h are inconsistent"
+#ifdef IN_GCC
+/* FIXME: sbitmap is just a data structure, but we define dataflow functions
+   here also.  This is conditional on IN_GCC (see second #ifdef IN_GCC
+   further down).
+   For now, also only conditionally include basic-block.h, but we should
+   find a better place for the dataflow functions.  Perhaps cfganal.c?  */
+#include "basic-block.h"
 #endif
+
+#if GCC_VERSION >= 3400
+#  if HOST_BITS_PER_WIDEST_FAST_INT == HOST_BITS_PER_LONG
+#    define do_popcount(x) __builtin_popcountl(x)
+#  elif HOST_BITS_PER_WIDEST_FAST_INT == HOST_BITS_PER_LONGLONG
+#    define do_popcount(x) __builtin_popcountll(x)
+#  else
+#    error "internal error: sbitmap.h and hwint.h are inconsistent"
+#  endif
 #else
 static unsigned long sbitmap_elt_popcount (SBITMAP_ELT_TYPE);
-#define do_popcount(x) sbitmap_elt_popcount((x))
+#  define do_popcount(x) sbitmap_elt_popcount((x))
 #endif
 
+typedef SBITMAP_ELT_TYPE *sbitmap_ptr;
+typedef const SBITMAP_ELT_TYPE *const_sbitmap_ptr;
+
 /* This macro controls debugging that is as expensive as the
    operations it verifies.  */
 
@@ -739,6 +745,14 @@ sbitmap_a_and_b_or_c (sbitmap dst, const_sbitmap a, const_sbitmap b, const_sbitm
 }
 
 #ifdef IN_GCC
+/* FIXME: depends on basic-block.h, see comment at start of this file.
+
+   Ironically, the comments before the functions below suggest they do
+   dataflow using the "new flow graph structures", but that's the *old*
+   new data structures.  The functions receive basic block numbers and
+   use BASIC_BLOCK(idx) to get the basic block.  They should receive
+   the basic block directly,  *sigh*.  */
+
 /* Set the bitmap DST to the intersection of SRC of successors of
    block number BB, using the new flow graph structures.  */
 
index dc6d671..2e2c624 100644 (file)
@@ -44,9 +44,6 @@ struct simple_bitmap_def
   SBITMAP_ELT_TYPE elms[1];    /* The elements.  */
 };
 
-typedef SBITMAP_ELT_TYPE *sbitmap_ptr;
-typedef const SBITMAP_ELT_TYPE *const_sbitmap_ptr;
-
 /* Return the set size needed for N elements.  */
 #define SBITMAP_SET_SIZE(N) (((N) + SBITMAP_ELT_BITS - 1) / SBITMAP_ELT_BITS)
 #define SBITMAP_SIZE_BYTES(BITMAP) ((BITMAP)->size * sizeof (SBITMAP_ELT_TYPE))