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

--- Comment #20 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Andy Lutomirski from comment #19)
> I don't think the fix is correct.
> 
> This works:
> 
> gcc -mno-sse -mpreferred-stack-boundary=3 ...
> 
> This does not:
> 
> gcc -mno-sse -mpreferred-stack-boundary=3 -mincoming-stack-boundary=3 ...
>

Please provide a testcase.

> This makes no sense, since they should be equivalent.
> 
> Also, I find the docs to be unclear as to what different values of the
> incoming and preferred stack boundaries mean.
> 
> Finally, why is -mno-sse required in order to set a low stack boundary? 
> Couldn't gcc figure out that the existence of a stack variable (SSE,
> alignas, __attribute__((aligned(32))), etc) should force dynamic stack
> alignment? 

Since the x86-86 psABI says that stack must be 16 byte aligned, if the stack
isn't 16-byte aligned,  the code with SSE insn, which follows the psABI,
will crash when called with 8-byte aligned stack.

Reply via email to