https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112478
Jeffrey A. Law <law at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #4 from Jeffrey A. Law <law at gcc dot gnu.org> --- You're using an ASM to implement a call. That means your asm is responsible for dealing with all ABI issues, including saving/restoring registers around the call. Essentially GCC has no visibility into what your ASM does. It's just a text string that gets passed through to the assembler. The fact that it worked before was more an accident than by design. Basically GCC doesn't know your ASM performs a call, so it thinks the function is a leaf. I would _strongly_ recommend you not implement calls via ASMs. I've watched developers try to do that for 30+ years. It rarely ends well.