aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Bergner <bergner@vnet.ibm.com>2018-01-04 08:36:35 -0600
committerPeter Bergner <bergner@gcc.gnu.org>2018-01-04 08:36:35 -0600
commit87978504affcf9f2cf6fc245610e40541889271d (patch)
tree4faefc207c97ab5f7e5467e903cd9eab389c37b6
parentf7373fce65da8e99ad051481ba711756b69baa7e (diff)
downloadgcc-87978504affcf9f2cf6fc245610e40541889271d.zip
gcc-87978504affcf9f2cf6fc245610e40541889271d.tar.gz
gcc-87978504affcf9f2cf6fc245610e40541889271d.tar.bz2
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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c3
2 files changed, 8 insertions, 1 deletions
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 <bergner@vnet.ibm.com>
+
+ 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 <jakub@redhat.com>
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);