aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2018-12-05 02:04:11 +0100
committerSegher Boessenkool <segher@gcc.gnu.org>2018-12-05 02:04:11 +0100
commit4526e5eccb78947d0d54c7470aa5b2e187bb515e (patch)
tree93d904ccafe497ec053a1f336d6f3ed1499fa11f /gcc
parent561094eeaea3cfabb67f7be8b775ab145dbb5282 (diff)
downloadgcc-4526e5eccb78947d0d54c7470aa5b2e187bb515e.zip
gcc-4526e5eccb78947d0d54c7470aa5b2e187bb515e.tar.gz
gcc-4526e5eccb78947d0d54c7470aa5b2e187bb515e.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ce91552..87ce4c6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 4f12558..91e0121 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;