calls.c (emit_library_call_value_1): Use mode of function parameter rather than that...
authorJan Beulich <jbeulich@novell.com>
Thu, 8 Jul 2004 05:58:35 +0000 (05:58 +0000)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 8 Jul 2004 05:58:35 +0000 (22:58 -0700)
        * calls.c (emit_library_call_value_1): Use mode of function parameter
        rather than that of argument since constants have none.

From-SVN: r84267

gcc/ChangeLog
gcc/calls.c

index 7519fac699877a6c9bd9b9a778f8864220e231d4..7e6ccaa7ab8619a635e07ef442051c35a3076d29 100644 (file)
@@ -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>
 
index 9f84199990e9956d8181f3c25ae5386f7ab9cd17..3f427fbe7d57588f7139b732f0ac57ed8738ee12 100644 (file)
@@ -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);