From: Douglas Gregor Date: Thu, 14 Apr 2011 22:32:28 +0000 (+0000) Subject: When we transform a C++ exception declaration (e.g., for template X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=efdf988611c1eb02770643cd3fabd5df2f579353;p=clang 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 . git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129544 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/UninitializedValues.cpp b/lib/Analysis/UninitializedValues.cpp index 59a42813fc..a1a49b6757 100644 --- a/lib/Analysis/UninitializedValues.cpp +++ b/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(ac.getDecl())); -#endif } FindVarResult findBlockVarDecl(Expr *ex); diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h index a639f5f303..b6d38f618b 100644 --- a/lib/Sema/TreeTransform.h +++ b/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.