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

--- Comment #11 from H.J. Lu <hjl.tools at gmail dot com> 2012-05-20 02:04:40 
UTC ---
(In reply to comment #10)
> The problem is va_args doing alignment based on stack pointer, i.e. in:
> int
>
>   return va_arg (p, __int128);
> }
> 

>         addq    $15, %rax
>         andq    $-16, %rax

This isn't necessary.  If __int128 is put on stack by caller,
the stack must be aligned at 16 bytes.

>         leaq    16(%rax), %rdx
>         movq    %rdx, -72(%rsp)
>         movq    (%rax), %rax
>         ret
>         .cfi_endproc
> .LFE0:
> 
> this will get out of sync with hard coded offsets if rsp hapepns to be
> misaligned.

I don't think it will happen.

Reply via email to