summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/AnalysisContext.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-12-04 00:50:10 +0000
committerTed Kremenek <kremenek@apple.com>2009-12-04 00:50:10 +0000
commit253882431e5486735e225bfa8fa432ddf94ed00c (patch)
tree98c4ceb9f53d22787db0a7108fe42dd2d37fbb83 /clang/lib/Analysis/AnalysisContext.cpp
parent5efba264cb5f71321fb2963fafe83e9017bf1480 (diff)
downloadbcm5719-llvm-253882431e5486735e225bfa8fa432ddf94ed00c.tar.gz
bcm5719-llvm-253882431e5486735e225bfa8fa432ddf94ed00c.zip
Refactor FoldingSet profiling code for LocationContexts, and add a new BlockInvocationContext to represent the invocation of a block.
llvm-svn: 90506
Diffstat (limited to 'clang/lib/Analysis/AnalysisContext.cpp')
-rw-r--r--clang/lib/Analysis/AnalysisContext.cpp33
1 files changed, 25 insertions, 8 deletions
diff --git a/clang/lib/Analysis/AnalysisContext.cpp b/clang/lib/Analysis/AnalysisContext.cpp
index 339e2c93cea..d79b4e7fe59 100644
--- a/clang/lib/Analysis/AnalysisContext.cpp
+++ b/clang/lib/Analysis/AnalysisContext.cpp
@@ -80,6 +80,10 @@ AnalysisContext *AnalysisContextManager::getContext(const Decl *D) {
return AC;
}
+//===----------------------------------------------------------------------===//
+// FoldingSet profiling.
+//===----------------------------------------------------------------------===//
+
void LocationContext::Profile(llvm::FoldingSetNodeID &ID, ContextKind k,
AnalysisContext *ctx,
const LocationContext *parent) {
@@ -88,18 +92,31 @@ void LocationContext::Profile(llvm::FoldingSetNodeID &ID, ContextKind k,
ID.AddPointer(parent);
}
-void StackFrameContext::Profile(llvm::FoldingSetNodeID &ID,AnalysisContext *ctx,
- const LocationContext *parent, const Stmt *s) {
- LocationContext::Profile(ID, StackFrame, ctx, parent);
- ID.AddPointer(s);
+void LocationContext::ProfileCommon(llvm::FoldingSetNodeID &ID,
+ ContextKind ck,
+ AnalysisContext *ctx,
+ const LocationContext *parent,
+ const void* data) {
+ LocationContext::Profile(ID, ck, ctx, parent);
+ ID.AddPointer(data);
}
-void ScopeContext::Profile(llvm::FoldingSetNodeID &ID, AnalysisContext *ctx,
- const LocationContext *parent, const Stmt *s) {
- LocationContext::Profile(ID, Scope, ctx, parent);
- ID.AddPointer(s);
+void StackFrameContext::Profile(llvm::FoldingSetNodeID &ID) {
+ Profile(ID, getAnalysisContext(), getParent(), CallSite);
}
+void ScopeContext::Profile(llvm::FoldingSetNodeID &ID) {
+ Profile(ID, getAnalysisContext(), getParent(), Enter);
+}
+
+void BlockInvocationContext::Profile(llvm::FoldingSetNodeID &ID) {
+ Profile(ID, getAnalysisContext(), getParent(), BD);
+}
+
+//===----------------------------------------------------------------------===//
+// Cleanup.
+//===----------------------------------------------------------------------===//
+
LocationContextManager::~LocationContextManager() {
clear();
}
OpenPOWER on IntegriCloud