diff options
author | Bernd Schmidt <bernd.schmidt@analog.com> | 2007-02-28 00:37:09 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2007-02-28 00:37:09 +0000 |
commit | 3b1bf459a3d09dd633df8e4d4af1b813709a021b (patch) | |
tree | 2db196400973ac84552b6e980f1b891ff8bea226 /gcc | |
parent | 9edd7f971b7d8ce12ac110ecb496d28a5ab4782f (diff) | |
download | gcc-3b1bf459a3d09dd633df8e4d4af1b813709a021b.zip gcc-3b1bf459a3d09dd633df8e4d4af1b813709a021b.tar.gz gcc-3b1bf459a3d09dd633df8e4d4af1b813709a021b.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/calls.c | 13 |
2 files changed, 17 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 888ac2e..a8f4170 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/calls.c b/gcc/calls.c index d9ba08c..8723e1f 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -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. */ |