diff options
author | Richard Henderson <rth@redhat.com> | 2001-07-24 14:39:19 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-07-24 14:39:19 -0700 |
commit | e7139885a924d6ad2316a4526a84dda352ca2373 (patch) | |
tree | b92690f1af6cc2fbea5175c8c32872948c7c9d55 /gcc/combine.c | |
parent | edd60b15d1fe4a845c79e72c297bd81e95506858 (diff) | |
download | gcc-e7139885a924d6ad2316a4526a84dda352ca2373.zip gcc-e7139885a924d6ad2316a4526a84dda352ca2373.tar.gz gcc-e7139885a924d6ad2316a4526a84dda352ca2373.tar.bz2 |
combine.c (distribute_notes): Move set of need_refresh for noop_move_p down to catch all cases.
* combine.c (distribute_notes): Move set of need_refresh
for noop_move_p down to catch all cases.
From-SVN: r44317
Diffstat (limited to 'gcc/combine.c')
-rw-r--r-- | gcc/combine.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index 633d0ac..657a929 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -12335,16 +12335,10 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1) is still a REG_DEAD note, but we have hit the beginning of the block. If the existing life info says the reg was dead, there's nothing left to do. Otherwise, we'll - need to do a global life update after combine. - - Similary we need to update in case insn is an dead set - we are about to remove soon. - */ - if (REG_NOTE_KIND (note) == REG_DEAD - && ((place && noop_move_p (place)) - || (place == 0 - && REGNO_REG_SET_P (bb->global_live_at_start, - REGNO (XEXP (note, 0)))))) + need to do a global life update after combine. */ + if (REG_NOTE_KIND (note) == REG_DEAD && place == 0 + && REGNO_REG_SET_P (bb->global_live_at_start, + REGNO (XEXP (note, 0)))) { SET_BIT (refresh_blocks, this_basic_block); need_refresh = 1; @@ -12361,6 +12355,15 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1) { unsigned int regno = REGNO (XEXP (note, 0)); + /* Similarly, if the instruction on which we want to place + the note is a noop, we'll need do a global live update + after we remove them in delete_noop_moves. */ + if (noop_move_p (place)) + { + SET_BIT (refresh_blocks, this_basic_block); + need_refresh = 1; + } + if (dead_or_set_p (place, XEXP (note, 0)) || reg_bitfield_target_p (XEXP (note, 0), PATTERN (place))) { |