aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2001-07-24 14:39:19 -0700
committerRichard Henderson <rth@gcc.gnu.org>2001-07-24 14:39:19 -0700
commite7139885a924d6ad2316a4526a84dda352ca2373 (patch)
treeb92690f1af6cc2fbea5175c8c32872948c7c9d55 /gcc/combine.c
parentedd60b15d1fe4a845c79e72c297bd81e95506858 (diff)
downloadgcc-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.c23
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)))
{