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

--- Comment #6 from Dominik Vogt <vogt at linux dot vnet.ibm.com> ---
This experimental patch fixes the problem:

diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index aa45973..2e67cff 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -1897,6 +1897,8 @@ simplify_const_unary_operation (enum rtx_code code,
machine_mode mode,
             mode class.  */
          /* Don't perform the operation if flag_signaling_nans is on
             and the operand is a signaling NaN.  */
+         if (d.decimal)
+           real_convert (&d, GET_MODE (op), &d);
          if (GET_MODE_CLASS (mode) != GET_MODE_CLASS (GET_MODE (op))
              && !(HONOR_SNANS (mode) && REAL_VALUE_ISSIGNALING_NAN (d)))
            real_convert (&d, mode, &d);

Reply via email to