diff options
Diffstat (limited to 'lib/StaticAnalyzer/Core/CoreEngine.cpp')
-rw-r--r-- | lib/StaticAnalyzer/Core/CoreEngine.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/StaticAnalyzer/Core/CoreEngine.cpp b/lib/StaticAnalyzer/Core/CoreEngine.cpp index e7c3d2a3b3..a350757a0f 100644 --- a/lib/StaticAnalyzer/Core/CoreEngine.cpp +++ b/lib/StaticAnalyzer/Core/CoreEngine.cpp @@ -214,9 +214,16 @@ bool CoreEngine::ExecuteWorkList(const LocationContext *L, unsigned Steps, assert (false && "BlockExit location never occur in forward analysis."); break; - case ProgramPoint::CallEnterKind: - SubEng.processCallEnter(cast<CallEnter>(Node->getLocation()), Node); + case ProgramPoint::CallEnterKind: { + CallEnter CEnter = cast<CallEnter>(Node->getLocation()); + if (AnalyzedCallees) + if (const CallExpr* CE = + dyn_cast_or_null<CallExpr>(CEnter.getCallExpr())) + if (const Decl *CD = CE->getCalleeDecl()) + AnalyzedCallees->insert(CD); + SubEng.processCallEnter(CEnter, Node); break; + } case ProgramPoint::CallExitKind: SubEng.processCallExit(Node); |