aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Analysis/AnalysisDeclContext.cpp
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2013-05-18 02:26:50 +0000
committerJordan Rose <jordan_rose@apple.com>2013-05-18 02:26:50 +0000
commit433b0f5455416fb61ee81d4cb26f2e64678a6ecd (patch)
tree6a1cfc2857e82f04b4664b9e5b3a25cd2c6dfbb8 /clang/lib/Analysis/AnalysisDeclContext.cpp
parent5ba473afb005343f7676723a05186233a6f1906f (diff)
downloadllvm-433b0f5455416fb61ee81d4cb26f2e64678a6ecd.zip
llvm-433b0f5455416fb61ee81d4cb26f2e64678a6ecd.tar.gz
llvm-433b0f5455416fb61ee81d4cb26f2e64678a6ecd.tar.bz2
Revert "[analyzer; alternate edges] improve support for edges with PseudoObjectExprs."
Ted and I spent a long time discussing this today and found out that neither the existing code nor the new code was doing what either of us thought it was, which is never good. The good news is we found a much simpler way to fix the motivating test case (an ObjCSubscriptExpr). This reverts r182083, but pieces of it will come back in subsequent commits. llvm-svn: 182185
Diffstat (limited to 'clang/lib/Analysis/AnalysisDeclContext.cpp')
-rw-r--r--clang/lib/Analysis/AnalysisDeclContext.cpp30
1 files changed, 8 insertions, 22 deletions
diff --git a/clang/lib/Analysis/AnalysisDeclContext.cpp b/clang/lib/Analysis/AnalysisDeclContext.cpp
index 316892e..5ff7842 100644
--- a/clang/lib/Analysis/AnalysisDeclContext.cpp
+++ b/clang/lib/Analysis/AnalysisDeclContext.cpp
@@ -212,34 +212,20 @@ void AnalysisDeclContext::dumpCFG(bool ShowColors) {
getCFG()->dump(getASTContext().getLangOpts(), ShowColors);
}
-static ParentMap *constructParentMap(bool isSemantic,
- Stmt *Body,
- const Decl *D) {
- ParentMap *PM = new ParentMap(Body, isSemantic);
- if (const CXXConstructorDecl *C = dyn_cast<CXXConstructorDecl>(D)) {
- for (CXXConstructorDecl::init_const_iterator I = C->init_begin(),
- E = C->init_end();
- I != E; ++I) {
- PM->addStmt((*I)->getInit());
- }
- }
- return PM;
-}
-
ParentMap &AnalysisDeclContext::getParentMap() {
if (!PM) {
- PM.reset(constructParentMap(false, getBody(), getDecl()));
+ PM.reset(new ParentMap(getBody()));
+ if (const CXXConstructorDecl *C = dyn_cast<CXXConstructorDecl>(getDecl())) {
+ for (CXXConstructorDecl::init_const_iterator I = C->init_begin(),
+ E = C->init_end();
+ I != E; ++I) {
+ PM->addStmt((*I)->getInit());
+ }
+ }
}
return *PM;
}
-ParentMap &AnalysisDeclContext::getSemanticParentMap() {
- if (!SemanticPM) {
- SemanticPM.reset(constructParentMap(true, getBody(), getDecl()));
- }
- return *SemanticPM;
-}
-
PseudoConstantAnalysis *AnalysisDeclContext::getPseudoConstantAnalysis() {
if (!PCA)
PCA.reset(new PseudoConstantAnalysis(getBody()));