Commit cdd1f01b by Richard Henderson Committed by Richard Henderson

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
parent 6bc82793
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> 2003-01-30 Kazu Hirata <kazu@cs.umass.edu>
* config/arm/arm.c: Fix comment typos. * config/arm/arm.c: Fix comment typos.
......
...@@ -693,6 +693,16 @@ update_life_info (blocks, extent, prop_flags) ...@@ -693,6 +693,16 @@ update_life_info (blocks, extent, prop_flags)
partial improvement (see MAX_MEM_SET_LIST_LEN usage). partial improvement (see MAX_MEM_SET_LIST_LEN usage).
Further improvement may be possible. */ Further improvement may be possible. */
cleanup_cfg (CLEANUP_EXPENSIVE); 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. */ /* If asked, remove notes from the blocks we'll update. */
...@@ -2379,7 +2389,7 @@ regno_uninitialized (regno) ...@@ -2379,7 +2389,7 @@ regno_uninitialized (regno)
|| FUNCTION_ARG_REGNO_P (regno)))) || FUNCTION_ARG_REGNO_P (regno))))
return 0; 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 /* 1 if register REGNO was alive at a place where `setjmp' was called
...@@ -2394,7 +2404,7 @@ regno_clobbered_at_setjmp (regno) ...@@ -2394,7 +2404,7 @@ regno_clobbered_at_setjmp (regno)
return 0; return 0;
return ((REG_N_SETS (regno) > 1 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)); && REGNO_REG_SET_P (regs_live_at_setjmp, regno));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment