From: Alan Modra Date: Wed, 1 Dec 2004 05:47:51 +0000 (+0000) Subject: re PR target/12817 ([SYSV] Altivec code generation error with many registers used) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=eab97e449ba769f0a8f4cf5cd69970bbf38de38f;p=gcc.git 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: r91553 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dea0491e162..a703ac98edf 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-12-01 Joseph S. Myers * doc/standards.texi: Update for C99 TC2. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 285996838c1..d9b363a864b 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -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));