Commit 8231b3f9 by Richard Henderson Committed by Richard Henderson

i386.c (ix86_split_long_move): Fix base register mode for XFmode splits for TARGET_64BIT.

        * config/i386/i386.c (ix86_split_long_move): Fix base register
        mode for XFmode splits for TARGET_64BIT.

From-SVN: r66589
parent 0212907f
2003-05-07 Richard Henderson <rth@redhat.com> 2003-05-07 Richard Henderson <rth@redhat.com>
* config/i386/i386.c (ix86_split_long_move): Fix base register
mode for XFmode splits for TARGET_64BIT.
2003-05-07 Richard Henderson <rth@redhat.com>
* sched-ebb.c (schedule_ebb): Supply the correct starting * sched-ebb.c (schedule_ebb): Supply the correct starting
block number to save_line_notes. block number to save_line_notes.
......
...@@ -10593,15 +10593,24 @@ ix86_split_long_move (operands) ...@@ -10593,15 +10593,24 @@ ix86_split_long_move (operands)
Do an lea to the last part and use only one colliding move. */ Do an lea to the last part and use only one colliding move. */
else if (collisions > 1) else if (collisions > 1)
{ {
rtx base;
collisions = 1; collisions = 1;
emit_insn (gen_rtx_SET (VOIDmode, part[0][nparts - 1],
XEXP (part[1][0], 0))); base = part[0][nparts - 1];
part[1][0] = change_address (part[1][0],
TARGET_64BIT ? DImode : SImode, /* Handle the case when the last part isn't valid for lea.
part[0][nparts - 1]); Happens in 64-bit mode storing the 12-byte XFmode. */
part[1][1] = adjust_address (part[1][0], VOIDmode, UNITS_PER_WORD); if (GET_MODE (base) != Pmode)
base = gen_rtx_REG (Pmode, REGNO (base));
emit_insn (gen_rtx_SET (VOIDmode, base, XEXP (part[1][0], 0)));
part[1][0] = replace_equiv_address (part[1][0], base);
part[1][1] = replace_equiv_address (part[1][1],
plus_constant (base, UNITS_PER_WORD));
if (nparts == 3) if (nparts == 3)
part[1][2] = adjust_address (part[1][0], VOIDmode, 8); part[1][2] = replace_equiv_address (part[1][2],
plus_constant (base, 8));
} }
} }
......
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