From fa21d1286ce759993833f865b5307aa55d2fd49d Mon Sep 17 00:00:00 2001 From: law Date: Fri, 14 Jun 2002 14:44:33 +0000 Subject: [PATCH] * rs6000.c (rs6000_frame_related): Avoid unwanted sharing of hard registers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54615 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/rs6000/rs6000.c | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b5303fc11c4..0109f95e15a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-06-13 Jeffrey Law + + * rs6000.c (rs6000_frame_related): Avoid unwanted sharing + of hard registers. + 2002-06-14 Ulrich Weigand * Makefile.in (libgcc.mk): Depend on specs. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 00f9aa76754..d9501e6d74e 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -8666,6 +8666,14 @@ rs6000_frame_related (insn, reg, val, reg2, rreg) { rtx real, temp; + /* copy_rtx will not make unique copies of registers, so we need to + ensure we don't have unwanted sharing here. */ + if (reg == reg2) + reg = gen_raw_REG (GET_MODE (reg), REGNO (reg)); + + if (reg == rreg) + reg = gen_raw_REG (GET_MODE (reg), REGNO (reg)); + real = copy_rtx (PATTERN (insn)); real = replace_rtx (real, reg, -- 2.11.4.GIT