summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/AnalysisContext.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-08-21 23:25:54 +0000
committerTed Kremenek <kremenek@apple.com>2009-08-21 23:25:54 +0000
commit608677a2e10538e2b88c533b5f409e5ab7adad87 (patch)
tree33993a53e0ca399ac83885b162d23c953076669c /clang/lib/Analysis/AnalysisContext.cpp
parent05155d8d7b215f68c6e5a9cfb8ee966a03c1d598 (diff)
downloadbcm5719-llvm-608677a2e10538e2b88c533b5f409e5ab7adad87.tar.gz
bcm5719-llvm-608677a2e10538e2b88c533b5f409e5ab7adad87.zip
Remove 'SelfRegion' field from both BasicStoreManager and RegionStoreManager.
SelfRegion represented the object bound to 'self' (when analyzing Objective-C methods) upon entry to a method. Having this region stored on the side ignores the current stack frame that we might be analyzing (among other things), and is a problem for interprocedural analysis. For RegionStoreManager, the value for SelfRegion is just lazily created. For BasicStoreManager, the value for SelfRegion is bound eagerly to 'self', but no explicit tracking of SelfRegion on the side is made. As part of this change, remove the restriction in BasicStoreManager that we only track ivars for 'self'. This shouldn't actually change anything in terms of precision, and simplifies the logic. llvm-svn: 79694
Diffstat (limited to 'clang/lib/Analysis/AnalysisContext.cpp')
-rw-r--r--clang/lib/Analysis/AnalysisContext.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Analysis/AnalysisContext.cpp b/clang/lib/Analysis/AnalysisContext.cpp
index 996d5c879ac..324fdf2dce8 100644
--- a/clang/lib/Analysis/AnalysisContext.cpp
+++ b/clang/lib/Analysis/AnalysisContext.cpp
@@ -37,6 +37,13 @@ Stmt *AnalysisContext::getBody() {
llvm::llvm_unreachable("unknown code decl");
}
+const ImplicitParamDecl *AnalysisContext::getSelfDecl() const {
+ if (const ObjCMethodDecl *MD = dyn_cast<ObjCMethodDecl>(D))
+ return MD->getSelfDecl();
+
+ return NULL;
+}
+
CFG *AnalysisContext::getCFG() {
if (!cfg)
cfg = CFG::buildCFG(getBody(), &D->getASTContext());
OpenPOWER on IntegriCloud