summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/DeclTemplate.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2013-08-22 23:27:37 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2013-08-22 23:27:37 +0000
commitb2f61b4a052cb55428323d422cbc277c7ee228dd (patch)
tree7cfc646de52670ae07be0e1b1dd87cbd457d223f /clang/lib/AST/DeclTemplate.cpp
parent9f9c963e4797efff4db1b06336442a98fd9ae8b2 (diff)
downloadbcm5719-llvm-b2f61b4a052cb55428323d422cbc277c7ee228dd.tar.gz
bcm5719-llvm-b2f61b4a052cb55428323d422cbc277c7ee228dd.zip
Remove SequenceNumber from class/variable template partial specializations.
This was only used to ensure that the traversal order was the same as the insertion order, but that guarantee was already being provided by the use of a FoldingSetVector. llvm-svn: 189075
Diffstat (limited to 'clang/lib/AST/DeclTemplate.cpp')
-rw-r--r--clang/lib/AST/DeclTemplate.cpp35
1 files changed, 14 insertions, 21 deletions
diff --git a/clang/lib/AST/DeclTemplate.cpp b/clang/lib/AST/DeclTemplate.cpp
index 0b0228869ef..52e35c6752d 100644
--- a/clang/lib/AST/DeclTemplate.cpp
+++ b/clang/lib/AST/DeclTemplate.cpp
@@ -397,13 +397,11 @@ void ClassTemplateDecl::getPartialSpecializations(
llvm::FoldingSetVector<ClassTemplatePartialSpecializationDecl> &PartialSpecs
= getPartialSpecializations();
PS.clear();
- PS.resize(PartialSpecs.size());
+ PS.reserve(PartialSpecs.size());
for (llvm::FoldingSetVector<ClassTemplatePartialSpecializationDecl>::iterator
P = PartialSpecs.begin(), PEnd = PartialSpecs.end();
- P != PEnd; ++P) {
- assert(!PS[P->getSequenceNumber()]);
- PS[P->getSequenceNumber()] = P->getMostRecentDecl();
- }
+ P != PEnd; ++P)
+ PS.push_back(P->getMostRecentDecl());
}
ClassTemplatePartialSpecializationDecl *
@@ -830,15 +828,14 @@ ClassTemplatePartialSpecializationDecl(ASTContext &Context, TagKind TK,
const TemplateArgument *Args,
unsigned NumArgs,
const ASTTemplateArgumentListInfo *ArgInfos,
- ClassTemplatePartialSpecializationDecl *PrevDecl,
- unsigned SequenceNumber)
+ ClassTemplatePartialSpecializationDecl *PrevDecl)
: ClassTemplateSpecializationDecl(Context,
ClassTemplatePartialSpecialization,
TK, DC, StartLoc, IdLoc,
SpecializedTemplate,
Args, NumArgs, PrevDecl),
TemplateParams(Params), ArgsAsWritten(ArgInfos),
- SequenceNumber(SequenceNumber), InstantiatedFromMember(0, false)
+ InstantiatedFromMember(0, false)
{
AdoptTemplateParameterList(Params, this);
}
@@ -853,8 +850,7 @@ Create(ASTContext &Context, TagKind TK,DeclContext *DC,
unsigned NumArgs,
const TemplateArgumentListInfo &ArgInfos,
QualType CanonInjectedType,
- ClassTemplatePartialSpecializationDecl *PrevDecl,
- unsigned SequenceNumber) {
+ ClassTemplatePartialSpecializationDecl *PrevDecl) {
const ASTTemplateArgumentListInfo *ASTArgInfos =
ASTTemplateArgumentListInfo::Create(Context, ArgInfos);
@@ -865,8 +861,7 @@ Create(ASTContext &Context, TagKind TK,DeclContext *DC,
SpecializedTemplate,
Args, NumArgs,
ASTArgInfos,
- PrevDecl,
- SequenceNumber);
+ PrevDecl);
Result->setSpecializationKind(TSK_ExplicitSpecialization);
Result->MayHaveOutOfDateDef = false;
@@ -1068,14 +1063,12 @@ void VarTemplateDecl::getPartialSpecializations(
llvm::FoldingSetVector<VarTemplatePartialSpecializationDecl> &PartialSpecs =
getPartialSpecializations();
PS.clear();
- PS.resize(PartialSpecs.size());
+ PS.reserve(PartialSpecs.size());
for (llvm::FoldingSetVector<VarTemplatePartialSpecializationDecl>::iterator
P = PartialSpecs.begin(),
PEnd = PartialSpecs.end();
- P != PEnd; ++P) {
- assert(!PS[P->getSequenceNumber()]);
- PS[P->getSequenceNumber()] = P->getMostRecentDecl();
- }
+ P != PEnd; ++P)
+ PS.push_back(P->getMostRecentDecl());
}
VarTemplatePartialSpecializationDecl *
@@ -1168,12 +1161,12 @@ VarTemplatePartialSpecializationDecl::VarTemplatePartialSpecializationDecl(
SourceLocation IdLoc, TemplateParameterList *Params,
VarTemplateDecl *SpecializedTemplate, QualType T, TypeSourceInfo *TInfo,
StorageClass S, const TemplateArgument *Args, unsigned NumArgs,
- const ASTTemplateArgumentListInfo *ArgInfos, unsigned SequenceNumber)
+ const ASTTemplateArgumentListInfo *ArgInfos)
: VarTemplateSpecializationDecl(Context, VarTemplatePartialSpecialization,
DC, StartLoc, IdLoc, SpecializedTemplate, T,
TInfo, S, Args, NumArgs),
TemplateParams(Params), ArgsAsWritten(ArgInfos),
- SequenceNumber(SequenceNumber), InstantiatedFromMember(0, false) {
+ InstantiatedFromMember(0, false) {
// TODO: The template parameters should be in DC by now. Verify.
// AdoptTemplateParameterList(Params, DC);
}
@@ -1184,14 +1177,14 @@ VarTemplatePartialSpecializationDecl::Create(
SourceLocation IdLoc, TemplateParameterList *Params,
VarTemplateDecl *SpecializedTemplate, QualType T, TypeSourceInfo *TInfo,
StorageClass S, const TemplateArgument *Args, unsigned NumArgs,
- const TemplateArgumentListInfo &ArgInfos, unsigned SequenceNumber) {
+ const TemplateArgumentListInfo &ArgInfos) {
const ASTTemplateArgumentListInfo *ASTArgInfos
= ASTTemplateArgumentListInfo::Create(Context, ArgInfos);
VarTemplatePartialSpecializationDecl *Result =
new (Context) VarTemplatePartialSpecializationDecl(
Context, DC, StartLoc, IdLoc, Params, SpecializedTemplate, T, TInfo,
- S, Args, NumArgs, ASTArgInfos, SequenceNumber);
+ S, Args, NumArgs, ASTArgInfos);
Result->setSpecializationKind(TSK_ExplicitSpecialization);
return Result;
}
OpenPOWER on IntegriCloud