Commit ecbe6c61 by Hans-Peter Nilsson Committed by Jeff Law

reload.c (find_reloads_toplev): Reload a paradoxical subreg of a mem if the…

reload.c (find_reloads_toplev): Reload a paradoxical subreg of a mem if the address is a mode_dependent_address_p.

        * reload.c (find_reloads_toplev): Reload a paradoxical subreg of a
        mem if the address is a mode_dependent_address_p.

From-SVN: r35280
parent fc5f1cca
Wed Jul 26 19:44:05 2000 Hans-Peter Nilsson <hp@axis.com>
* reload.c (find_reloads_toplev): Reload a paradoxical subreg of a
mem if the address is a mode_dependent_address_p.
2000-07-26 Kazu Hirata <kazu@hxi.com>
* h8300.c (print_operand): Print ":8" when the 'R' operand is
......
......@@ -4335,6 +4335,25 @@ find_reloads_toplev (x, opnum, type, ind_levels, is_set_dest, insn,
x = find_reloads_subreg_address (x, 1, opnum, type, ind_levels,
insn);
}
else if (code == SUBREG && GET_CODE (SUBREG_REG (x)) == MEM
&& (GET_MODE_SIZE (GET_MODE (x))
> GET_MODE_SIZE (GET_MODE (SUBREG_REG (x))))
&& mode_dependent_address_p (XEXP (SUBREG_REG (x), 0)))
{
/* A paradoxical subreg will simply have the mode of the access
changed, so we need to reload such a memory operand to stabilize
the meaning of the memory access. */
enum machine_mode subreg_mode = GET_MODE (SUBREG_REG (x));
if (is_set_dest)
push_reload (NULL_RTX, SUBREG_REG (x), NULL_PTR, &SUBREG_REG (x),
find_valid_class (subreg_mode, SUBREG_WORD (x)),
VOIDmode, subreg_mode, 0, 0, opnum, type);
else
push_reload (SUBREG_REG (x), NULL_RTX, &SUBREG_REG (x), NULL_PTR,
find_valid_class (subreg_mode, SUBREG_WORD (x)),
subreg_mode, VOIDmode, 0, 0, opnum, type);
}
for (copied = 0, i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
{
......@@ -5530,7 +5549,7 @@ find_reloads_subreg_address (x, force_replace, opnum, type,
/* Substitute into the current INSN the registers into which we have reloaded
the things that need reloading. The array `replacements'
says contains the locations of all pointers that must be changed
contains the locations of all pointers that must be changed
and says what to replace them with.
Return the rtx that X translates into; usually X, but modified. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment