[InstCombine] Don't assume m_Mul gives back an Instruction
[oota-llvm.git] / lib / Transforms / InstCombine / InstCombineCompares.cpp
index 6e4336ef87543fb88d53f49ae3342748d30e73cd..b3366bb988896aceead3ca73ab526b9564cee828 100644 (file)
@@ -2246,7 +2246,9 @@ static Instruction *ProcessUMulZExtIdiom(ICmpInst &I, Value *MulVal,
 
   assert(I.getOperand(0) == MulVal || I.getOperand(1) == MulVal);
   assert(I.getOperand(0) == OtherVal || I.getOperand(1) == OtherVal);
-  Instruction *MulInstr = cast<Instruction>(MulVal);
+  auto *MulInstr = dyn_cast<Instruction>(MulVal);
+  if (!MulInstr)
+    return nullptr;
   assert(MulInstr->getOpcode() == Instruction::Mul);
 
   auto *LHS = cast<ZExtOperator>(MulInstr->getOperand(0)),