/* PR target/91635 */ #if __CHAR_BIT__ == 8 && __SIZEOF_SHORT__ == 2 \ && __SIZEOF_INT__ == 4 && __SIZEOF_LONG_LONG__ == 8 unsigned short b, c; int u, v, w, x; __attribute__ ((noipa)) int foo (unsigned short c) { c <<= __builtin_add_overflow (-c, -1, &b); c >>= 1; return c; } __attribute__ ((noipa)) int bar (unsigned short b) { b <<= -14 & 15; b = b >> -~1; return b; } __attribute__ ((noipa)) int baz (unsigned short e) { e <<= 1; e >>= __builtin_add_overflow (8719476735, u, &v); return e; } __attribute__ ((noipa)) int qux (unsigned int e) { c = ~1; c *= e; c = c >> (-15 & 5); return c + w + x; } #endif int main () { #if __CHAR_BIT__ == 8 && __SIZEOF_SHORT__ == 2 \ && __SIZEOF_INT__ == 4 && __SIZEOF_LONG_LONG__ == 8 if (foo (0xffff) != 0x7fff) __builtin_abort (); if (bar (5) != 5) __builtin_abort (); if (baz (~0) != 0x7fff) __builtin_abort (); if (qux (2) != 0x7ffe) __builtin_abort (); #endif return 0; }