/* PR tree-optimization/113774 */ /* { 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__ >= 512 unsigned _BitInt(512) u; unsigned _BitInt(512) v; void foo (unsigned _BitInt(255) a, unsigned _BitInt(257) b, unsigned _BitInt(512) *r) { b += v; b |= a - b; unsigned _BitInt(512) c = b * 6; unsigned _BitInt(512) h = c >> u; *r = h; } #endif int main () { #if __BITINT_MAXWIDTH__ >= 512 unsigned _BitInt(512) x; foo (0x10000000000000000wb, 0x10000000000000001wb, &x); if (x != 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffawb) __builtin_abort (); #endif return 0; }