rs6000: Separate shrink-wrapping for FPRs
authorSegher Boessenkool <segher@kernel.crashing.org>
Thu, 18 May 2017 23:38:04 +0000 (01:38 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Thu, 18 May 2017 23:38:04 +0000 (01:38 +0200)
commit6e21f3b52ec4b1c91a636a6a8a73d0fba68fc50e
tree246db0228a686d016aa85e8da3f3425bf10a8a37
parentafbc9ecbf6c38730ac304a77e8f397f2509780f6
rs6000: Separate shrink-wrapping for FPRs

This patch implements separate shrink-wrapping for the non-volatile
floating point registers (FPR14..FPR31).  It is pretty much exactly
analogous to the code for GPRs.

* config/rs6000/rs6000.c (struct machine_function): Add field
fpr_is_wrapped_separately.
(rs6000_get_separate_components): Use 64 components.  Handle the
new FPR components.
(rs6000_components_for_bb): Handle the FPR components.
(rs6000_emit_prologue_components): Handle the FPR components.
(rs6000_emit_epilogue_components): Handle the FPR components.
(rs6000_set_handled_components): Handle the FPR components.
(rs6000_emit_prologue): Don't output prologue code for those FPRs
that are already separately shrink-wrapped.
(rs6000_emit_epilogue): Don't output epilogue code for those FPRs
that are already separately shrink-wrapped.

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