/* { dg-do run } */ | |
/* { dg-additional-options "-fweb" } */ | |
typedef unsigned char u8; | |
#if __SIZEOF_INT__ < 4 | |
__extension__ typedef __UINT32_TYPE__ u32; | |
#else | |
typedef unsigned int u32; | |
#endif | |
typedef unsigned long long u64; | |
int a; | |
static __attribute__ ((noinline, noclone)) u64 | |
foo (u8 p1, u32 p2) | |
{ | |
u64 b = a <= 0; | |
p2 = 4; | |
b >>= a == 0; | |
p1 %= 0xfffffffff; | |
p2 >>= b & 31; | |
p1 += b; | |
p2 <<= 31; | |
return p1 + p2 + b; | |
} | |
int | |
main (void) | |
{ | |
u64 x = foo (0, 1); | |
if (x != 0) | |
__builtin_abort (); | |
return 0; | |
} |