From c937357e3adcea76ec866a13a6e599dda464ab48 Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Sat, 24 Jul 1993 22:20:55 +0000 Subject: [PATCH] (emit_move_insn_1): For complex stack push, don't use change_address. From-SVN: r4983 --- gcc/expr.c | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/gcc/expr.c b/gcc/expr.c index 187b25b3d0d..b3addecc789 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -1648,14 +1648,31 @@ emit_move_insn_1 (x, y) In that case, change_address is used only to convert the mode, not to change the address. */ - emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code) - ((stack ? change_address (x, submode, (rtx) 0) - : gen_highpart (submode, x)), - gen_highpart (submode, y))); - emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code) - ((stack ? change_address (x, submode, (rtx) 0) - : gen_lowpart (submode, x)), - gen_lowpart (submode, y))); + if (stack) + { +#ifdef STACK_GROWS_DOWNWARD + emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code) + (gen_rtx (MEM, submode, (XEXP (x, 0))), + gen_highpart (submode, y))); + emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code) + (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); -- 2.30.2