diff options
author | Jeff Law <law@redhat.com> | 2002-06-14 08:44:33 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2002-06-14 08:44:33 -0600 |
commit | e56c446321eafc7f19e1d7cd0ef0fa2bdfe40b5f (patch) | |
tree | e62fb041b7188cc149794ec6b92ebd38588500e8 | |
parent | 556b821e7cded677b4349328290fb7affa2508e0 (diff) | |
download | gcc-e56c446321eafc7f19e1d7cd0ef0fa2bdfe40b5f.zip gcc-e56c446321eafc7f19e1d7cd0ef0fa2bdfe40b5f.tar.gz gcc-e56c446321eafc7f19e1d7cd0ef0fa2bdfe40b5f.tar.bz2 |
rs6000.c (rs6000_frame_related): Avoid unwanted sharing of hard registers.
* rs6000.c (rs6000_frame_related): Avoid unwanted sharing
of hard registers.
From-SVN: r54615
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 8 |
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b5303fc..0109f95 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-06-13 Jeffrey Law <law@redhat.com> + + * rs6000.c (rs6000_frame_related): Avoid unwanted sharing + of hard registers. + 2002-06-14 Ulrich Weigand <uweigand@de.ibm.com> * Makefile.in (libgcc.mk): Depend on specs. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 00f9aa7..d9501e6 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, |