]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR rtl-optimization/49007 (ICE in extract_true_false_edges_from_block at tree...
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Tue, 24 May 2011 18:44:35 +0000 (18:44 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Tue, 24 May 2011 18:44:35 +0000 (18:44 +0000)
PR rtl-optimization/49007
Backport from mainline:
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.

From-SVN: r174132

gcc/ChangeLog
gcc/reorg.c

index 207c49423580814945075bb81eafdbc3c5084818..ea6fc584f918eb1f2e0819e90d91418ec97122d1 100644 (file)
@@ -1,3 +1,13 @@
+2011-05-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       PR rtl-optimization/49007
+       Backport from mainline:
+       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.
+
 2011-05-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
        PR rtl-optimization/48932
index 05374cb3ff9b1937504ead34634b4c377d33c597..f32b179d2ffe9b1a9240efed0fb65813b95b3826 100644 (file)
@@ -3502,8 +3502,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))