summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/flow.c23
2 files changed, 24 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d124a7debb6..880a2973f73 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,9 @@
-002-05-28 Toshiyasu Morita <toshiyasu.morita@hsa.hitachi.com>
+2002-05-28 Richard Henderson <rth@redhat.com>
+
+ * flow.c (update_life_info_in_dirty_blocks): Only do a partial
+ update if UPDATE_LIFE_LOCAL.
+
+2002-05-28 Toshiyasu Morita <toshiyasu.morita@hsa.hitachi.com>
* config/sh/sh.c: Include real.h for REAL_VALUE_TYPE.
diff --git a/gcc/flow.c b/gcc/flow.c
index 4f13e813759..a9f94a6201f 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -768,11 +768,24 @@ update_life_info_in_dirty_blocks (extent, prop_flags)
sbitmap_zero (update_life_blocks);
FOR_EACH_BB (bb)
- if (bb->flags & BB_DIRTY)
- {
- SET_BIT (update_life_blocks, bb->index);
- n++;
- }
+ {
+ if (extent == UPDATE_LIFE_LOCAL)
+ {
+ if (bb->flags & BB_DIRTY)
+ {
+ SET_BIT (update_life_blocks, bb->index);
+ n++;
+ }
+ }
+ else
+ {
+ /* ??? Bootstrap with -march=pentium4 fails to terminate
+ with only a partial life update. */
+ SET_BIT (update_life_blocks, bb->index);
+ if (bb->flags & BB_DIRTY)
+ n++;
+ }
+ }
if (n)
retval = update_life_info (update_life_blocks, extent, prop_flags);