]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/53040 (nested functions may trash floating point registers)
authorAlan Modra <amodra@gmail.com>
Fri, 20 Apr 2012 09:33:19 +0000 (19:03 +0930)
committerAlan Modra <amodra@gcc.gnu.org>
Fri, 20 Apr 2012 09:33:19 +0000 (19:03 +0930)
PR target/53040
* config/rs6000/rs6000.c (rs6000_savres_strategy): When using
static chain, set REST_INLINE_FPRS too.

From-SVN: r186616

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 196fcd9d39e0b0ea880d510733cdac03f71c80d5..0a90509422cb572cb1b4de5a85a711d53198452a 100644 (file)
@@ -1,3 +1,9 @@
+2012-04-20  Alan Modra  <amodra@gmail.com>
+
+       PR target/53040
+       * config/rs6000/rs6000.c (rs6000_savres_strategy): When using
+       static chain, set REST_INLINE_FPRS too.
+
 2012-04-20  Thomas Schwinge  <thomas@codesourcery.com>
 
        * tree-dump.c (dequeue_and_dump) <BIT_FIELD_REF>: Dump the three child
index ceb6448742ce0a53c587869a21d15a704015430e..d1205341d88ae39bf4476bcc6330c318689c9009 100644 (file)
@@ -17457,8 +17457,9 @@ rs6000_savres_strategy (rs6000_stack_t *info,
      static chain is rarely used anyway.  FPRs are saved w.r.t the stack
      pointer on Darwin.  */
   if (using_static_chain_p)
-    strategy |= (DEFAULT_ABI == ABI_DARWIN ? 0 : SAVE_INLINE_FPRS)
-               | SAVE_INLINE_GPRS;
+    strategy |= ((DEFAULT_ABI == ABI_DARWIN
+                 ? 0 : SAVE_INLINE_FPRS | REST_INLINE_FPRS)
+                | SAVE_INLINE_GPRS);
 
   /* If we are going to use store multiple, then don't even bother
      with the out-of-line routines, since the store-multiple