re PR target/12817 ([SYSV] Altivec code generation error with many registers used)
authorAlan Modra <amodra@bigpond.net.au>
Wed, 1 Dec 2004 05:47:51 +0000 (05:47 +0000)
committerAlan Modra <amodra@gcc.gnu.org>
Wed, 1 Dec 2004 05:47:51 +0000 (16:17 +1030)
PR target/12817
* config/rs6000/rs6000.c (rs6000_emit_prologue): Use r0 for vrsave.

From-SVN: r91553

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index dea0491e162528e59f716392c5a2b3f99977852b..a703ac98edfa5561ae1f71a2dab778d4dbfbabb8 100644 (file)
@@ -1,3 +1,8 @@
+2004-12-01  Alan Modra  <amodra@bigpond.net.au>
+
+       PR target/12817
+       * config/rs6000/rs6000.c (rs6000_emit_prologue): Use r0 for vrsave.
+
 2004-12-01  Joseph S. Myers  <joseph@codesourcery.com>
 
        * doc/standards.texi: Update for C99 TC2.
index 285996838c168a5e49b1693d136cb9b79027397b..d9b363a864b150efdaaf924a51eaaeb11343c4d9 100644 (file)
@@ -14030,8 +14030,10 @@ rs6000_emit_prologue (void)
       rtx reg, mem, vrsave;
       int offset;
 
-      /* Get VRSAVE onto a GPR.  */
-      reg = gen_rtx_REG (SImode, 12);
+      /* Get VRSAVE onto a GPR.  Note that ABI_V4 might be using r12
+        as frame_reg_rtx and r11 as the static chain pointer for
+        nested functions.  */
+      reg = gen_rtx_REG (SImode, 0);
       vrsave = gen_rtx_REG (SImode, VRSAVE_REGNO);
       if (TARGET_MACHO)
        emit_insn (gen_get_vrsave_internal (reg));