diff options
author | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-12-24 03:34:38 +0000 |
---|---|---|
committer | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-12-24 03:34:38 +0000 |
commit | 51f1ca852fcba427f4a83a1a90203f0b04051d10 (patch) | |
tree | 56c37f35c5658b35aea6bf2ecb91d371d5da8aa2 /clang/lib/Analysis/AnalysisContext.cpp | |
parent | fd97ce6573ef56b9e0f062a5f1fc4b8357bd46b2 (diff) | |
download | bcm5719-llvm-51f1ca852fcba427f4a83a1a90203f0b04051d10.tar.gz bcm5719-llvm-51f1ca852fcba427f4a83a1a90203f0b04051d10.zip |
As Ted suggested, record the callsite information with the StackFrameContext.
llvm-svn: 92121
Diffstat (limited to 'clang/lib/Analysis/AnalysisContext.cpp')
-rw-r--r-- | clang/lib/Analysis/AnalysisContext.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/clang/lib/Analysis/AnalysisContext.cpp b/clang/lib/Analysis/AnalysisContext.cpp index 05e5196c5b9..97e6d914d45 100644 --- a/clang/lib/Analysis/AnalysisContext.cpp +++ b/clang/lib/Analysis/AnalysisContext.cpp @@ -105,7 +105,7 @@ void LocationContext::ProfileCommon(llvm::FoldingSetNodeID &ID, } void StackFrameContext::Profile(llvm::FoldingSetNodeID &ID) { - Profile(ID, getAnalysisContext(), getParent(), CallSite); + Profile(ID, getAnalysisContext(), getParent(), CallSite, Block, Index); } void ScopeContext::Profile(llvm::FoldingSetNodeID &ID) { @@ -145,8 +145,18 @@ LocationContextManager::getLocationContext(AnalysisContext *ctx, const StackFrameContext* LocationContextManager::getStackFrame(AnalysisContext *ctx, const LocationContext *parent, - const Stmt *s) { - return getLocationContext<StackFrameContext, Stmt>(ctx, parent, s); + const Stmt *s, const CFGBlock *blk, + unsigned idx) { + llvm::FoldingSetNodeID ID; + StackFrameContext::Profile(ID, ctx, parent, s, blk, idx); + void *InsertPos; + StackFrameContext *L = + cast_or_null<StackFrameContext>(Contexts.FindNodeOrInsertPos(ID, InsertPos)); + if (!L) { + L = new StackFrameContext(ctx, parent, s, blk, idx); + Contexts.InsertNode(L, InsertPos); + } + return L; } const ScopeContext * |