OSDN Git Service

* sparc.c (function_arg_record_value): Take a MODE arg with which to
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Jul 1998 04:27:39 +0000 (04:27 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Jul 1998 04:27:39 +0000 (04:27 +0000)
        create the PARALLEL.  Update all callers.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@20866 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/sparc/sparc.c

index 7fba7a8..f468786 100644 (file)
@@ -1,3 +1,8 @@
+Wed Jul  1 04:22:23 1998  Richard Henderson  <rth@cygnus.com>
+
+       * sparc.c (function_arg_record_value): Take a MODE arg with which to
+       create the PARALLEL.  Update all callers.
+
 Wed Jul  1 04:10:35 1998  Richard Henderson  <rth@cygnus.com>
 
        * expr.c (expand_assignment, store_constructor, expand_expr): Use
index 343fac8..92b2049 100644 (file)
@@ -4223,8 +4223,9 @@ function_arg_record_value_2 (type, startbitpos, parms)
 }
 
 static rtx
-function_arg_record_value (type, slotno, named, regbase)
+function_arg_record_value (type, mode, slotno, named, regbase)
      tree type;
+     enum machine_mode mode;
      int slotno, named, regbase;
 {
   HOST_WIDE_INT typesize = int_size_in_bytes (type);
@@ -4266,7 +4267,7 @@ function_arg_record_value (type, slotno, named, regbase)
             anyway so the rest of gcc doesn't go nuts.  Returning a PARALLEL
             leads to breakage due to the fact that there are zero bytes to
             load.  */
-         return gen_rtx_REG (DImode, regbase);
+         return gen_rtx_REG (mode, regbase);
        }
       else
        {
@@ -4280,7 +4281,7 @@ function_arg_record_value (type, slotno, named, regbase)
   if (nregs == 0)
     abort();
 
-  parms.ret = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (nregs));
+  parms.ret = gen_rtx_PARALLEL (mode, rtvec_alloc (nregs));
 
   /* Fill in the entries.  */
   parms.nregs = 0;
@@ -4412,7 +4413,7 @@ function_arg (cum, mode, type, named, incoming_p)
       if (int_size_in_bytes (type) > 16)
        abort (); /* shouldn't get here */
 
-      return function_arg_record_value (type, slotno, named, regbase);
+      return function_arg_record_value (type, mode, slotno, named, regbase);
     }
   else if (type && TREE_CODE (type) == UNION_TYPE)
     {
@@ -4642,7 +4643,7 @@ function_value (type, mode, incoming_p)
          if (int_size_in_bytes (type) > 32)
            abort (); /* shouldn't get here */
 
-         return function_arg_record_value (type, 0, 1, regbase);
+         return function_arg_record_value (type, mode, 0, 1, regbase);
        }
       else if (TREE_CODE (type) == UNION_TYPE)
        {