* basic-block.h (BB_SET_PARTITION): Clear old value first.
* cfg.c (clear_bb_flags): Don't clear partition setting.
From-SVN: r86537
+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
/* 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))
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