diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-11-23 13:30:35 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-11-23 13:30:35 -0500 |
commit | a98c9f1ab2c7f8ad5cb6153ce46731b66fd110ea (patch) | |
tree | f05c5d927cf9cb965d3b3535cc00f128069ddf53 | |
parent | 601774ce085c9e492abc26534e36676066bcc887 (diff) | |
download | gcc-a98c9f1ab2c7f8ad5cb6153ce46731b66fd110ea.zip gcc-a98c9f1ab2c7f8ad5cb6153ce46731b66fd110ea.tar.gz gcc-a98c9f1ab2c7f8ad5cb6153ce46731b66fd110ea.tar.bz2 |
(emit_move_insn): If splitting up into individual words and X is a push_operand...
(emit_move_insn): If splitting up into individual words and X is a
push_operand, do the push and reference top of stack.
From-SVN: r8554
-rw-r--r-- | gcc/expr.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -1951,6 +1951,17 @@ emit_move_insn_1 (x, y) rtx last_insn = 0; rtx insns; +#ifdef PUSH_ROUNDING + + /* If X is a push on the stack, do the push now and replace + X with a reference to the stack pointer. */ + if (push_operand (x, GET_MODE (x))) + { + anti_adjust_stack (GEN_INT (GET_MODE_SIZE (GET_MODE (x)))); + x = change_address (x, VOIDmode, stack_pointer_rtx); + } +#endif + for (i = 0; i < (GET_MODE_SIZE (mode) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD; i++) |