28 lines
670 B
C
28 lines
670 B
C
/* PR target/84614 */
|
|
/* { dg-do run { target int128 } } */
|
|
/* { dg-options "-Og -fno-split-wide-types -fno-tree-coalesce-vars -g --param=max-combine-insns=3 -fcompare-debug" } */
|
|
|
|
unsigned __int128 a;
|
|
|
|
unsigned __int128
|
|
b (unsigned short c, unsigned int d)
|
|
{
|
|
unsigned long long e;
|
|
__builtin_sub_overflow (0, d, &e);
|
|
e >>= c;
|
|
c ^= 65535;
|
|
d ^= 824;
|
|
return c + a + d + e;
|
|
}
|
|
|
|
int
|
|
main ()
|
|
{
|
|
unsigned __int128 x = b (0, 9);
|
|
if (__SIZEOF_INT__ * __CHAR_BIT__ == 32
|
|
&& __SIZEOF_LONG_LONG__ * __CHAR_BIT__ == 64
|
|
&& __SIZEOF_INT128__ * __CHAR_BIT__ == 128
|
|
&& x != (((unsigned __int128) 1 << 64) | 0x10327))
|
|
__builtin_abort ();
|
|
return 0;
|
|
}
|