On 02/23/2017 02:36 PM, Jakub Jelinek wrote:
and both UNLT and GE can be reversed. But if the arguments of the condition are canonicalized, we run into: /* Test for an integer condition, or a floating-point comparison in which NaNs can be ignored. */ if (CONST_INT_P (arg0) || (GET_MODE (arg0) != VOIDmode && GET_MODE_CLASS (mode) != MODE_CC && !HONOR_NANS (mode))) return reverse_condition (code); and thus always return UNKNOWN.
So... do you think we could add (in gcc-8, probably, although if it fixes this regression...)
else if (GET_MODE (arg0) != VOIDmode && GET_MODE_CLASS (mode) != MODE_CC && HONOR_NANS (mode)) return reverse_condition_maybe_unordered (code); to make this work? Bernd