Update -mpreferred-stack-boundary=3 warning

* doc/invoke.texi: Update -mpreferred-stack-boundary=3 warning.

From-SVN: r188900
This commit is contained in:
H.J. Lu 2012-06-22 18:27:58 +00:00 committed by H.J. Lu
parent 5bfb2af277
commit 50c7ad7e68
2 changed files with 16 additions and 3 deletions

View File

@ -1,3 +1,7 @@
2012-06-22 H.J. Lu <hongjiu.lu@intel.com>
* doc/invoke.texi: Update -mpreferred-stack-boundary=3 warning.
2012-06-22 H.J. Lu <hongjiu.lu@intel.com>
PR target/53383

View File

@ -13579,9 +13579,18 @@ the default is 4 (16 bytes or 128 bits).
@strong{Warning:} When generating code for the x86-64 architecture with
SSE extensions disabled, @option{-mpreferred-stack-boundary=3} can be
used to keep the stack boundary aligned to 8 byte boundary. You must
build all modules with @option{-mpreferred-stack-boundary=3}, including
any libraries. This includes the system libraries and startup modules.
used to keep the stack boundary aligned to 8 byte boundary. Since
x86-64 ABI require 16 byte stack alignment, this is ABI incompatible and
intended to be used in controlled environment where stack space is
important limitation. This option will lead to wrong code when functions
compiled with 16 byte stack alignment (such as functions from a standard
library) are called with misaligned stack. In this case, SSE
instructions may lead to misaligned memory access traps. In addition,
variable arguments will be handled incorrectly for 16 byte aligned
objects (including x87 long double and __int128), leading to wrong
results. You must build all modules with
@option{-mpreferred-stack-boundary=3}, including any libraries. This
includes the system libraries and startup modules.
@item -mincoming-stack-boundary=@var{num}
@opindex mincoming-stack-boundary