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
This commit is contained in:
Richard Henderson 2003-01-30 22:52:48 -08:00 committed by Richard Henderson
parent 6bc8279340
commit cdd1f01b22
2 changed files with 20 additions and 2 deletions

View File

@ -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.

View File

@ -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));
}