[RS6000] Allow saving of fixed regs.
authorAlan Modra <amodra@gmail.com>
Sat, 30 Apr 2016 00:35:39 +0000 (10:05 +0930)
committerAlan Modra <amodra@gcc.gnu.org>
Sat, 30 Apr 2016 00:35:39 +0000 (10:05 +0930)
commitcc5f7354319b23401cec9a800fb4f784ec506f21
tree9bb07d742197b0598fadbc998abb013b7307d453
parent8cd5d1f46ced83c462e6ababeff4b139da889fab
[RS6000] Allow saving of fixed regs.

As I noted a long time ago in the comment on fixed_reg_p, the real
problem with saving fixed/global regs is that exception frame
unwinding might restore them.  So don't emit eh_frame info for any
such reg, and the unwinder won't restore them.

Also, tidy rs6000_savres_strategy.  Delaying some checks means we
won't iterate over regs quite so often.

* config/rs6000/rs6000.c (rs6000_savres_strategy): Force inline
restoring when fixed_reg_p, but allow out-of-line or stmw save.
Check for user regs later to avoid unnecessary looping over regs.
Merge user reg check with non-saved reg check.  Don't force
inline VR restore when static chain used.
(rs6000_frame_related): Omit eh_frame info for user regs when
saving.
(fixed_regs_p): Delete.

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