(emit_push_insn): If REG is zero, don't set regs here.

From-SVN: r3439
This commit is contained in:
Richard Kenner 1993-02-08 05:49:27 -05:00
parent e7cf2d7e55
commit cd04883188
1 changed files with 6 additions and 3 deletions

View File

@ -1728,11 +1728,14 @@ gen_push_operand ()
ALIGN (in bytes) is maximum alignment we can assume.
If PARTIAL is nonzero, then copy that many of the first words
of X into registers starting with REG, and push the rest of X.
If PARTIAL and REG are both nonzero, then copy that many of the first
words of X into registers starting with REG, and push the rest of X.
The amount of space pushed is decreased by PARTIAL words,
rounded *down* to a multiple of PARM_BOUNDARY.
REG must be a hard register in this case.
If REG is zero but PARTIAL is not, take any all others actions for an
argument partially in registers, but do not actually load any
registers.
EXTRA is the amount in bytes of extra space to leave next to this arg.
This is ignored if an argument block has already been allocated.
@ -2042,7 +2045,7 @@ emit_push_insn (x, mode, type, size, align, partial, reg, extra,
/* If part should go in registers, copy that part
into the appropriate registers. Do this now, at the end,
since mem-to-mem copies above may do function calls. */
if (partial > 0)
if (partial > 0 && reg != 0)
move_block_to_reg (REGNO (reg), x, partial, mode);
if (extra && args_addr == 0 && where_pad == stack_direction)