]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/37316 (Small structs are not passed correctly on hppa64-*-*)
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Mon, 27 Oct 2008 01:16:13 +0000 (01:16 +0000)
committerJohn David Anglin <danglin@gcc.gnu.org>
Mon, 27 Oct 2008 01:16:13 +0000 (01:16 +0000)
2008-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

PR middle-end/37316
* pa.c (function_arg_padding):  Pad complex and vector types upward in
64-bit runtime.
(function_arg): Use BLKmode for PARALLEL in 64-bit runtime.

From-SVN: r141380

gcc/ChangeLog
gcc/config/pa/pa.c

index 86502ad34104f4c58abd73180d7ca7d3b7ad34b7..7a3bf29e4cd3d378dbf397d7e37b7862e1764c0b 100644 (file)
@@ -1,3 +1,10 @@
+2008-10-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       PR middle-end/37316
+       * pa.c (function_arg_padding):  Pad complex and vector types upward in
+       64-bit runtime.
+       (function_arg): Use BLKmode for PARALLEL in 64-bit runtime.
+
 2008-10-26  Matthias Klose  <doko@ubuntu.com>
 
        * doc/install.texi: Document requirements on antlr.
index 3d3c96dc087313931e8cc3e42419eeaedfa8f235..e06a2ec4809b15197d3ea4cde4c2e36b6135f7af 100644 (file)
@@ -5888,7 +5888,11 @@ enum direction
 function_arg_padding (enum machine_mode mode, const_tree type)
 {
   if (mode == BLKmode
-      || (TARGET_64BIT && type && AGGREGATE_TYPE_P (type)))
+      || (TARGET_64BIT
+         && type
+         && (AGGREGATE_TYPE_P (type)
+             || TREE_CODE (type) == COMPLEX_TYPE
+             || TREE_CODE (type) == VECTOR_TYPE)))
     {
       /* Return none if justification is not required.  */
       if (type
@@ -9277,7 +9281,7 @@ function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type,
              offset += 8;
            }
 
-         return gen_rtx_PARALLEL (mode, gen_rtvec_v (ub, loc));
+         return gen_rtx_PARALLEL (BLKmode, gen_rtvec_v (ub, loc));
        }
      }
   else