diff options
author | Jeff Law <law@gcc.gnu.org> | 1993-01-29 10:09:30 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1993-01-29 10:09:30 -0700 |
commit | f2fbfe928c613bf60a0db04ff744f25ccc5bdfdf (patch) | |
tree | b1e94aae02bf46487726ffe0c9b566468e031157 | |
parent | d39b68546912b1dfc4bc0e53de27636ddef41c50 (diff) | |
download | gcc-f2fbfe928c613bf60a0db04ff744f25ccc5bdfdf.zip gcc-f2fbfe928c613bf60a0db04ff744f25ccc5bdfdf.tar.gz gcc-f2fbfe928c613bf60a0db04ff744f25ccc5bdfdf.tar.bz2 |
reload.c (find_reloads_toplev): When handling a (subreg (reg)) where (reg) will be replaced by a memory...
* reload.c (find_reloads_toplev): When handling a (subreg (reg))
where (reg) will be replaced by a memory reference, if the memory
address is invalid for the mode of the subreg, then search the
memory address for reloads.
From-SVN: r3385
-rw-r--r-- | gcc/reload.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/reload.c b/gcc/reload.c index c75f158..3ea095c 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -3477,7 +3477,9 @@ find_reloads_toplev (x, ind_levels, is_set_dest) #endif && (reg_equiv_address[regno] != 0 || (reg_equiv_mem[regno] != 0 - && ! offsettable_memref_p (reg_equiv_mem[regno])))) + && (! strict_memory_address_p (GET_MODE (x), + XEXP (reg_equiv_mem[regno], 0)) + || ! offsettable_memref_p (reg_equiv_mem[regno]))))) { int offset = SUBREG_WORD (x) * UNITS_PER_WORD; rtx addr = (reg_equiv_address[regno] ? reg_equiv_address[regno] |