/* 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; | |
} |