]> granicus.if.org Git - clang/commitdiff
Remove dead code in IdempotentOperationChecker.
authorTed Kremenek <kremenek@apple.com>
Mon, 14 Feb 2011 18:05:07 +0000 (18:05 +0000)
committerTed Kremenek <kremenek@apple.com>
Mon, 14 Feb 2011 18:05:07 +0000 (18:05 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125497 91177308-0d34-0410-b5e6-96231b3b80d8

lib/StaticAnalyzer/Checkers/IdempotentOperationChecker.cpp

index 0b8ebfd285cfe2e675d0336f9c358864ed3737da..8f47f9eb4fed48328da9fd877ba3548c87bbe5d4 100644 (file)
@@ -91,9 +91,6 @@ private:
   static bool isConstantOrPseudoConstant(const DeclRefExpr *DR,
                                          AnalysisContext *AC);
   static bool containsNonLocalVarDecl(const Stmt *S);
-  void getLastRelevantNodes(const CFGBlock *Begin,
-                            const ExplodedNode *N,
-                            ExplodedNodeSet &result);
 
   // Hash table and related data structures
   struct BinaryOperatorData {
@@ -762,49 +759,6 @@ bool IdempotentOperationChecker::containsNonLocalVarDecl(const Stmt *S) {
   return false;
 }
 
-// Returns the successor nodes of N whose CFGBlocks cannot reach N's CFGBlock.
-// This effectively gives us a set of points in the ExplodedGraph where
-// subsequent execution could not affect the idempotent operation on this path.
-// This is useful for displaying paths after the point of the error, providing
-// an example of how this idempotent operation cannot change.
-void IdempotentOperationChecker::getLastRelevantNodes(
-    const CFGBlock *Begin, const ExplodedNode *node,
-    ExplodedNodeSet &result) {
-  llvm::SmallVector<const ExplodedNode *, 11> worklist;
-  llvm::DenseMap<const ExplodedNode *, unsigned> visited;
-
-  worklist.push_back(node);
-
-  while (!worklist.empty()) {
-    node = worklist.back();
-    worklist.pop_back();
-
-    // Was this node previously visited?
-    unsigned &visitFlag = visited[node];
-    if (visitFlag)
-      continue;
-    visitFlag = 1;    
-
-    const ProgramPoint &PP = node->getLocation();
-    if (const BlockEntrance *BE = dyn_cast<BlockEntrance>(&PP)) {
-      // Get the CFGBlock and test the reachability
-      const CFGBlock *CB = BE->getBlock();
-
-      // If we cannot reach the beginning CFGBlock from this block, then we are
-      // finished
-      if (!CRA->isReachable(CB, Begin)) {
-        result.Add(const_cast<ExplodedNode *>(node));
-        continue;
-      }
-    }
-
-    // Add unvisited children to the worklist
-    for (ExplodedNode::const_succ_iterator i = node->succ_begin(),
-         e = node->succ_end(); i != e; ++i)
-      worklist.push_back(*i);
-  }
-}
-
 bool IdempotentOperationChecker::CFGReachabilityAnalysis::isReachable(
                                                           const CFGBlock *Src,
                                                           const CFGBlock *Dst) {