]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* rs6000.c (rs6000_frame_related): Avoid unwanted sharing
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Jun 2002 14:44:33 +0000 (14:44 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Jun 2002 14:44:33 +0000 (14:44 +0000)
        of hard registers.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54615 138bc75d-0d04-0410-961f-82ee72b054a4

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

index b5303fc11c4b8accaad8017ef4dc2e2d2fa008a7..0109f95e15afc8ece51414d358e2e19d9ba69dce 100644 (file)
@@ -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.
index 00f9aa76754fa65fddff62fcb94cec0ec7becece..d9501e6d74e59a7d56649ec2444fdc1e161fd565 100644 (file)
@@ -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,