On Fri, Jun 22, 2012 at 11:15 AM, Jan Hubicka <hubi...@ucw.cz> wrote:
>> >
>>
>> 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

I am not sure if news.html is the best place for this.
How about putting it in gcc-4.8/changes.html? Does
it look OK?

Thanks.

-- 
H.J.
---
Index: ./gcc-4.8/changes.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-4.8/changes.html,v
retrieving revision 1.2
diff -u -p -r1.2 changes.html
--- ./gcc-4.8/changes.html      28 Apr 2012 01:58:33 -0000      1.2
+++ ./gcc-4.8/changes.html      22 Jun 2012 18:23:01 -0000
@@ -61,9 +61,24 @@

 <!--
 <h2 id="targets">New Targets and Target Specific Improvements</h2>
-
 -->

+<h3>IA-32/x86-64</h3>
+  <ul>
+    <li>Allow <code>-mpreferred-stack-boundary=3</code> for the x86-64
+    architecture with SSE extensions disabled.  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 <code>-mpreferred-stack-boundary=3</code>, including any
+    libraries.  This includes the system libraries and startup modules.</li>
+  </ul>
+
 <!--
 <h2>Documentation improvements</h2>
 -->

Reply via email to