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.