calls.c (emit_library_call_value_1): Handle partial registers correctly when building up CALL_INSN_FUNCTION_USAGE.

* calls.c (emit_library_call_value_1): Handle partial registers
	correctly when building up CALL_INSN_FUNCTION_USAGE.

From-SVN: r122396
This commit is contained in:
Bernd Schmidt 2007-02-28 00:37:09 +00:00 committed by Bernd Schmidt
parent 9edd7f971b
commit 3b1bf459a3
2 changed files with 17 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2007-02-28 Bernd Schmidt <bernd.schmidt@analog.com>
* calls.c (emit_library_call_value_1): Handle partial registers
correctly when building up CALL_INSN_FUNCTION_USAGE.
2007-02-27 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* pa/predicates.md (move_src_operand): Allow zero for mode.

View File

@ -3774,7 +3774,18 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value,
if (reg != 0 && GET_CODE (reg) == PARALLEL)
use_group_regs (&call_fusage, reg);
else if (reg != 0)
use_reg (&call_fusage, reg);
{
int partial = argvec[count].partial;
if (partial)
{
int nregs;
gcc_assert (partial % UNITS_PER_WORD == 0);
nregs = partial / UNITS_PER_WORD;
use_regs (&call_fusage, REGNO (reg), nregs);
}
else
use_reg (&call_fusage, reg);
}
}
/* Pass the function the address in which to return a structure value. */