]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/12817 ([SYSV] Altivec code generation error with many registers used)
authorAlan Modra <amodra@bigpond.net.au>
Wed, 1 Dec 2004 06:13:16 +0000 (06:13 +0000)
committerAlan Modra <amodra@gcc.gnu.org>
Wed, 1 Dec 2004 06:13:16 +0000 (16:43 +1030)
PR target/12817
* config/rs6000/rs6000.c (rs6000_emit_prologue): Use r0 for vrsave.

From-SVN: r91555

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

index 87e607bb90ebd3dc5fe6cd446f886dcf114b018f..c4d3e222c94b9b86b63360c7ec25f19899eab6de 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-11-29  Roger Sayle  <roger@eyesopen.com>
 
        PR rtl-optimization/9771
index ff30609d30f891272d6873b1bfbc1d35cd6876ed..009e1e7d70024f0600e60fc76d7f47286827520f 100644 (file)
@@ -10358,8 +10358,10 @@ rs6000_emit_prologue ()
       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));