]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix rtl sharing problem reported by Daniel Bayer on gcc list.
authorJames E Wilson <wilson@specifixinc.com>
Wed, 18 Feb 2004 06:49:58 +0000 (06:49 +0000)
committerJim Wilson <wilson@gcc.gnu.org>
Wed, 18 Feb 2004 06:49:58 +0000 (22:49 -0800)
* caller-save.c (insert_restore): Pass mem through copy_rtx.
(insert_save): Likewise.

From-SVN: r78010

gcc/ChangeLog
gcc/caller-save.c

index 2b15336a2ef89ccf7a6e9c0a72b5032618202997..00f6effb135a8a0f31cf3230b49608b13dc1e39d 100644 (file)
@@ -1,3 +1,8 @@
+2004-02-17  James E Wilson  <wilson@specifixinc.com>
+
+       * caller-save.c (insert_restore): Pass mem through copy_rtx.
+       (insert_save): Likewise.
+
 2004-02-17  Kazu Hirata  <kazu@cs.umass.edu>
 
        * config/h8300/h8300.c (h8300_emit_stack_adjustment): Fix a
index c5ba0c55bc5defef0d32594f27fa93dd323cb772..028705b43898eeaa478ec3cc2ad0ee6efe1ecc96 100644 (file)
@@ -685,6 +685,8 @@ insert_restore (struct insn_chain *chain, int before_p, int regno,
       && save_mode [regno] != GET_MODE (mem)
       && numregs == (unsigned int) hard_regno_nregs[regno][save_mode [regno]])
     mem = adjust_address (mem, save_mode[regno], 0);
+  else
+    mem = copy_rtx (mem);
   pat = gen_rtx_SET (VOIDmode,
                     gen_rtx_REG (GET_MODE (mem),
                                  regno), mem);
@@ -757,6 +759,8 @@ insert_save (struct insn_chain *chain, int before_p, int regno,
       && save_mode [regno] != GET_MODE (mem)
       && numregs == (unsigned int) hard_regno_nregs[regno][save_mode [regno]])
     mem = adjust_address (mem, save_mode[regno], 0);
+  else
+    mem = copy_rtx (mem);
   pat = gen_rtx_SET (VOIDmode, mem,
                     gen_rtx_REG (GET_MODE (mem),
                                  regno));