diff options
author | Richard Henderson <rth@redhat.com> | 2004-07-08 05:58:35 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 2004-07-08 05:58:35 +0000 |
commit | 0c8cde9d721d7a52546f06b93d4aed39e9564412 (patch) | |
tree | 1c2f41ff8ad1f2a922f2ee2fde5a0b49fbf2ed8d | |
parent | e6a3519a575b580d4bf3321d6a2a288f84ac7759 (diff) |
* calls.c (emit_library_call_value_1): Use mode of function parameter
rather than that of argument since constants have none.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@84267 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/calls.c | 3 |
2 files changed, 7 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7519fac6998..7e6ccaa7ab8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,7 +1,10 @@ 2004-07-06 Jan Beulich <jbeulich@novell.com> - * config/i386/i386.c (ix86_gimplify_va_arg): Don't need temporary for - passing arguments the containers for which are registers. + * config/i386/i386.c (ix86_gimplify_va_arg): Don't need temporary for + passing arguments the containers for which are registers. + + * calls.c (emit_library_call_value_1): Use mode of function parameter + rather than that of argument since constants have none. 2004-07-08 Alexandre Oliva <aoliva@redhat.com> diff --git a/gcc/calls.c b/gcc/calls.c index 9f84199990e..3f427fbe7d5 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -3888,6 +3888,7 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value, are to be pushed. */ for (count = 0; count < nargs; count++, argnum += inc) { + enum machine_mode mode = argvec[argnum].mode; rtx val = argvec[argnum].value; rtx reg = argvec[argnum].reg; int partial = argvec[argnum].partial; @@ -3895,7 +3896,7 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value, /* Handle calls that pass values in multiple non-contiguous locations. The PA64 has examples of this for library calls. */ if (reg != 0 && GET_CODE (reg) == PARALLEL) - emit_group_load (reg, val, NULL_TREE, GET_MODE_SIZE (GET_MODE (val))); + emit_group_load (reg, val, NULL_TREE, GET_MODE_SIZE (mode)); else if (reg != 0 && partial == 0) emit_move_insn (reg, val); |