https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115352
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|tree-optimization |middle-end Target|x86_64-pc-linux-gnu |x86_64-pc-linux-gnu | |aarch64-linux-gnu Status|UNCONFIRMED |NEW Ever confirmed|0 |1 Last reconfirmed| |2024-06-05 Host|x86_64-pc-linux-gnu | --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Reducing it down to `128*300` works but `128*400` fails. The gimple level difference between 128*300 vs 128*400 is just the argument that gets passed. So I don't think the bug is __builtin_sub_overflow_p expansion but I could be wrong. Note clang is very useless at testing this since it unrolls the loop always. (that is after changing __builtin_sub_overflow_p to __builtin_sub_overflow: _BitInt (65) t; return __builtin_sub_overflow (0, b, &t); ) It also fails on aarch64-linux-gnu.