diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/reorg.c | 7 |
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 351ddd6..2004c7f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-11-30 Hans-Peter Nilsson <hp@axis.com> + + PR rtl-optimization/40086 + * reorg.c (relax_delay_slots): When looking for redundant insn at + the branch target, use next_real_insn, not next_active_insn. + 2009-11-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * doc/install.texi: Update minimum MPC version to 0.8. diff --git a/gcc/reorg.c b/gcc/reorg.c index 4871b0e..b1de4be 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -3506,8 +3506,11 @@ relax_delay_slots (rtx first) } /* If the first insn at TARGET_LABEL is redundant with a previous - insn, redirect the jump to the following insn process again. */ - trial = next_active_insn (target_label); + insn, redirect the jump to the following insn and process again. + We use next_real_insn instead of next_active_insn so we + don't skip USE-markers, or we'll end up with incorrect + liveness info. */ + trial = next_real_insn (target_label); if (trial && GET_CODE (PATTERN (trial)) != SEQUENCE && redundant_insn (trial, insn, 0) && ! can_throw_internal (trial)) |