rs6000: Use SAVE_MULTIPLE only if we restore what it saves (PR80938)
authorSegher Boessenkool <segher@kernel.crashing.org>
Wed, 9 Aug 2017 21:08:33 +0000 (23:08 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Wed, 9 Aug 2017 21:08:33 +0000 (23:08 +0200)
commitcc6a467f450424a14bfc71d03e83b3981f4fc864
tree8630b82450ca497021fe09a477cf138ac39daa8f
parenta8a581af9ec2c7c774b5309d9d4e6555ddfc440b
rs6000: Use SAVE_MULTIPLE only if we restore what it saves (PR80938)

We can have SAVE_MULTIPLE while we do not have REST_MULTIPLE.  If the
inline restore does not restore all registers, the CFI for the save
and restore can conflict if things are shrink-wrapped.

We could restore all registers that are saved (not ideal), or emit
the CFI notes to say we did (which will work fine, but is also not
so great); instead, let's not save the registers that are unused.

PR target/80938
* config/rs6000/rs6000.c (rs6000_savres_strategy): Don't use
SAVE_MULTIPLE if not all the registers that saves, should be saved.

From-SVN: r251005
gcc/ChangeLog
gcc/config/rs6000/rs6000.c