diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1994-09-29 16:52:57 -0700 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1994-09-29 16:52:57 -0700 |
commit | efbde2a29f3f9398192ad6a3a9978b4497259296 (patch) | |
tree | 79d5bb7cea54d0e7b256f001588f83ded339304b | |
parent | 7a9a00be049860530e590125f1a8b0f999a40fa4 (diff) | |
download | gcc-efbde2a29f3f9398192ad6a3a9978b4497259296.zip gcc-efbde2a29f3f9398192ad6a3a9978b4497259296.tar.gz gcc-efbde2a29f3f9398192ad6a3a9978b4497259296.tar.bz2 |
(i960_setup_incoming_varargs): Store parameter registers
at proper offset in argument block.
From-SVN: r8168
-rw-r--r-- | gcc/config/i960/i960.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/gcc/config/i960/i960.c b/gcc/config/i960/i960.c index f5ccc55..fb24855 100644 --- a/gcc/config/i960/i960.c +++ b/gcc/config/i960/i960.c @@ -2190,6 +2190,8 @@ i960_setup_incoming_varargs (cum, mode, type, pretend_size, no_rtl) if (! (no_rtl) && first_reg_offset != NPARM_REGS) { rtx label = gen_label_rtx (); + rtx regblock; + emit_insn (gen_cmpsi (arg_pointer_rtx, const0_rtx)); emit_jump_insn (gen_bne (label)); emit_insn (gen_rtx (SET, VOIDmode, arg_pointer_rtx, @@ -2199,11 +2201,14 @@ i960_setup_incoming_varargs (cum, mode, type, pretend_size, no_rtl) plus_constant (stack_pointer_rtx, 48)))); emit_label (label); - move_block_from_reg - (first_reg_offset, - gen_rtx (MEM, BLKmode, virtual_incoming_args_rtx), - NPARM_REGS - first_reg_offset, - (NPARM_REGS - first_reg_offset) * UNITS_PER_WORD); + + regblock = gen_rtx (MEM, BLKmode, + plus_constant (arg_pointer_rtx, + first_reg_offset * 4)); + move_block_from_reg (first_reg_offset, regblock, + NPARM_REGS - first_reg_offset, + ((NPARM_REGS - first_reg_offset) + * UNITS_PER_WORD)); } *pretend_size = (NPARM_REGS - first_reg_offset) * UNITS_PER_WORD; } |