From: Chris Lattner Date: Thu, 17 Feb 2011 19:47:42 +0000 (+0000) Subject: Inline LocalInstantiationScope::getInstantiationOf into its one X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d8e54990ade0dd5566f8e3aa2e62def08753d1e9;p=clang Inline LocalInstantiationScope::getInstantiationOf into its one client, making room for future hacking. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125770 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Sema/Template.h b/include/clang/Sema/Template.h index 7b9b4a1c0e..ce670315e2 100644 --- a/include/clang/Sema/Template.h +++ b/include/clang/Sema/Template.h @@ -253,6 +253,8 @@ namespace clang { ~LocalInstantiationScope() { Exit(); } + + const Sema &getSema() const { return SemaRef; } /// \brief Exit this local instantiation scope early. void Exit() { @@ -266,8 +268,6 @@ namespace clang { Exited = true; } - Decl *getInstantiationOf(const Decl *D); - /// \brief Find the instantiation of the declaration D within the current /// instantiation scope. /// diff --git a/lib/Sema/SemaTemplateInstantiate.cpp b/lib/Sema/SemaTemplateInstantiate.cpp index 0ad9f7c53f..41e44ad6d1 100644 --- a/lib/Sema/SemaTemplateInstantiate.cpp +++ b/lib/Sema/SemaTemplateInstantiate.cpp @@ -2166,17 +2166,6 @@ bool Sema::Subst(const TemplateArgumentLoc *Args, unsigned NumArgs, return Instantiator.TransformTemplateArguments(Args, NumArgs, Result); } -Decl *LocalInstantiationScope::getInstantiationOf(const Decl *D) { - llvm::PointerUnion *Found= findInstantiationOf(D); - assert(Found); - - if (Found->is()) - return Found->get(); - - return (*Found->get())[ - SemaRef.ArgumentPackSubstitutionIndex]; -} - llvm::PointerUnion * LocalInstantiationScope::findInstantiationOf(const Decl *D) { for (LocalInstantiationScope *Current = this; Current; diff --git a/lib/Sema/SemaTemplateInstantiateDecl.cpp b/lib/Sema/SemaTemplateInstantiateDecl.cpp index 14524235d5..9197b50330 100644 --- a/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -2860,7 +2860,16 @@ NamedDecl *Sema::FindInstantiatedDecl(SourceLocation Loc, NamedDecl *D, (ParentDC->isFunctionOrMethod() && ParentDC->isDependentContext())) { // D is a local of some kind. Look into the map of local // declarations to their instantiations. - return cast(CurrentInstantiationScope->getInstantiationOf(D)); + typedef LocalInstantiationScope::DeclArgumentPack DeclArgumentPack; + llvm::PointerUnion *Found + = CurrentInstantiationScope->findInstantiationOf(D); + assert(Found); + + if (Decl *FD = Found->dyn_cast()) + return cast(FD); + + unsigned PackIdx = ArgumentPackSubstitutionIndex; + return cast((*Found->get())[PackIdx]); } if (CXXRecordDecl *Record = dyn_cast(D)) {