forked from OSchip/llvm-project
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
This commit is contained in:
parent
eb0e0b19b0
commit
40965fa78a
|
@ -394,13 +394,7 @@ public:
|
||||||
void BlockStmt_VisitObjCForCollectionStmt(ObjCForCollectionStmt *fs);
|
void BlockStmt_VisitObjCForCollectionStmt(ObjCForCollectionStmt *fs);
|
||||||
|
|
||||||
bool isTrackedVar(const VarDecl *vd) {
|
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()));
|
return ::isTrackedVar(vd, cast<DeclContext>(ac.getDecl()));
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FindVarResult findBlockVarDecl(Expr *ex);
|
FindVarResult findBlockVarDecl(Expr *ex);
|
||||||
|
|
|
@ -1203,8 +1203,11 @@ public:
|
||||||
SourceLocation StartLoc,
|
SourceLocation StartLoc,
|
||||||
SourceLocation IdLoc,
|
SourceLocation IdLoc,
|
||||||
IdentifierInfo *Id) {
|
IdentifierInfo *Id) {
|
||||||
return getSema().BuildExceptionDeclaration(0, Declarator,
|
VarDecl *Var = getSema().BuildExceptionDeclaration(0, Declarator,
|
||||||
StartLoc, IdLoc, Id);
|
StartLoc, IdLoc, Id);
|
||||||
|
if (Var)
|
||||||
|
getSema().CurContext->addDecl(Var);
|
||||||
|
return Var;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// \brief Build a new C++ catch statement.
|
/// \brief Build a new C++ catch statement.
|
||||||
|
|
Loading…
Reference in New Issue