From f3dd562734e2c97f33c63a6510618eaa49fdc35a Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 1 Dec 2004 06:13:16 +0000 Subject: [PATCH] re PR target/12817 ([SYSV] Altivec code generation error with many registers used) PR target/12817 * config/rs6000/rs6000.c (rs6000_emit_prologue): Use r0 for vrsave. From-SVN: r91555 --- gcc/ChangeLog | 5 +++++ gcc/config/rs6000/rs6000.c | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 87e607bb90eb..c4d3e222c94b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-12-01 Alan Modra + + PR target/12817 + * config/rs6000/rs6000.c (rs6000_emit_prologue): Use r0 for vrsave. + 2004-11-29 Roger Sayle PR rtl-optimization/9771 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index ff30609d30f8..009e1e7d7002 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -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)); -- 2.47.2