From: Douglas Gregor Date: Wed, 3 Oct 2012 18:38:43 +0000 (+0000) Subject: Remove ASTReader::needPendingInstantiation(), introduced in r164993, X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3021475d7ab05424d8a56829011cf0563562a6d6;p=clang Remove ASTReader::needPendingInstantiation(), introduced in r164993, which is neither correct nor necessary. The use of this routine was eliminated by r165137. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165139 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Serialization/ASTReader.h b/include/clang/Serialization/ASTReader.h index af69148140..7bdd0a70dc 100644 --- a/include/clang/Serialization/ASTReader.h +++ b/include/clang/Serialization/ASTReader.h @@ -917,10 +917,6 @@ private: void finishPendingActions(); - /// \brief Whether D needs to be instantiated, i.e. whether an instantiation - /// for D does not exist yet. - bool needPendingInstantiation(ValueDecl* D) const; - /// \brief Produce an error diagnostic and return true. /// /// This routine should only be used for fatal errors that have to diff --git a/lib/Serialization/ASTReaderDecl.cpp b/lib/Serialization/ASTReaderDecl.cpp index 54344051dc..d9243f62e5 100644 --- a/lib/Serialization/ASTReaderDecl.cpp +++ b/lib/Serialization/ASTReaderDecl.cpp @@ -2510,60 +2510,3 @@ void ASTDeclReader::UpdateDecl(Decl *D, ModuleFile &ModuleFile, } } } - -/// \brief Return a template specialization of ND (should be a TemplateDecl) -/// that matches FD or TD. -static NamedDecl* findMatchingSpecialization(FunctionDecl* FD, - ClassTemplateSpecializationDecl*TD, - NamedDecl* ND) { - TemplateDecl* Templt = dyn_cast(ND); - if (!Templt) return 0; - if (FD) { - FunctionTemplateDecl* FTD = dyn_cast(Templt); - if (!FTD) return 0; - const TemplateArgumentList* TmpltArgs = FD->getTemplateSpecializationArgs(); - assert(TmpltArgs || "Template without arguments"); - void* InsertionPoint; - return FTD->findSpecialization(TmpltArgs->data(), TmpltArgs->size(), - InsertionPoint); - } else { - ClassTemplateDecl* CTD = dyn_cast(Templt); - if (!CTD) return 0; - const TemplateArgumentList& TmpltArgs = TD->getTemplateArgs(); - void* InsertionPoint; - return CTD->findSpecialization(TmpltArgs.data(), TmpltArgs.size(), - InsertionPoint); - } - return 0; -} - -/// \brief Find out whether an instantiation (outside the module) already exists -bool ASTReader::needPendingInstantiation(ValueDecl* D) const { - DeclContext *DC = D->getDeclContext()->getRedeclContext(); - DeclarationName Name = D->getDeclName(); - assert(Name && "unnamed template"); - - FunctionDecl* FD = dyn_cast(D); - ClassTemplateSpecializationDecl* CD - = FD ? 0 : dyn_cast(D); - - NamedDecl* FoundSpecialization = 0; - if (DC->isTranslationUnit() && SemaObj) { - IdentifierResolver &IdResolver = SemaObj->IdResolver; - for (IdentifierResolver::iterator I = IdResolver.begin(Name), - IEnd = IdResolver.end(); - I != IEnd && !FoundSpecialization; ++I) - FoundSpecialization = findMatchingSpecialization(FD, CD, *I); - } else { - // templates are redeclarables, i.e. they must have been merged into - // the primary context. Use localUncachedLookup to not pick up template - // decls from modules again. - llvm::SmallVector Results; - DC->getPrimaryContext()->localUncachedLookup(Name, Results); - for (llvm::SmallVector::const_iterator - I = Results.begin(), E = Results.end(); - I != E && FoundSpecialization; ++I) - FoundSpecialization = findMatchingSpecialization(FD, CD, *I); - } - return FoundSpecialization && isSameEntity(FoundSpecialization, D); -}