aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2004-07-08 05:58:35 +0000
committerRichard Henderson <rth@gcc.gnu.org>2004-07-07 22:58:35 -0700
commitff15c351eda434655cde7e6153b1a27db404a86d (patch)
tree1c2f41ff8ad1f2a922f2ee2fde5a0b49fbf2ed8d /gcc
parente52a6df533ec893321481360fc79624c7bd54a0f (diff)
downloadgcc-ff15c351eda434655cde7e6153b1a27db404a86d.zip
gcc-ff15c351eda434655cde7e6153b1a27db404a86d.tar.gz
gcc-ff15c351eda434655cde7e6153b1a27db404a86d.tar.bz2
calls.c (emit_library_call_value_1): Use mode of function parameter rather than that of argument since constants...
* calls.c (emit_library_call_value_1): Use mode of function parameter rather than that of argument since constants have none. From-SVN: r84267
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/calls.c3
2 files changed, 7 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7519fac..7e6ccaa 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 9f84199..3f427fb 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);