On Thu, Jul 13, 2017 at 12:25 PM, Josh Poimboeuf <jpoim...@redhat.com> wrote:

>
> Anyway this seems like a clang bug to me.  If I specify RSP as an input
> register then the compiler shouldn't overwrite it first.  For that
> matter it has no reason to overwrite it if it's an output register
> either.
>

It's certainly  a difference in behavior between clang and gcc.

My question is whether this particular construct is really a
"supported" (or, at least, reasonably guaranteed) way of forcing gcc
to create a stack frame if none exists. or whether it is something
that "just happens to work".

If someone could explain the rationale behind *why* this works the way
that it does on gcc that might help convince the clang people that
this is actually a bug rather than just a piece of undefined behavior
which gcc and clang happen to handle differently.

Reply via email to