https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108595

--- Comment #3 from Idan Horowitz <idan.horowitz at gmail dot com> ---
(In reply to Andrew Pinski from comment #2)
> I am suspecting this is just an invalid option to use here.

a1 is indeed used for argument passing, it's used to pass the second argument.
I don't think the GCC documentation forbids using `fcall-saved` for
caller-saved argument registers, only for the return value register. (a0)

I'm using this on a boundary where the caller function assumes it can re-use
the the argument registers (a1-a7) without saving them. This has been working
fine for more than a year at this point - this is just the first time I tried
using an asm statement, so also the first time I encountered this issue.

It's not obvious to me why GCC even save/restores it around the asm statement
based on this option, since it's not a function call boundary.

Reply via email to