aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-03-21 22:04:32 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2016-03-21 22:04:32 +0100
commit11b6a02e916d12fd619e97b5117211ab097394b2 (patch)
tree3b29c079850c227879f3a28af9b7a2bf1dc11a12 /gcc
parentb94078834d4fb41cd0363d3100f0cf1570ecbf82 (diff)
downloadgcc-11b6a02e916d12fd619e97b5117211ab097394b2.zip
gcc-11b6a02e916d12fd619e97b5117211ab097394b2.tar.gz
gcc-11b6a02e916d12fd619e97b5117211ab097394b2.tar.bz2
re PR rtl-optimization/70326 (ICE: RTL check: expected elt 3 type 'e' or 'u', have '0' (rtx note) in PATTERN, at rtl.h:1440)
PR middle-end/70326 * lra.c (restore_scratches): Ignore deleted insns. * gcc.dg/pr70326.c: New test. From-SVN: r234383
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/lra.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr70326.c20
4 files changed, 34 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ed26c14..c98a209 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-03-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/70326
+ * lra.c (restore_scratches): Ignore deleted insns.
+
2016-03-21 Marc Glisse <marc.glisse@inria.fr>
Jakub Jelinek <jakub@redhat.com>
diff --git a/gcc/lra.c b/gcc/lra.c
index a6ce365..a724ef7 100644
--- a/gcc/lra.c
+++ b/gcc/lra.c
@@ -1967,6 +1967,10 @@ restore_scratches (void)
for (i = 0; scratches.iterate (i, &loc); i++)
{
+ /* Ignore already deleted insns. */
+ if (NOTE_P (loc->insn)
+ && NOTE_KIND (loc->insn) == NOTE_INSN_DELETED)
+ continue;
if (last != loc->insn)
{
last = loc->insn;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6e0ab0b..e05b897 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-03-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/70326
+ * gcc.dg/pr70326.c: New test.
+
2016-03-21 Marc Glisse <marc.glisse@inria.fr>
Jakub Jelinek <jakub@redhat.com>
diff --git a/gcc/testsuite/gcc.dg/pr70326.c b/gcc/testsuite/gcc.dg/pr70326.c
new file mode 100644
index 0000000..8332899
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr70326.c
@@ -0,0 +1,20 @@
+/* PR middle-end/70326 */
+/* { dg-do compile { target int128 } } */
+/* { dg-options "-Og -fno-dce -fno-guess-branch-probability -fschedule-insns -fno-tree-coalesce-vars -fno-tree-dce -w -Wno-psabi" } */
+
+typedef unsigned int A __attribute__ ((vector_size (32)));
+typedef unsigned __int128 B;
+typedef unsigned __int128 C __attribute__ ((vector_size (32)));
+typedef unsigned __int128 D __attribute__ ((vector_size (32)));
+
+void
+foo (B a, D b, A c, A d, C e)
+{
+ b /= (D) {11} | 1;
+ a ^= a <= 10;
+ e *= (C) d;
+ e += (C) ~b;
+ c[0] ^= c[0] <= 0x1234;
+ a = (a >> 1) | (a << 127);
+ b += (D) {45, 123};
+}