reload.c (find_reloads_address_1): Fix handling of an autoincremented pseudo which...
authorJeffrey A Law <law@cygnus.com>
Fri, 12 Feb 1999 00:49:04 +0000 (00:49 +0000)
committerJeff Law <law@gcc.gnu.org>
Fri, 12 Feb 1999 00:49:04 +0000 (17:49 -0700)
        * reload.c (find_reloads_address_1): Fix handling of an autoincremented
        pseudo which is homed in the stack.

From-SVN: r25162

gcc/ChangeLog
gcc/reload.c

index c0e107e54dd480e86da79cf723dd6939d54591df..0863f1d3dc6400b7811be4f1f0869fe90aca97e2 100644 (file)
@@ -1,5 +1,8 @@
 Fri Feb 12 00:51:26 1999  Jeffrey A Law  (law@cygnus.com)
 
+        * reload.c (find_reloads_address_1): Fix handling of an autoincremented
+        pseudo which is homed in the stack.
+
        * mips.c (save_restore_insns): Fix loop to save/restore FP registers.
        (compute_frame_size): Change loop over FP regs to be consistent
        with the loop in save_restore_insns.
index aa16d10c64893bf9cd40c6105a18dda226347b8f..9959942f8c58d894f304798d9a8d7c4cf911bcf0 100644 (file)
@@ -5334,6 +5334,14 @@ find_reloads_address_1 (mode, x, context, loc, opnum, type, ind_levels, insn)
                                   (context ? INDEX_REG_CLASS : BASE_REG_CLASS),
                                    GET_MODE (x), GET_MODE (x), 0, 0,
                                    opnum, RELOAD_OTHER);
+
+                 /* If we created a new MEM based on reg_equiv_mem[REGNO], then
+                    LOC above is part of the new MEM, not the MEM in INSN.
+
+                    We must also replace the address of the MEM in INSN.  */
+                 if (&XEXP (x_orig, 0) != loc)
+                   push_replacement (&XEXP (x_orig, 0), reloadnum, VOIDmode);
+
                }
              else
                {