diff options
author | Richard Henderson <rth@redhat.com> | 2003-01-30 22:52:48 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2003-01-30 22:52:48 -0800 |
commit | cdd1f01b226e72952c62b46cabd487e930b1cd8f (patch) | |
tree | 87e598f6cf03da7f910adcf911b22a2ac55cf24d /gcc/flow.c | |
parent | 6bc82793404b62c93b1544135e013db3e65c65cd (diff) | |
download | gcc-cdd1f01b226e72952c62b46cabd487e930b1cd8f.zip gcc-cdd1f01b226e72952c62b46cabd487e930b1cd8f.tar.gz gcc-cdd1f01b226e72952c62b46cabd487e930b1cd8f.tar.bz2 |
flow.c (update_life_info): Zap life info after cleanup_cfg.
* 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.
From-SVN: r62172
Diffstat (limited to 'gcc/flow.c')
-rw-r--r-- | gcc/flow.c | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -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)); } |