David's fix for the AIX aggregate passing from yesterday unfortunately also triggers on powerpc64-linux. This fixes it.
David, looking at this once more, does this not need a "&& type" test on AIX? Before the AGGREGATE_TYPE_P test. I suspect it only didn't crash on AIX because AIX doesn't mind dereferencing address 0? (But committing this as is now, it fixes bootstrap). Tested on powerpc64-linux {-m32,-m64}. Segher 2018-12-05 Segher Boessenkool <seg...@kernel.crashing.org> * config/rs6000/rs6000.c (rs6000_function_arg): Only do the special aggregate handling on actual AIX, not on somewhat similar systems. --- gcc/config/rs6000/rs6000.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 4e35a05..ea7ff82 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -11990,7 +11990,7 @@ rs6000_function_arg (cumulative_args_t cum_v, machine_mode mode, cum->fregno++; if (USE_FP_FOR_ARG_P (cum, elt_mode) - && !(TARGET_AIX && AGGREGATE_TYPE_P (type))) + && !(TARGET_AIX && !TARGET_ELF && AGGREGATE_TYPE_P (type))) { rtx rvec[GP_ARG_NUM_REG + AGGR_ARG_NUM_REG + 1]; rtx r, off; @@ -12127,7 +12127,7 @@ rs6000_arg_partial_bytes (cumulative_args_t cum_v, machine_mode mode, align_words = rs6000_parm_start (mode, type, cum->words); if (USE_FP_FOR_ARG_P (cum, elt_mode) - && !(TARGET_AIX && AGGREGATE_TYPE_P (type))) + && !(TARGET_AIX && !TARGET_ELF && AGGREGATE_TYPE_P (type))) { unsigned long n_fpreg = (GET_MODE_SIZE (elt_mode) + 7) >> 3; -- 1.8.3.1