reload.c (find_reloads_toplev): When handling a (subreg (reg)) where (reg) will be...
authorJeff Law <law@gcc.gnu.org>
Fri, 29 Jan 1993 17:09:30 +0000 (10:09 -0700)
committerJeff Law <law@gcc.gnu.org>
Fri, 29 Jan 1993 17:09:30 +0000 (10:09 -0700)
* 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

gcc/reload.c

index c75f15859db0d652a8aa2975c01245fa1f2bab13..3ea095ceeb9c8bbe1ace4a742327f013a0b4a867 100644 (file)
@@ -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]