aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/reorg.c7
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))