From 87978504affcf9f2cf6fc245610e40541889271d Mon Sep 17 00:00:00 2001 From: Peter Bergner Date: Thu, 4 Jan 2018 08:36:35 -0600 Subject: [PATCH] re PR target/83387 (PowerPC64: Infinite loops in do_reload() with -msoft-float) PR target/83387 * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not allow arguments in FP registers if TARGET_HARD_FLOAT is false. From-SVN: r256250 --- gcc/ChangeLog | 6 ++++++ gcc/config/rs6000/rs6000.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d932f05..8384c2e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-01-04 Peter Bergner + + PR target/83387 + * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not + allow arguments in FP registers if TARGET_HARD_FLOAT is false. + 2018-01-04 Jakub Jelinek PR debug/83666 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 6cba50f..46e00dd 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -11097,7 +11097,8 @@ rs6000_discover_homogeneous_aggregate (machine_mode mode, const_tree type, homogeneous aggregates; these types are handled via the targetm.calls.split_complex_arg mechanism. Complex types can be elements of homogeneous aggregates, however. */ - if (DEFAULT_ABI == ABI_ELFv2 && type && AGGREGATE_TYPE_P (type)) + if (TARGET_HARD_FLOAT && DEFAULT_ABI == ABI_ELFv2 && type + && AGGREGATE_TYPE_P (type)) { machine_mode field_mode = VOIDmode; int field_count = rs6000_aggregate_candidate (type, &field_mode); -- 2.7.4