OSDN Git Service

2008-10-26 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
authordanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 27 Oct 2008 01:16:13 +0000 (01:16 +0000)
committerdanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 27 Oct 2008 01:16:13 +0000 (01:16 +0000)
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.

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

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

index 86502ad..7a3bf29 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 3d3c96d..e06a2ec 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