summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-04-14 22:32:28 +0000
committerDouglas Gregor <dgregor@apple.com>2011-04-14 22:32:28 +0000
commit40965fa78a991c41527a2bed0d8c5c822e3d5afe (patch)
treee528a5c008a3dfbc48355ffaba3a860bab5dbb8c /clang/lib
parenteb0e0b19b049bd8813c0faa36319a70ab0fb9b3f (diff)
downloadbcm5719-llvm-40965fa78a991c41527a2bed0d8c5c822e3d5afe.tar.gz
bcm5719-llvm-40965fa78a991c41527a2bed0d8c5c822e3d5afe.zip
When we transform a C++ exception declaration (e.g., for template
instantiation), be sure to add the transformed declaration into the current DeclContext. Also, remove the -Wuninitialized hack that works around this bug. Fixes <rdar://problem/9200676>. llvm-svn: 129544
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Analysis/UninitializedValues.cpp6
-rw-r--r--clang/lib/Sema/TreeTransform.h7
2 files changed, 5 insertions, 8 deletions
diff --git a/clang/lib/Analysis/UninitializedValues.cpp b/clang/lib/Analysis/UninitializedValues.cpp
index 59a42813fc5..a1a49b6757f 100644
--- a/clang/lib/Analysis/UninitializedValues.cpp
+++ b/clang/lib/Analysis/UninitializedValues.cpp
@@ -394,13 +394,7 @@ public:
void BlockStmt_VisitObjCForCollectionStmt(ObjCForCollectionStmt *fs);
bool isTrackedVar(const VarDecl *vd) {
-#if 1
- // FIXME: This is a temporary workaround to deal with the fact
- // that DeclContext's do not always contain all of their variables!
- return vals.hasEntry(vd);
-#else
return ::isTrackedVar(vd, cast<DeclContext>(ac.getDecl()));
-#endif
}
FindVarResult findBlockVarDecl(Expr *ex);
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h
index a639f5f3034..b6d38f618bf 100644
--- a/clang/lib/Sema/TreeTransform.h
+++ b/clang/lib/Sema/TreeTransform.h
@@ -1203,8 +1203,11 @@ public:
SourceLocation StartLoc,
SourceLocation IdLoc,
IdentifierInfo *Id) {
- return getSema().BuildExceptionDeclaration(0, Declarator,
- StartLoc, IdLoc, Id);
+ VarDecl *Var = getSema().BuildExceptionDeclaration(0, Declarator,
+ StartLoc, IdLoc, Id);
+ if (Var)
+ getSema().CurContext->addDecl(Var);
+ return Var;
}
/// \brief Build a new C++ catch statement.
OpenPOWER on IntegriCloud