David asked me to reverse the default for the -msave-toc-indirect option, since
it is buggy in a few cases, and in other places causes slowdowns if the
function has an early exit before calling the indrect function.  I also
documented the switch.

I did the usual bootstrap and make check with no regressions, and committed the
patch.

2011-08-29  Michael Meissner  <meiss...@linux.vnet.ibm.com>

        * config/rs6000/rs6000.opt (-msave-toc-indirect): Change default
        to off.  Document switch.
        * doc/invoke.texi (-msave-toc-indirect): Ditto.

Index: gcc/config/rs6000/rs6000.opt
===================================================================
--- gcc/config/rs6000/rs6000.opt        (revision 178259)
+++ gcc/config/rs6000/rs6000.opt        (working copy)
@@ -526,5 +526,5 @@ Target Report Var(TARGET_POINTERS_TO_NES
 Use/do not use r11 to hold the static link in calls to functions via pointers.
 
 msave-toc-indirect
-Target Undocumented Var(TARGET_SAVE_TOC_INDIRECT) Save Init(1)
-; Control whether we save the TOC in the prologue for indirect calls or 
generate the save inline
+Target Report Var(TARGET_SAVE_TOC_INDIRECT) Save
+Control whether we save the TOC in the prologue for indirect calls or generate 
the save inline
Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi (revision 178259)
+++ gcc/doc/invoke.texi (working copy)
@@ -814,7 +814,8 @@ See RS/6000 and PowerPC Options.
 -mrecip -mrecip=@var{opt} -mno-recip -mrecip-precision @gol
 -mno-recip-precision @gol
 -mveclibabi=@var{type} -mfriz -mno-friz @gol
--mpointers-to-nested-functions -mno-pointers-to-nested-functions}
+-mpointers-to-nested-functions -mno-pointers-to-nested-functions @gol
+-msave-toc-indirect -mno-save-toc-indirect}
 
 @emph{RX Options}
 @gccoptlist{-m64bit-doubles  -m32bit-doubles  -fpu  -nofpu@gol
@@ -16438,6 +16439,15 @@ static chain value to be loaded in regis
 not be able to call through pointers to nested functions or pointers
 to functions compiled in other languages that use the static chain if
 you use the @option{-mno-pointers-to-nested-functions}.
+
+@item -msave-toc-indirect
+@itemx -mno-save-toc-indirect
+@opindex msave-toc-indirect
+Generate (do not generate) code to save the TOC value in the reserved
+stack location in the function prologue if the function calls through
+a pointer on AIX and 64-bit Linux systems.  If the TOC value is not
+saved in the prologue, it is saved just before the call through the
+pointer.  The @option{-mno-save-toc-indirect} option is the default.
 @end table
 
 @node RX Options


-- 
Michael Meissner, IBM
5 Technology Place Drive, M/S 2757, Westford, MA 01886-3141, USA
meiss...@linux.vnet.ibm.com     fax +1 (978) 399-6899

Reply via email to