Commit c937357e by Richard Stallman

(emit_move_insn_1): For complex stack push, don't use change_address.

From-SVN: r4983
parent 255fccf3
...@@ -1648,14 +1648,31 @@ emit_move_insn_1 (x, y) ...@@ -1648,14 +1648,31 @@ emit_move_insn_1 (x, y)
In that case, change_address is used only to convert In that case, change_address is used only to convert
the mode, not to change the address. */ the mode, not to change the address. */
if (stack)
{
#ifdef STACK_GROWS_DOWNWARD
emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code) emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code)
((stack ? change_address (x, submode, (rtx) 0) (gen_rtx (MEM, submode, (XEXP (x, 0))),
: gen_highpart (submode, x)),
gen_highpart (submode, y))); gen_highpart (submode, y)));
emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code) emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code)
((stack ? change_address (x, submode, (rtx) 0) (gen_rtx (MEM, submode, (XEXP (x, 0))),
: gen_lowpart (submode, x)),
gen_lowpart (submode, y))); gen_lowpart (submode, y)));
#else
emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code)
(gen_rtx (MEM, submode, (XEXP (x, 0))),
gen_lowpart (submode, y)));
emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code)
(gen_rtx (MEM, submode, (XEXP (x, 0))),
gen_highpart (submode, y)));
#endif
}
else
{
emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code)
(gen_highpart (submode, x), gen_highpart (submode, y)));
emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code)
(gen_lowpart (submode, x), gen_lowpart (submode, y)));
}
group_insns (prev); group_insns (prev);
......
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