diff options
author | John McCall <rjmccall@apple.com> | 2009-12-22 22:26:37 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2009-12-22 22:26:37 +0000 |
commit | a1d85507786a652c1bd551252c0d3d7ed90b7306 (patch) | |
tree | e7e9cda692fde1838eab7d09042cfc6236155561 /clang/lib/Sema/SemaTemplateInstantiateDecl.cpp | |
parent | b6ea60872da20af2a74863dabde83644683100fc (diff) | |
download | bcm5719-llvm-a1d85507786a652c1bd551252c0d3d7ed90b7306.tar.gz bcm5719-llvm-a1d85507786a652c1bd551252c0d3d7ed90b7306.zip |
Add using shadow decls to the "instantiated locals" map, fixing PR5847.
llvm-svn: 91928
Diffstat (limited to 'clang/lib/Sema/SemaTemplateInstantiateDecl.cpp')
-rw-r--r-- | clang/lib/Sema/SemaTemplateInstantiateDecl.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp index 2ca4810055e..18a73250a52 100644 --- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -1161,6 +1161,8 @@ Decl *TemplateDeclInstantiator::VisitUsingDecl(UsingDecl *D) { if (NewUD->isInvalidDecl()) return NewUD; + bool isFunctionScope = Owner->isFunctionOrMethod(); + // Process the shadow decls. for (UsingDecl::shadow_iterator I = D->shadow_begin(), E = D->shadow_end(); I != E; ++I) { @@ -1176,6 +1178,9 @@ Decl *TemplateDeclInstantiator::VisitUsingDecl(UsingDecl *D) { UsingShadowDecl *InstShadow = SemaRef.BuildUsingShadowDecl(/*Scope*/ 0, NewUD, InstTarget); SemaRef.Context.setInstantiatedFromUsingShadowDecl(InstShadow, Shadow); + + if (isFunctionScope) + SemaRef.CurrentInstantiationScope->InstantiatedLocal(Shadow, InstShadow); } return NewUD; |