]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR target/79570 (ICE in sel-sched-ir.c:4534 in pr69956.c)
authorJakub Jelinek <jakub@redhat.com>
Tue, 30 May 2017 08:03:03 +0000 (10:03 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 30 May 2017 08:03:03 +0000 (10:03 +0200)
Backported from mainline
2017-02-21  Jakub Jelinek  <jakub@redhat.com>

PR target/79570
* sel-sched.c (moveup_expr_cached): Don't call sel_bb_head
on temporarily removed DEBUG_INSNs.

* gcc.dg/pr79570.c: New test.

From-SVN: r248649

gcc/ChangeLog
gcc/sel-sched.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr79570.c [new file with mode: 0644]

index 8cc4d3660cae8c33058c75958b7f0e5101b4a0b8..962e7398c53ca34d68167aafd17f8db67ea000c1 100644 (file)
@@ -3,6 +3,10 @@
        Backported from mainline
        2017-02-21  Jakub Jelinek  <jakub@redhat.com>
 
+       PR target/79570
+       * sel-sched.c (moveup_expr_cached): Don't call sel_bb_head
+       on temporarily removed DEBUG_INSNs.
+
        PR target/79494
        * config/i386/i386.c (ix86_expand_split_stack_prologue): Call
        make_reg_eh_region_note_nothrow_nononlocal on call_insn.
index dab06ec10da1069666e814d02f9b1be4b87dcf54..94704cb3585eef5a4a1662ba9e7212a063583f4d 100644 (file)
@@ -2559,6 +2559,7 @@ moveup_expr_cached (expr_t expr, insn_t insn, bool inside_insn_group)
     }
 
   if (DEBUG_INSN_P (EXPR_INSN_RTX (expr))
+      && BLOCK_FOR_INSN (EXPR_INSN_RTX (expr))
       && (sel_bb_head (BLOCK_FOR_INSN (EXPR_INSN_RTX (expr)))
          == EXPR_INSN_RTX (expr)))
     /* Don't use cached information for debug insns that are heads of
index 5344f8f39d6fdddd4c264aa705a4d17e34d56a56..fc6933e070df8a3428235b259aef0d62c0f73d77 100644 (file)
@@ -3,6 +3,9 @@
        Backported from mainline
        2017-02-21  Jakub Jelinek  <jakub@redhat.com>
 
+       PR target/79570
+       * gcc.dg/pr79570.c: New test.
+
        PR c++/79641
        * c-c++-common/pr79641.c: New test.
 
diff --git a/gcc/testsuite/gcc.dg/pr79570.c b/gcc/testsuite/gcc.dg/pr79570.c
new file mode 100644 (file)
index 0000000..c0537fa
--- /dev/null
@@ -0,0 +1,12 @@
+/* PR target/79570 */
+/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O2 -fselective-scheduling2 -fvar-tracking-assignments" } */
+/* { dg-warning "changes selective scheduling" "" { target *-*-* } 0 } */
+
+void
+fn1 (char *b, char *d, int *c, int i)
+{
+  for (; i; i++, d++)
+    if (b[i])
+      *d = c[i];
+}