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).