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
This commit is contained in:
Segher Boessenkool 2018-12-05 02:04:11 +01:00 committed by Segher Boessenkool
parent 561094eeae
commit 4526e5eccb
2 changed files with 8 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2018-12-05 Segher Boessenkool <segher@kernel.crashing.org>
* 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 <vmakarov@redhat.com>
PR rtl-optimization/88317

View File

@ -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;