]> git.ipfire.org Git - thirdparty/gcc.git/commit
[RS6000] Allow saving of fixed regs.
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 30 Apr 2016 00:35:39 +0000 (00:35 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 30 Apr 2016 00:35:39 +0000 (00:35 +0000)
commitcffc0b35c87f38fe945f20a6f3aa68cc53183f4d
tree9bb07d742197b0598fadbc998abb013b7307d453
parent33d06db4a593402ec1a2ecf357e5cc4c620793e5
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235672 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/rs6000/rs6000.c