131
|
1 /* PR target/84614 */
|
|
2 /* { dg-do run { target int128 } } */
|
|
3 /* { dg-options "-Og -fno-split-wide-types -fno-tree-coalesce-vars -g --param=max-combine-insns=3 -fcompare-debug" } */
|
|
4
|
|
5 unsigned __int128 a;
|
|
6
|
|
7 unsigned __int128
|
|
8 b (unsigned short c, unsigned int d)
|
|
9 {
|
|
10 unsigned long long e;
|
|
11 __builtin_sub_overflow (0, d, &e);
|
|
12 e >>= c;
|
|
13 c ^= 65535;
|
|
14 d ^= 824;
|
|
15 return c + a + d + e;
|
|
16 }
|
|
17
|
|
18 int
|
|
19 main ()
|
|
20 {
|
|
21 unsigned __int128 x = b (0, 9);
|
|
22 if (__SIZEOF_INT__ * __CHAR_BIT__ == 32
|
|
23 && __SIZEOF_LONG_LONG__ * __CHAR_BIT__ == 64
|
|
24 && __SIZEOF_INT128__ * __CHAR_BIT__ == 128
|
|
25 && x != (((unsigned __int128) 1 << 64) | 0x10327))
|
|
26 __builtin_abort ();
|
|
27 return 0;
|
|
28 }
|