1 /* { dg-do run } */ 2 /* { dg-additional-options "-fweb" } */ 3 4 typedef unsigned char u8; 5 #if __SIZEOF_INT__ < 4 6 __extension__ typedef __UINT32_TYPE__ u32; 7 #else 8 typedef unsigned int u32; 9 #endif 10 typedef unsigned long long u64; 11 int a; 12 13 static __attribute__ ((noinline, noclone)) u64 foo(u8 p1,u32 p2)14foo (u8 p1, u32 p2) 15 { 16 u64 b = a <= 0; 17 p2 = 4; 18 b >>= a == 0; 19 p1 %= 0xfffffffff; 20 p2 >>= b & 31; 21 p1 += b; 22 p2 <<= 31; 23 return p1 + p2 + b; 24 } 25 26 int main(void)27main (void) 28 { 29 u64 x = foo (0, 1); 30 if (x != 0) 31 __builtin_abort (); 32 return 0; 33 } 34