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. */
emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code) if (stack)
((stack ? change_address (x, submode, (rtx) 0) {
: gen_highpart (submode, x)), #ifdef STACK_GROWS_DOWNWARD
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) (gen_rtx (MEM, submode, (XEXP (x, 0))),
((stack ? change_address (x, submode, (rtx) 0) gen_highpart (submode, y)));
: gen_lowpart (submode, x)), emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code)
gen_lowpart (submode, y))); (gen_rtx (MEM, submode, (XEXP (x, 0))),
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