HexagonLoopIdiomRecognition - silence static analyzer dyn_cast<> null dereference...
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 23 Sep 2019 15:36:24 +0000 (15:36 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 23 Sep 2019 15:36:24 +0000 (15:36 +0000)
llvm-svn: 372619

llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp

index 18be033..bda3ecc 100644 (file)
@@ -632,9 +632,9 @@ Value *PolynomialMultiplyRecognize::getCountIV(BasicBlock *BB) {
     if (!isa<ConstantInt>(InitV) || !cast<ConstantInt>(InitV)->isZero())
       continue;
     Value *IterV = PN->getIncomingValueForBlock(BB);
-    if (!isa<BinaryOperator>(IterV))
-      continue;
     auto *BO = dyn_cast<BinaryOperator>(IterV);
+    if (!BO)
+      continue;
     if (BO->getOpcode() != Instruction::Add)
       continue;
     Value *IncV = nullptr;
@@ -2020,7 +2020,7 @@ bool HexagonLoopIdiomRecognize::processCopyingStore(Loop *CurLoop,
   // See if the pointer expression is an AddRec like {base,+,1} on the current
   // loop, which indicates a strided load.  If we have something else, it's a
   // random load we can't handle.
-  LoadInst *LI = dyn_cast<LoadInst>(SI->getValueOperand());
+  auto *LI = cast<LoadInst>(SI->getValueOperand());
   auto *LoadEv = cast<SCEVAddRecExpr>(SE->getSCEV(LI->getPointerOperand()));
 
   // The trip count of the loop and the base pointer of the addrec SCEV is