diff options
author | Chris Lattner <sabre@nondot.org> | 2011-02-17 19:47:42 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2011-02-17 19:47:42 +0000 |
commit | d8e54990ade0dd5566f8e3aa2e62def08753d1e9 (patch) | |
tree | 3aea63bb20bfd5b4747f837927dc951b2668b6fc | |
parent | a70062ff988eb1fc4a159e463a2a3de5155b7f6a (diff) |
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
-rw-r--r-- | include/clang/Sema/Template.h | 4 | ||||
-rw-r--r-- | lib/Sema/SemaTemplateInstantiate.cpp | 11 | ||||
-rw-r--r-- | lib/Sema/SemaTemplateInstantiateDecl.cpp | 11 |
3 files changed, 12 insertions, 14 deletions
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<Decl *, DeclArgumentPack *> *Found= findInstantiationOf(D); - assert(Found); - - if (Found->is<Decl *>()) - return Found->get<Decl *>(); - - return (*Found->get<DeclArgumentPack *>())[ - SemaRef.ArgumentPackSubstitutionIndex]; -} - llvm::PointerUnion<Decl *, LocalInstantiationScope::DeclArgumentPack *> * 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<NamedDecl>(CurrentInstantiationScope->getInstantiationOf(D)); + typedef LocalInstantiationScope::DeclArgumentPack DeclArgumentPack; + llvm::PointerUnion<Decl *, DeclArgumentPack *> *Found + = CurrentInstantiationScope->findInstantiationOf(D); + assert(Found); + + if (Decl *FD = Found->dyn_cast<Decl *>()) + return cast<NamedDecl>(FD); + + unsigned PackIdx = ArgumentPackSubstitutionIndex; + return cast<NamedDecl>((*Found->get<DeclArgumentPack *>())[PackIdx]); } if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(D)) { |