From: Benjamin Kramer Date: Fri, 12 Apr 2013 15:22:25 +0000 (+0000) Subject: Sema: Give a typically small DenseMap some inline capacity. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3bbffd549c76dfeb3c8d7c73860736a6523cde92;p=clang Sema: Give a typically small DenseMap some inline capacity. Also reflow code a bit, no change in functionality. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179382 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Sema/Template.h b/include/clang/Sema/Template.h index 492e5800bd..8ee8f35ccb 100644 --- a/include/clang/Sema/Template.h +++ b/include/clang/Sema/Template.h @@ -187,10 +187,10 @@ namespace clang { /// this template instantiation. Sema &SemaRef; - typedef llvm::DenseMap > - LocalDeclsMap; - + typedef llvm::SmallDenseMap< + const Decl *, llvm::PointerUnion, 4> + LocalDeclsMap; + /// \brief A mapping from local declarations that occur /// within a template to their instantiations. /// diff --git a/lib/Sema/SemaTemplateInstantiate.cpp b/lib/Sema/SemaTemplateInstantiate.cpp index f755b8ca45..7ef04e964d 100644 --- a/lib/Sema/SemaTemplateInstantiate.cpp +++ b/lib/Sema/SemaTemplateInstantiate.cpp @@ -2701,11 +2701,10 @@ void LocalInstantiationScope::InstantiatedLocal(const Decl *D, Decl *Inst) { llvm::PointerUnion &Stored = LocalDecls[D]; if (Stored.isNull()) Stored = Inst; - else if (Stored.is()) { + else if (DeclArgumentPack *Pack = Stored.dyn_cast()) + Pack->push_back(Inst); + else assert(Stored.get() == Inst && "Already instantiated this local"); - Stored = Inst; - } else - LocalDecls[D].get()->push_back(Inst); } void LocalInstantiationScope::InstantiatedLocalPackArg(const Decl *D,