re PR rtl-optimization/70596 (-fcompare-debug failure with one extra NOTE_INSN_DELETED)
authorJakub Jelinek <jakub@redhat.com>
Tue, 12 Apr 2016 17:18:31 +0000 (19:18 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 12 Apr 2016 17:18:31 +0000 (19:18 +0200)
PR rtl-optimization/70596
* lra-spills.c (spill_pseudos): Don't delete debug insns, instead
just invalidate LRA data and reset them.  Adjust dump wording.

* gcc.target/i386/pr70596.c: New test.

From-SVN: r234906

gcc/ChangeLog
gcc/lra-spills.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr70596.c [new file with mode: 0644]

index 1e93515..7222254 100644 (file)
@@ -1,3 +1,9 @@
+2016-04-12  Jakub Jelinek  <jakub@redhat.com>
+
+       PR rtl-optimization/70596
+       * lra-spills.c (spill_pseudos): Don't delete debug insns, instead
+       just invalidate LRA data and reset them.  Adjust dump wording.
+
 2016-04-12  Martin Liska  <mliska@suse.cz>
 
        Revert
index 5709ef1..7e5f637 100644 (file)
@@ -528,11 +528,12 @@ spill_pseudos (void)
          if (removed_pseudo_p)
            {
              lra_assert (DEBUG_INSN_P (insn));
-             lra_set_insn_deleted (insn);
+             lra_invalidate_insn_data (insn);
+             INSN_VAR_LOCATION_LOC (insn) = gen_rtx_UNKNOWN_VAR_LOC ();
              if (lra_dump_file != NULL)
                fprintf (lra_dump_file,
-                        "Debug insn #%u is deleted as containing removed pseudo\n",
-                        INSN_UID (insn));
+                        "Debug insn #%u is reset because it referenced "
+                        "removed pseudo\n", INSN_UID (insn));
            }
          bitmap_and_compl_into (df_get_live_in (bb), &spilled_pseudos);
          bitmap_and_compl_into (df_get_live_out (bb), &spilled_pseudos);
index 1c2b5a7..e49f83c 100644 (file)
@@ -1,3 +1,8 @@
+2016-04-12  Jakub Jelinek  <jakub@redhat.com>
+
+       PR rtl-optimization/70596
+       * gcc.target/i386/pr70596.c: New test.
+
 2016-04-12  Nathan Sidwell  <nathan@acm.org>
 
        PR c++/70501
diff --git a/gcc/testsuite/gcc.target/i386/pr70596.c b/gcc/testsuite/gcc.target/i386/pr70596.c
new file mode 100644 (file)
index 0000000..0c73e83
--- /dev/null
@@ -0,0 +1,13 @@
+/* PR rtl-optimization/70596 */
+/* { dg-do compile { target avx512f } } */
+/* { dg-options "-O2 -fno-dce -fschedule-insns -fno-tree-coalesce-vars -fno-tree-dce -fno-tree-fre -fno-tree-pre -fcompare-debug -mavx512f" } */
+
+typedef char V __attribute__((vector_size (64)));
+
+int
+foo (V u, V v)
+{
+  v /= u | 1;
+  v[18] = 1 | v[8];
+  return v[1] + v[6] + v[0] + v[1] + v[18] +  v[2] + v[7];
+}