| /* PR tree-optimization/114040 */ |
| /* { 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__ >= 8671 |
| __attribute__((noipa)) unsigned |
| foo (unsigned _BitInt(8671) x, unsigned y, unsigned _BitInt(512) z) |
| { |
| unsigned _BitInt (8671) r |
| = x * __builtin_sub_overflow_p (y * z, 0, (unsigned _BitInt(255)) 0); |
| return r; |
| } |
| #endif |
| |
| int |
| main () |
| { |
| #if __BITINT_MAXWIDTH__ >= 8671 |
| if (foo (1, 1, 0xfffa46471e7c2dd60000000000000000wb)) |
| __builtin_abort (); |
| #endif |
| } |