From 4526e5eccb78947d0d54c7470aa5b2e187bb515e Mon Sep 17 00:00:00 2001 From: Segher Boessenkool Date: Wed, 5 Dec 2018 02:04:11 +0100 Subject: [PATCH] rs6000: Fix AIX aggregate passing fix David's fix for the AIX aggregate passing from yesterday unfortunately also triggers on powerpc64-linux. This fixes it. * config/rs6000/rs6000.c (rs6000_function_arg): Only do the special aggregate handling on actual AIX, not on somewhat similar systems. (rs6000_arg_partial_bytes): Ditto. From-SVN: r266811 --- gcc/ChangeLog | 6 ++++++ gcc/config/rs6000/rs6000.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ce915527e10..87ce4c63803 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-12-05 Segher Boessenkool + + * config/rs6000/rs6000.c (rs6000_function_arg): Only do the special + aggregate handling on actual AIX, not on somewhat similar systems. + (rs6000_arg_partial_bytes): Ditto. + 2018-12-04 Vladimir Makarov PR rtl-optimization/88317 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 4f12558b0a8..91e012176e6 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; -- 2.30.2