131
|
1 /* { dg-do run } */
|
|
2 /* { dg-options "-O -fno-tree-coalesce-vars" } */
|
|
3 typedef unsigned char u8;
|
|
4 typedef unsigned short u16;
|
|
5 typedef unsigned u32;
|
|
6 typedef unsigned long long u64;
|
|
7
|
|
8 static u64 __attribute__((noinline, noclone))
|
|
9 foo(u8 u8_0, u16 u16_0, u32 u32_0, u64 u64_0, u16 u16_1)
|
|
10 {
|
|
11 u16_1 += 0x1051;
|
|
12 u16_1 &= 1;
|
|
13 u8_0 <<= u32_0 & 7;
|
|
14 u16_0 -= !u16_1;
|
|
15 u16_1 >>= ((u16)-u8_0 != 0xff);
|
|
16 return u8_0 + u16_0 + u64_0 + u16_1;
|
|
17 }
|
|
18
|
|
19 int
|
|
20 main (void)
|
|
21 {
|
|
22 u64 x = foo(1, 1, 0xffff, 0, 1);
|
|
23 if (x != 0x80)
|
|
24 __builtin_abort();
|
|
25 return 0;
|
|
26 }
|