> >
> 
> Here is the patch for invoke.texi.  OK to install?
> 
> I will prepare a similar one for news.html.
> 
> Thanks.
> 
> -- 
> H.J.
> ---
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index 029a7ab..87e0d1c 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -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.

This is not true in a strict sense. One can build some part with 16 byte
alignment and just watch to not call from 8byte world to 16byte world, but I am
fine with it. (I guess -mpreferred-stack-boundary=3 is something to try on
recursion heavy benchmarks as some in SPEC and I would also expect resulting
binary to just work most of time ;)

OK, Thanks!
Honza
> 
>  @item -mincoming-stack-boundary=@var{num}
>  @opindex mincoming-stack-boundary

Reply via email to