/* PR tree-optimization/113334 */ /* { dg-do run { target bitint } } */ /* { dg-options "-std=c23 -pedantic-errors" } */ /* { dg-skip-if "" { ! run_expensive_tests } { "*" } { "-O0" "-O2" } } */ /* { dg-skip-if "" { ! run_expensive_tests } { "-flto" } { "" } } */ #if __BITINT_MAXWIDTH__ >= 384 __attribute__((noipa)) _BitInt(384) foo (int s) { _BitInt(384) z = (-(unsigned _BitInt(384)) 4) >> s; return z; } #endif int main () { #if __BITINT_MAXWIDTH__ >= 384 if (foo (59) != 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffwb) __builtin_abort (); if (foo (0) != -4wb) __builtin_abort (); if (foo (1) != 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffewb) __builtin_abort (); if (foo (11) != 0x001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffwb) __builtin_abort (); if (foo (123) != 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffwb) __builtin_abort (); #endif return 0; }