The attached change fixes PR target/77850 on hppa64.  The define for 
PAD_VARARGS_DOWN needs
to match the behaviour selected in pa_function_arg_padding().  That is complex 
and vector types should
not be padded down.

Tested on hppa64-hp-hpux11.11.  Committed to trunk, gcc-6 and gcc-5 branches.

Dave
--
John David Anglin       dave.ang...@bell.net

2017-03-06  John David Anglin  <dang...@gcc.gnu.org>

        PR target/77850
        * config/pa/pa-64.h (PAD_VARARGS_DOWN): Don't pad down complex and
        vector types.

Index: config/pa/pa-64.h
===================================================================
--- config/pa/pa-64.h   (revision 245894)
+++ config/pa/pa-64.h   (working copy)
@@ -83,7 +83,10 @@
    arguments are padded down when BYTES_BIG_ENDIAN is true.  We don't
    want aggregates padded down.  */
 
-#define PAD_VARARGS_DOWN (!AGGREGATE_TYPE_P (type))
+#define PAD_VARARGS_DOWN \
+  (!AGGREGATE_TYPE_P (type) \
+   && TREE_CODE (type) != COMPLEX_TYPE \
+   && TREE_CODE (type) != VECTOR_TYPE)
 
 /* In the PA architecture, it is not possible to directly move data
    between GENERAL_REGS and FP_REGS.  On the 32-bit port, we use the

Reply via email to