/* PR middle-end/103431 */ /* { dg-do run { target int128 } } */ /* { dg-options "-O -fno-tree-bit-ccp -fno-tree-dominator-opts" } */ __attribute__((noipa)) void foo (unsigned short a) { __uint128_t b = 5; int size = __SIZEOF_INT128__ * __CHAR_BIT__ - 1; a /= 0xfffffffd; __uint128_t c = (b << (a & size) | b >> (-(a & size) & size)); if (c != 5) __builtin_abort (); } int main () { foo (0); return 0; }