https://gcc.gnu.org/g:55f6f9a232b9203cddab5420a8b4dedd8b578ed4

commit 55f6f9a232b9203cddab5420a8b4dedd8b578ed4
Author: Michael Meissner <meiss...@linux.ibm.com>
Date:   Wed May 14 11:00:31 2025 -0400

    Try to fix crash #2
    
    2025-05-14  Michael Meissner  <meiss...@linux.ibm.com>
    
    gcc/
    
            PR target/118541
            * config/rs6000/rs6000.cc (rs6000_reverse_condition): Update test.
    xs

Diff:
---
 gcc/config/rs6000/rs6000.cc | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc
index 210443b05729..c41a58545d41 100644
--- a/gcc/config/rs6000/rs6000.cc
+++ b/gcc/config/rs6000/rs6000.cc
@@ -15379,14 +15379,19 @@ rs6000_reverse_condition (machine_mode mode,
      cmove, and the x{s,v}cmp{eq,gt,ge}{dp,qp} instructions will trap if one of
      the arguments is a signalling NaN.  */
 
-  if (mode == CCFPmode
-      && (code == UNLT || code == UNLE || code == UNGT || code == UNGE
-         || code == UNEQ || code == LTGT))
+  if (mode == CCFPmode)
     {
-      if (ordered_cmp_ok == rev_cond_ordered::no_ordered)
-       return UNKNOWN;
+      if (code == UNLT || code == UNLE || code == UNGT || code == UNGE
+         || code == UNEQ || code == LTGT)
+       {
+         if (ordered_cmp_ok == rev_cond_ordered::no_ordered)
+           return UNKNOWN;
+
+         return reverse_condition_maybe_unordered (code);
+       }
 
-      return reverse_condition_maybe_unordered (code);
+      else if (!flag_finite_math_only)
+       return reverse_condition_maybe_unordered (code);
     }
 
   return reverse_condition (code);

Reply via email to