------- Comment #8 from Joey dot ye at intel dot com 2008-08-04 09:11 ------- Root cause is that outgoing parameter frame is aligned based on stack pointer. Namely, address_of_stack_param = SP + offset + fixed_padding.
With -mpreferred-stack-boundary=2, alignment of SP is only 4 bytes. Outgoing frame won't be possibly aligned with 16 bytes without additional 'and $-16, sp'. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37010