https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95405
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |enhancement Ever confirmed|0 |1 Last reconfirmed| |2021-03-07 Component|tree-optimization |rtl-optimization Target| |x86_64-linux-gnu Status|UNCONFIRMED |NEW --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- On aarch64 we do the correct thing: _Z3barv: stp x29, x30, [sp, -32]! mov x29, sp bl _Z3foov tst w1, 255 csel x0, x0, xzr, ne ldp x29, x30, [sp], 32 ret So this is most likely an issue with how x86_64 implements stuff. Confirmed for x86_64 though.