Index: lib/CodeGen/SelectionDAG/SelectionDAG.cpp =================================================================== --- lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -1912,6 +1912,18 @@ } } + // InstCombine implements: + // + // icmp X, X -> true/false + // X icmp undef -> true/false. For example, icmp ugt %X, undef -> false + // because X could be 0. + // + // fcmp pred X, undef -> undef + // + // Do the same here + if (N1 == N2 || N1.getOpcode() == ISD::UNDEF || N1.getOpcode() == ISD::UNDEF) + return getConstant(isTrueWhenEqual(Cond), VT); + // Could not fold it. return SDValue(); }