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

--- Comment #14 from Segher Boessenkool <segher at gcc dot gnu.org> ---
It is *impossible* to have the stack registers as inputs to an inline asm, and
reliably generate correct code for it that does what the writer of that code
expected: loading up the operands to the asm may modify the stack registers, so
which of the values does the asm expect, the old or the new value?

It is *impossible* to have stack registers as output (or scratch) from an
inline asm, always.  This violates basic requirements.

"Stack registers" here are those used by the ABI to address the stack, which
are required to be valid at all times, for example.  Stack pointer, (hard)
frame pointer, that kind of thing.  Most archs have register classes that
include such registers, like x86's "R", but crucially always other registers
are allowed there as well.

Reply via email to