OSDN Git Service

PR rtl-optimization/40086
authorhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Nov 2009 07:13:21 +0000 (07:13 +0000)
committerhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Nov 2009 07:13:21 +0000 (07:13 +0000)
* reorg.c (relax_delay_slots): When looking for redundant insn at
the branch target, use next_real_insn, not next_active_insn.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154751 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/reorg.c

index 351ddd6..2004c7f 100644 (file)
@@ -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.
index 4871b0e..b1de4be 100644 (file)
@@ -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))