+Sat Oct 18 12:47:31 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * expr.c (use_group_regs): Don't call use_reg for MEMs.
+
Sat Oct 18 00:43:59 1997 Jeffrey A Law (law@cygnus.com)
* i386/freebsd.h (ASM_COMMENT_START): Fix.
{
int i;
- /* Check for a NULL entry, used to indicate that the parameter goes
- both on the stack and in registers. */
- if (XEXP (XVECEXP (regs, 0, 0), 0))
- i = 0;
- else
- i = 1;
+ for (i = 0; i < XVECLEN (regs, 0); i++)
+ {
+ rtx reg = XEXP (XVECEXP (regs, 0, i), 0);
- for (; i < XVECLEN (regs, 0); i++)
- use_reg (call_fusage, XEXP (XVECEXP (regs, 0, i), 0));
+ /* A NULL entry means the parameter goes both on the stack and in
+ registers. This can also be a MEM for targets that pass values
+ partially on the stack and partially in registers. */
+ if (reg && GET_CODE (reg) == REG)
+ use_reg (call_fusage, reg);
+ }
}
\f
/* Generate several move instructions to clear LEN bytes of block TO.