The minmax_operator predicate also checks the operands of the operator to be appropriate, but the minmax_operator predicate is used for both integer and floating point operations. The predicate, as is, only matches the integer operands.
Taking out the check on XEXP(...) in minmax_operator seems to get around the ICE we're seeing, but is this the right thing to do? Or do we need separate predicates for integer vs floating point?