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).