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