From: jakub Date: Mon, 21 Mar 2016 21:04:32 +0000 (+0000) Subject: PR middle-end/70326 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2715f63a22b0668ae3d985acf42d99cc1a4238b6;p=thirdparty%2Fgcc.git PR middle-end/70326 * lra.c (restore_scratches): Ignore deleted insns. * gcc.dg/pr70326.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234383 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ed26c14f5023..c98a2092ce9e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-03-21 Jakub Jelinek + + PR middle-end/70326 + * lra.c (restore_scratches): Ignore deleted insns. + 2016-03-21 Marc Glisse Jakub Jelinek diff --git a/gcc/lra.c b/gcc/lra.c index a6ce36529f8d..a724ef782c25 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 6e0ab0bc1249..e05b897a9b82 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-03-21 Jakub Jelinek + + PR middle-end/70326 + * gcc.dg/pr70326.c: New test. + 2016-03-21 Marc Glisse Jakub Jelinek diff --git a/gcc/testsuite/gcc.dg/pr70326.c b/gcc/testsuite/gcc.dg/pr70326.c new file mode 100644 index 000000000000..8332899d67f2 --- /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}; +}