diff options
author | Jakub Jelinek <jakub@redhat.com> | 2017-12-12 10:51:05 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-12-12 10:51:05 +0100 |
commit | 6c939c2e9c6c3437fd5664a163890d3006dba45c (patch) | |
tree | b3657f88f39d213c62d7f02819c1ccb6a21b6883 | |
parent | 555758de9007461daa2638c1c5d5ac35ae3dd234 (diff) | |
download | gcc-6c939c2e9c6c3437fd5664a163890d3006dba45c.zip gcc-6c939c2e9c6c3437fd5664a163890d3006dba45c.tar.gz gcc-6c939c2e9c6c3437fd5664a163890d3006dba45c.tar.bz2 |
re PR rtl-optimization/83363 (wrong code at -O2 -fno-forward-propagate)
PR rtl-optimization/83363
PR rtl-optimization/83364
* gcc.dg/pr83363.c: New test.
* gcc.dg/pr83364.c: New test.
From-SVN: r255576
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr83363.c | 26 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr83364.c | 22 |
3 files changed, 53 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 811ec8d..079fd96 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2017-12-12 Jakub Jelinek <jakub@redhat.com> + PR rtl-optimization/83363 + PR rtl-optimization/83364 + * gcc.dg/pr83363.c: New test. + * gcc.dg/pr83364.c: New test. + PR tree-optimization/83359 * gcc.dg/graphite/pr83359.c: New test. diff --git a/gcc/testsuite/gcc.dg/pr83363.c b/gcc/testsuite/gcc.dg/pr83363.c new file mode 100644 index 0000000..e698268 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr83363.c @@ -0,0 +1,26 @@ +/* PR rtl-optimization/83363 */ +/* { dg-do run } */ +/* { dg-options "-O2 -fno-forward-propagate" } */ + +unsigned char a; +unsigned int b; + +static unsigned short __attribute__ ((noinline, noclone)) +foo (unsigned short x) +{ + x -= b; + x <<= x == 0; + a = ~0; + a >>= (unsigned char) x == 0; + x *= a -= ~a; + return x; +} + +int +main () +{ + asm volatile ("" : : : "memory"); + if (foo (3) != (unsigned short) (3 * (unsigned char) ~0)) + __builtin_abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/pr83364.c b/gcc/testsuite/gcc.dg/pr83364.c new file mode 100644 index 0000000..6d38e40 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr83364.c @@ -0,0 +1,22 @@ +/* PR rtl-optimization/83364 */ +/* { dg-do run } */ +/* { dg-options "-O -fno-forward-propagate -fno-tree-coalesce-vars -fno-tree-ter" } */ + +int a; + +static int __attribute__ ((noinline, noclone)) +foo (unsigned char c) +{ + c <<= (long long) c != a; + c = c << 7 | c >> 1; + return c; +} + +int +main () +{ + asm volatile ("" : : : "memory"); + if (foo (0) != 0) + __builtin_abort (); + return 0; +} |