aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-04-12 19:18:31 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2016-04-12 19:18:31 +0200
commit5901e56ab019387103eceba713d7b936f6d58d04 (patch)
tree29e1e0a1f03ad93238f03f156c29d84db8f37a55
parent0c39f36dc52db39888e02dc095116d20481ad1eb (diff)
downloadgcc-5901e56ab019387103eceba713d7b936f6d58d04.zip
gcc-5901e56ab019387103eceba713d7b936f6d58d04.tar.gz
gcc-5901e56ab019387103eceba713d7b936f6d58d04.tar.bz2
re PR rtl-optimization/70596 (-fcompare-debug failure with one extra NOTE_INSN_DELETED)
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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/lra-spills.c7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr70596.c13
4 files changed, 28 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1e93515..7222254 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/lra-spills.c b/gcc/lra-spills.c
index 5709ef1..7e5f637 100644
--- a/gcc/lra-spills.c
+++ b/gcc/lra-spills.c
@@ -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);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1c2b5a7..e49f83c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..0c73e83
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr70596.c
@@ -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];
+}