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
This commit is contained in:
Jakub Jelinek 2017-12-12 10:51:05 +01:00 committed by Jakub Jelinek
parent 555758de90
commit 6c939c2e9c
3 changed files with 53 additions and 0 deletions

View File

@ -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.

View File

@ -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;
}

View File

@ -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;
}