diff options
author | Zack Weinberg <zack@codesourcery.com> | 2004-08-25 07:25:06 +0000 |
---|---|---|
committer | Zack Weinberg <zack@gcc.gnu.org> | 2004-08-25 07:25:06 +0000 |
commit | 51a904c9e6cbce9225c8b584eff328e71afb049b (patch) | |
tree | 8f400171281f1971daae0f4f3bac980e43bf1e0e /gcc | |
parent | 4c5f37d5682d0798751272b132b36dcd77f8ff9c (diff) | |
download | gcc-51a904c9e6cbce9225c8b584eff328e71afb049b.zip gcc-51a904c9e6cbce9225c8b584eff328e71afb049b.tar.gz gcc-51a904c9e6cbce9225c8b584eff328e71afb049b.tar.bz2 |
basic-block.h (BB_SET_PARTITION): Clear old value first.
* basic-block.h (BB_SET_PARTITION): Clear old value first.
* cfg.c (clear_bb_flags): Don't clear partition setting.
From-SVN: r86537
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/basic-block.h | 7 | ||||
-rw-r--r-- | gcc/cfg.c | 3 |
3 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 979fb11..12e36f5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/basic-block.h b/gcc/basic-block.h index 64dda04..19ed577 100644 --- a/gcc/basic-block.h +++ b/gcc/basic-block.h @@ -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)) @@ -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); } /* Check the consistency of profile information. We can't do that |