forked from OSchip/llvm-project
Remove ASTReader::needPendingInstantiation(), introduced in r164993,
which is neither correct nor necessary. The use of this routine was eliminated by r165137. llvm-svn: 165139
This commit is contained in:
parent
e4a838ac3f
commit
e96037923f
|
@ -917,10 +917,6 @@ private:
|
||||||
|
|
||||||
void finishPendingActions();
|
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.
|
/// \brief Produce an error diagnostic and return true.
|
||||||
///
|
///
|
||||||
/// This routine should only be used for fatal errors that have to
|
/// This routine should only be used for fatal errors that have to
|
||||||
|
|
|
@ -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<TemplateDecl>(ND);
|
|
||||||
if (!Templt) return 0;
|
|
||||||
if (FD) {
|
|
||||||
FunctionTemplateDecl* FTD = dyn_cast<FunctionTemplateDecl>(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<ClassTemplateDecl>(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<FunctionDecl>(D);
|
|
||||||
ClassTemplateSpecializationDecl* CD
|
|
||||||
= FD ? 0 : dyn_cast<ClassTemplateSpecializationDecl>(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<NamedDecl*, 6> Results;
|
|
||||||
DC->getPrimaryContext()->localUncachedLookup(Name, Results);
|
|
||||||
for (llvm::SmallVector<NamedDecl *, 6>::const_iterator
|
|
||||||
I = Results.begin(), E = Results.end();
|
|
||||||
I != E && FoundSpecialization; ++I)
|
|
||||||
FoundSpecialization = findMatchingSpecialization(FD, CD, *I);
|
|
||||||
}
|
|
||||||
return FoundSpecialization && isSameEntity(FoundSpecialization, D);
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue