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.