re PR target/83387 (PowerPC64: Infinite loops in do_reload() with -msoft-float)
authorPeter Bergner <bergner@vnet.ibm.com>
Thu, 4 Jan 2018 14:36:35 +0000 (08:36 -0600)
committerPeter Bergner <bergner@gcc.gnu.org>
Thu, 4 Jan 2018 14:36:35 +0000 (08:36 -0600)
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
gcc/config/rs6000/rs6000.c

index d932f05d8be40f64f80c199082610b396ebb7cdb..8384c2edac45fa9c5fb925bc7ee66fd4e7368197 100644 (file)
@@ -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
index 6cba50fe83a1337aeb741f3ceefa8a6ec660e0ad..46e00dd9a1bb26a2bc8b6c5ac795605218b315f5 100644 (file)
@@ -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);