https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94708

            Bug ID: 94708
           Summary: rtl combine should consider NaNs when generate fp
                    min/max
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: z.zhanghaijian at huawei dot com
  Target Milestone: ---

Rtl combine should consider NaNs when generate fp min/max.

There is detailed discussion information here:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94665

Proposed patch:

diff --git a/gcc/combine.c b/gcc/combine.c
index cff76cd3303..eaf93a05235 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -6643,7 +6643,8 @@ simplify_if_then_else (rtx x)

   /* Look for MIN or MAX.  */

-  if ((! FLOAT_MODE_P (mode) || flag_unsafe_math_optimizations)
+  if ((! FLOAT_MODE_P (mode)
+       || (flag_unsafe_math_optimizations && flag_finite_math_only))
       && comparison_p
       && rtx_equal_p (XEXP (cond, 0), true_rtx)
       && rtx_equal_p (XEXP (cond, 1), false_rtx)

Reply via email to