mips.c (mips_arg_info): If MUST_PASS_IN_STACK, skip any remaining register arguments.

* config/mips/mips.c (mips_arg_info): If MUST_PASS_IN_STACK,
	skip any remaining register arguments.

From-SVN: r72156
This commit is contained in:
Richard Sandiford 2003-10-06 17:48:25 +00:00 committed by Richard Sandiford
parent 6357135a0e
commit ac1605d6d3
2 changed files with 20 additions and 8 deletions

View File

@ -1,3 +1,8 @@
2003-10-06 Richard Sandiford <rsandifo@redhat.com>
* config/mips/mips.c (mips_arg_info): If MUST_PASS_IN_STACK,
skip any remaining register arguments.
2003-10-06 Ulrich Weigand <uweigand@de.ibm.com>
* reload.c (find_reloads_subreg_address): Use correct offset for

View File

@ -3644,15 +3644,22 @@ mips_arg_info (const CUMULATIVE_ARGS *cum, enum machine_mode mode,
even_reg_p = true;
}
/* Set REG_OFFSET to the register count we're interested in.
The EABI allocates the floating-point registers separately,
but the other ABIs allocate them like integer registers. */
info->reg_offset = (mips_abi == ABI_EABI && info->fpr_p
? cum->num_fprs
: cum->num_gprs);
if (mips_abi != ABI_EABI && MUST_PASS_IN_STACK (mode, type))
/* This argument must be passed on the stack. Eat up all the
remaining registers. */
info->reg_offset = MAX_ARGS_IN_REGISTERS;
else
{
/* Set REG_OFFSET to the register count we're interested in.
The EABI allocates the floating-point registers separately,
but the other ABIs allocate them like integer registers. */
info->reg_offset = (mips_abi == ABI_EABI && info->fpr_p
? cum->num_fprs
: cum->num_gprs);
if (even_reg_p)
info->reg_offset += info->reg_offset & 1;
if (even_reg_p)
info->reg_offset += info->reg_offset & 1;
}
/* The alignment applied to registers is also applied to stack arguments. */
info->stack_offset = cum->stack_words;