[DAG] FoldSetCC - reuse valuetype + ensure its simple.
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 11 Mar 2019 17:56:18 +0000 (17:56 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 11 Mar 2019 17:56:18 +0000 (17:56 +0000)
llvm-svn: 355847

llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

index d91d9d6..a87883b 100644 (file)
@@ -1970,7 +1970,7 @@ SDValue SelectionDAG::FoldSetCC(EVT VT, SDValue N1, SDValue N2,
   case ISD::SETUO:
   case ISD::SETUEQ:
   case ISD::SETUNE:
-    assert(!N1.getValueType().isInteger() && "Illegal setcc for integer!");
+    assert(!OpVT.isInteger() && "Illegal setcc for integer!");
     break;
   }
 
@@ -2054,11 +2054,10 @@ SDValue SelectionDAG::FoldSetCC(EVT VT, SDValue N1, SDValue N2,
     case ISD::SETUGE: return getBoolConstant(R!=APFloat::cmpLessThan, dl, VT,
                                              OpVT);
     }
-  } else if (N1CFP) {
+  } else if (N1CFP && OpVT.isSimple()) {
     // Ensure that the constant occurs on the RHS.
     ISD::CondCode SwappedCond = ISD::getSetCCSwappedOperands(Cond);
-    MVT CompVT = N1.getValueType().getSimpleVT();
-    if (!TLI->isCondCodeLegal(SwappedCond, CompVT))
+    if (!TLI->isCondCodeLegal(SwappedCond, OpVT.getSimpleVT()))
       return SDValue();
     return getSetCC(dl, VT, N2, N1, SwappedCond);
   } else if (N2CFP && N2CFP->getValueAPF().isNaN()) {