summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2003-01-31 06:52:48 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2003-01-31 06:52:48 +0000
commite518230225fad2147fc4c1cd6657b465ba97fba7 (patch)
tree87e598f6cf03da7f910adcf911b22a2ac55cf24d
parentb89db9a70f706ceac14aa796dcc2081421249f91 (diff)
downloadppe42-gcc-e518230225fad2147fc4c1cd6657b465ba97fba7.tar.gz
ppe42-gcc-e518230225fad2147fc4c1cd6657b465ba97fba7.zip
* flow.c (update_life_info): Zap life info after cleanup_cfg.
(regno_uninitialized): Use correct live at function entry set. (regno_clobbered_at_setjmp): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62172 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/flow.c14
2 files changed, 20 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ef3fed8e049..4c8920154c7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2003-01-30 Richard Henderson <rth@redhat.com>
+
+ * flow.c (update_life_info): Zap life info after cleanup_cfg.
+ (regno_uninitialized): Use correct live at function entry set.
+ (regno_clobbered_at_setjmp): Likewise.
+
+ * expr.c (store_expr): Promote all MEM intermediates to regs.
+
2003-01-30 Kazu Hirata <kazu@cs.umass.edu>
* config/arm/arm.c: Fix comment typos.
diff --git a/gcc/flow.c b/gcc/flow.c
index 5e51818de0b..24f869153c0 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -693,6 +693,16 @@ update_life_info (blocks, extent, prop_flags)
partial improvement (see MAX_MEM_SET_LIST_LEN usage).
Further improvement may be possible. */
cleanup_cfg (CLEANUP_EXPENSIVE);
+
+ /* Zap the life information from the last round. If we don't
+ do this, we can wind up with registers that no longer appear
+ in the code being marked live at entry, which twiggs bogus
+ warnings from regno_uninitialized. */
+ FOR_EACH_BB (bb)
+ {
+ CLEAR_REG_SET (bb->global_live_at_start);
+ CLEAR_REG_SET (bb->global_live_at_end);
+ }
}
/* If asked, remove notes from the blocks we'll update. */
@@ -2379,7 +2389,7 @@ regno_uninitialized (regno)
|| FUNCTION_ARG_REGNO_P (regno))))
return 0;
- return REGNO_REG_SET_P (ENTRY_BLOCK_PTR->next_bb->global_live_at_start, regno);
+ return REGNO_REG_SET_P (ENTRY_BLOCK_PTR->global_live_at_end, regno);
}
/* 1 if register REGNO was alive at a place where `setjmp' was called
@@ -2394,7 +2404,7 @@ regno_clobbered_at_setjmp (regno)
return 0;
return ((REG_N_SETS (regno) > 1
- || REGNO_REG_SET_P (ENTRY_BLOCK_PTR->next_bb->global_live_at_start, regno))
+ || REGNO_REG_SET_P (ENTRY_BLOCK_PTR->global_live_at_end, regno))
&& REGNO_REG_SET_P (regs_live_at_setjmp, regno));
}
OpenPOWER on IntegriCloud