From e96037923fe3488d7f5a4ca8157f8530248e67db Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Wed, 3 Oct 2012 18:38:43 +0000 Subject: [PATCH] Remove ASTReader::needPendingInstantiation(), introduced in r164993, which is neither correct nor necessary. The use of this routine was eliminated by r165137. llvm-svn: 165139 --- clang/include/clang/Serialization/ASTReader.h | 4 -- clang/lib/Serialization/ASTReaderDecl.cpp | 57 --------------------------- 2 files changed, 61 deletions(-) diff --git a/clang/include/clang/Serialization/ASTReader.h b/clang/include/clang/Serialization/ASTReader.h index af69148..7bdd0a7 100644 --- a/clang/include/clang/Serialization/ASTReader.h +++ b/clang/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/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index 5434405..d9243f6 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/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); -} -- 2.7.4