]> granicus.if.org Git - clang/commitdiff
Remove ProgramPoint parameter from GenericNodeBuilder::generateNode().
authorTed Kremenek <kremenek@apple.com>
Tue, 11 Jan 2011 16:53:44 +0000 (16:53 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 11 Jan 2011 16:53:44 +0000 (16:53 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123240 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Analysis/ProgramPoint.h
include/clang/StaticAnalyzer/PathSensitive/CoreEngine.h
lib/StaticAnalyzer/Checkers/ExprEngine.cpp

index 36e40164c0e5ed8da2628c0fa275623a23b4b603..9656803b635cf21ffbeac2661389e975f7e46bba 100644 (file)
@@ -119,6 +119,12 @@ public:
     return B->empty() ? CFGElement() : B->front();
   }
   
+  /// Create a new BlockEntrance object that is the same as the original
+  /// except for using the specified tag value.
+  BlockEntrance withTag(const void *tag) {
+    return BlockEntrance(getBlock(), getLocationContext(), tag);
+  }
+  
   static bool classof(const ProgramPoint* Location) {
     return Location->getKind() == BlockEntranceKind;
   }
index 44a321c2f73ed2779ba90ae0a41672cf7918ade8..bc920d5cb1aaaf819ecb4354a96bd6d20d9edaf3 100644 (file)
@@ -428,18 +428,19 @@ public:
   }
 };
 
-template <typename PP>
+template <typename PP_T>
 class GenericNodeBuilder : public GenericNodeBuilderImpl {
 public:
-  GenericNodeBuilder(CoreEngine &eng, ExplodedNode *pr, const PP &p)
+  GenericNodeBuilder(CoreEngine &eng, ExplodedNode *pr, const PP_T &p)
     : GenericNodeBuilderImpl(eng, pr, p) {}
 
   ExplodedNode *generateNode(const GRState *state, ExplodedNode *pred,
-                             PP programPoint, bool asSink) {
-    return generateNodeImpl(state, pred, programPoint, asSink);
+                             const void *tag, bool asSink) {
+    return generateNodeImpl(state, pred, cast<PP_T>(pp).withTag(tag),
+                            asSink);
   }
   
-  const PP &getProgramPoint() const { return cast<PP>(pp); }
+  const PP_T &getProgramPoint() const { return cast<PP_T>(pp); }
 };
 
 class EndOfFunctionNodeBuilder {
index e6d9d715d4384aa484afeca7a73e99a0c00ded6e..3f9eb1b451e6ee9c8595303296f8eb512d818601 100644 (file)
@@ -1089,9 +1089,7 @@ void ExprEngine::processCFGBlockEntrance(ExplodedNodeSet &dstNodes,
                        block->getBlockID()) >= AMgr.getMaxVisit()) {
 
     static int tag = 0;
-    const BlockEntrance &BE = nodeBuilder.getProgramPoint();
-    BlockEntrance BE_tagged(BE.getBlock(), BE.getLocationContext(), &tag);
-    nodeBuilder.generateNode(pred->getState(), pred, BE_tagged, true);
+    nodeBuilder.generateNode(pred->getState(), pred, &tag, true);
   }
 }