(i960_setup_incoming_varargs): Store parameter registers
authorJim Wilson <wilson@gcc.gnu.org>
Thu, 29 Sep 1994 23:52:57 +0000 (16:52 -0700)
committerJim Wilson <wilson@gcc.gnu.org>
Thu, 29 Sep 1994 23:52:57 +0000 (16:52 -0700)
at proper offset in argument block.

From-SVN: r8168

gcc/config/i960/i960.c

index f5ccc55822e2d122e5f1a92cd944f02224f63782..fb24855017d1a0af7e57662bfff1cb3f8923c886 100644 (file)
@@ -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;
     }