/* 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; }