diff options
author | Jakub Jelinek <jakub@redhat.com> | 2016-03-21 22:04:32 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-03-21 22:04:32 +0100 |
commit | 11b6a02e916d12fd619e97b5117211ab097394b2 (patch) | |
tree | 3b29c079850c227879f3a28af9b7a2bf1dc11a12 /gcc | |
parent | b94078834d4fb41cd0363d3100f0cf1570ecbf82 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/lra.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr70326.c | 20 |
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> @@ -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}; +} |