From 3520cdec817a18b86eaaa019b6d98d8261487372 Mon Sep 17 00:00:00 2001 From: Jeffrey A Law Date: Fri, 12 Feb 1999 00:49:04 +0000 Subject: [PATCH] reload.c (find_reloads_address_1): Fix handling of an autoincremented pseudo which is homed in the stack. * reload.c (find_reloads_address_1): Fix handling of an autoincremented pseudo which is homed in the stack. From-SVN: r25162 --- gcc/ChangeLog | 3 +++ gcc/reload.c | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c0e107e54dd..0863f1d3dc6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/reload.c b/gcc/reload.c index aa16d10c648..9959942f8c5 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -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 { -- 2.30.2