diff options
author | Alan Modra <amodra@gmail.com> | 2012-04-20 19:03:19 +0930 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2012-04-20 19:03:19 +0930 |
commit | 7153fab94f5f9c95a2607246461f5c17c8d0df9a (patch) | |
tree | a6839f3d47d6b44a29732e14161167ebe289832a /gcc | |
parent | 4e0bd6d3f8a1b385d049d345775102199406de96 (diff) | |
download | gcc-7153fab94f5f9c95a2607246461f5c17c8d0df9a.zip gcc-7153fab94f5f9c95a2607246461f5c17c8d0df9a.tar.gz gcc-7153fab94f5f9c95a2607246461f5c17c8d0df9a.tar.bz2 |
re PR target/53040 (nested functions may trash floating point registers)
PR target/53040
* config/rs6000/rs6000.c (rs6000_savres_strategy): When using
static chain, set REST_INLINE_FPRS too.
From-SVN: r186616
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 5 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 196fcd9..0a90509 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index ceb6448..d120534 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -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 |