[CodeGen] Implicitly set stackrealign on the main function, if custom stack alignment...
authorMartin Storsjo <martin@martin.st>
Tue, 21 Aug 2018 20:41:17 +0000 (20:41 +0000)
committerMartin Storsjo <martin@martin.st>
Tue, 21 Aug 2018 20:41:17 +0000 (20:41 +0000)
commitd39d53b0d1a55370a46c6f121e11b5c43a0396db
tree96c6592d19fc3c8be9c86defee26d1495e9a8b87
parent883fe455f15a7b1cdc729cb1af9059fb74a43651
[CodeGen] Implicitly set stackrealign on the main function, if custom stack alignment is used

If using a custom stack alignment, one is expected to make sure
that all callers provide such alignment, or realign the stack in
all entry points (and callbacks).

Despite this, the compiler can assume that the main function will
need realignment in these cases, since the startup routines calling
the main function most probably won't provide the custom alignment.

This matches what GCC does in similar cases; if compiling with
-mincoming-stack-boundary=X -mpreferred-stack-boundary=X, GCC normally
assumes such alignment on entry to a function, but specifically for
the main function still does realignment.

Differential Revision: https://reviews.llvm.org/D51026

llvm-svn: 340334
clang/lib/CodeGen/CodeGenFunction.cpp
clang/test/CodeGen/stackrealign-main.c [new file with mode: 0644]