/* PR rtl-optimization/83393 */ /* { dg-do run } */ /* { dg-options "-O2 -fno-forward-propagate -fno-tree-bit-ccp" } */ typedef unsigned char u8; typedef unsigned short u16; typedef unsigned int u32; typedef unsigned long long u64; u32 a, d; u64 b; u8 c; static u64 __attribute__ ((noinline, noclone)) foo (u16 f, u64 g) { f <<= 15; f *= d; f -= g %= 44; f <<= f <= g; c = 255; c >>= (u8) f == 0; f *= g; c -= ~c; return f + a + b + f; } int main (void) { #if (__SIZEOF_LONG_LONG__ == 8 && __SIZEOF_INT__ == 4 \ && __SIZEOF_SHORT__ == 2 && __CHAR_BIT__ == 8) u64 x = foo (3, 0xE6C0011BBA6DBD7LL); if (x != 0x1f66e) __builtin_abort (); #endif return 0; }