rs6000.h (FIXED_SCRATCH): Use r0 as a scratch register on SPE targets.
authorNathan Froyd <froydnj@codesourcery.com>
Tue, 5 Jun 2007 19:46:23 +0000 (19:46 +0000)
committerNathan Froyd <froydnj@gcc.gnu.org>
Tue, 5 Jun 2007 19:46:23 +0000 (19:46 +0000)
commit52ff33d0eb56df70238a99b7aa66140609f3abc3
treeddb2aff474d2b21b69f98462040e6897f8ebc7ce
parentb08f991d9127706927d639bb51173e4474b976df
rs6000.h (FIXED_SCRATCH): Use r0 as a scratch register on SPE targets.

* config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
register on SPE targets.  Change documentation to reflect
reality.
* config/rs6000/rs6000.c (rs6000_conditional_register_usage):
Change FIXED_SCRATCH to 14 and document why we're keeping r14
out of the register allocation pool.
(rs6000_reg_live_or_pic_offset_p): New function.
(rs6000_emit_prologue): Move the actual saving of LR up to free
r0 for holding r11.  Split saving of SPE 64-bit registers into
its own case.  Ensure that offsets will always be in-range for
'evstdd' by using r11 as a scratch register to point at the start
of the SPE save area.  Save r11 if necessary, as it is the static
chain register.
(rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
into its own case.  Ensure that offsets will always be in-range
for 'evldd' by using r11 as a scratch register to point at the
start of the SPE save area.  Also adjust r11 when restoring
the stack pointer to compensate for pre-loading r11.

From-SVN: r125340
gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h