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

--- Comment #7 from Uroš Bizjak <ubizjak at gmail dot com> ---
To illustrate the problem, following patch fixes the failure:

--cut here--
Index: combine.c
===================================================================
--- combine.c   (revision 254011)
+++ combine.c   (working copy)
@@ -6784,7 +6784,7 @@ simplify_set (rtx x)
               && op0 == XEXP (inner_compare, 0)
               && op1 == XEXP (inner_compare, 1))
        compare_mode = GET_MODE (inner_compare);
-      else
+      else if (!FLOAT_MODE_P (GET_MODE (op0)))
        compare_mode = SELECT_CC_MODE (new_code, op0, op1);

       /* If the mode changed, we have to change SET_DEST, the mode in the
--cut here--

The patch avoids mode changes for floating-point operands.

(It will work for x86, since it has all comparisons trapping and non-trapping).

Reply via email to