http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60337

--- Comment #4 from Dominik Vogt <vogt at linux dot vnet.ibm.com> ---
> It's the same on x86 I suppose

Well, the test program works fine on my amd64 box i.e. the alignment is
correct in all three functions (I guess foo() needs more int args to force
"a" onto the stack), and from a casual glance at libffi I assume that
there is support for that too.

> I don't see in your testcase where "Also, a parameter that is passed in
> a register and then copied to the stack is not aligned." happens.

In the call to baz().  l is passed in a register and then copied to the
stack so that the address can be taken to be passed to printf()
(verified by looking at the assembler output).  Gcc doesn't honour the
alignment when moving the register contents onto the stack, it puts the
value just at 160(%r15).

Reply via email to