diff options
author | Ted Kremenek <kremenek@apple.com> | 2012-01-07 00:00:59 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2012-01-07 00:00:59 +0000 |
commit | 894212e9510299abb203801e014fec76b7926a05 (patch) | |
tree | e9065e0c758417708b1d0ebc5605bc6aa3e6b862 /lib/StaticAnalyzer/Core/CoreEngine.cpp | |
parent | d87a0cd2b3e1c9e9f01212875f4cbe5b7bb7ab57 (diff) |
[analyzer] Remove CallExitNodeBuilder, and have ExprEngine::processCallExit() do the work manually. This is a nice simplification.
Along the way, fix Exprengine::processCallExit() to also perform the postStmt callback for checkers for CallExprs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147697 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/StaticAnalyzer/Core/CoreEngine.cpp')
-rw-r--r-- | lib/StaticAnalyzer/Core/CoreEngine.cpp | 18 |
1 files changed, 1 insertions, 17 deletions
diff --git a/lib/StaticAnalyzer/Core/CoreEngine.cpp b/lib/StaticAnalyzer/Core/CoreEngine.cpp index bf4bf2db88..c505c44a97 100644 --- a/lib/StaticAnalyzer/Core/CoreEngine.cpp +++ b/lib/StaticAnalyzer/Core/CoreEngine.cpp @@ -254,8 +254,7 @@ void CoreEngine::HandleCallEnter(const CallEnter &L, const CFGBlock *Block, } void CoreEngine::HandleCallExit(const CallExit &L, ExplodedNode *Pred) { - CallExitNodeBuilder Builder(*this, Pred); - SubEng.processCallExit(Builder); + SubEng.processCallExit(Pred); } void CoreEngine::HandleBlockEdge(const BlockEdge &L, ExplodedNode *Pred) { @@ -707,18 +706,3 @@ void CallEnterNodeBuilder::generateNode(const ProgramState *state) { if (isNew) Eng.WList->enqueue(Node); } - -void CallExitNodeBuilder::generateNode(const ProgramState *state) { - // Get the callee's location context. - const StackFrameContext *LocCtx - = cast<StackFrameContext>(Pred->getLocationContext()); - // When exiting an implicit automatic obj dtor call, the callsite is the Stmt - // that triggers the dtor. - PostStmt Loc(LocCtx->getCallSite(), LocCtx->getParent()); - bool isNew; - ExplodedNode *Node = Eng.G->getNode(Loc, state, false, &isNew); - Node->addPredecessor(const_cast<ExplodedNode*>(Pred), *Eng.G); - if (isNew) - Eng.WList->enqueue(Node, LocCtx->getCallSiteBlock(), - LocCtx->getIndex() + 1); -} |