basic-block.h (BB_SET_PARTITION): Clear old value first.
authorZack Weinberg <zack@codesourcery.com>
Wed, 25 Aug 2004 07:25:06 +0000 (07:25 +0000)
committerZack Weinberg <zack@gcc.gnu.org>
Wed, 25 Aug 2004 07:25:06 +0000 (07:25 +0000)
* basic-block.h (BB_SET_PARTITION): Clear old value first.
* cfg.c (clear_bb_flags): Don't clear partition setting.

From-SVN: r86537

gcc/ChangeLog
gcc/basic-block.h
gcc/cfg.c

index 979fb11a284d3907f9221a93db3838493bd0615d..12e36f5b370577f6a366918330808afdc2e362ee 100644 (file)
@@ -1,3 +1,8 @@
+2004-08-25  Zack Weinberg  <zack@codesourcery.com>
+
+       * basic-block.h (BB_SET_PARTITION): Clear old value first.
+       * cfg.c (clear_bb_flags): Don't clear partition setting.
+
 2004-08-25  Alan Modra  <amodra@bigpond.net.au>
 
        PR target/17052
index 64dda0404434dce26957217c59792ec0900ca224..19ed577fe553d2fb770947717aba75c206112479 100644 (file)
@@ -318,7 +318,12 @@ typedef struct reorder_block_def
 /* Partitions, to be used when partitioning hot and cold basic blocks into
    separate sections.  */
 #define BB_PARTITION(bb) ((bb)->flags & (BB_HOT_PARTITION|BB_COLD_PARTITION))
-#define BB_SET_PARTITION(bb, part) ((bb)->flags |= (part))
+#define BB_SET_PARTITION(bb, part) do {                                        \
+  basic_block bb_ = (bb);                                              \
+  bb_->flags = ((bb_->flags & ~(BB_HOT_PARTITION|BB_COLD_PARTITION))   \
+               | (part));                                              \
+} while (0)
+
 #define BB_COPY_PARTITION(dstbb, srcbb) \
   BB_SET_PARTITION (dstbb, BB_PARTITION (srcbb))
 
index d195b10cd4ead88ecc1010e36449c793c4b7a3ba..003d09e05ff28a5e5641c969bb74e90e4a12a203 100644 (file)
--- a/gcc/cfg.c
+++ b/gcc/cfg.c
@@ -462,13 +462,14 @@ redirect_edge_pred (edge e, basic_block new_pred)
   e->src = new_pred;
 }
 
+/* Clear all basic block flags, with the exception of partitioning.  */
 void
 clear_bb_flags (void)
 {
   basic_block bb;
 
   FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR, NULL, next_bb)
-    bb->flags = 0;
+    bb->flags = BB_PARTITION (bb);
 }
 \f
 /* Check the consistency of profile information.  We can't do that