Skip to content

Commit b6364ab

Browse files
authored
[clang] Reduce TemplateDeclInstantiator size. (#142983)
This gives us another ~1.85% improvement (1617->1647 for the `instantiation-depth-default.cpp`) on clang's template instantiation depths, No performance regressions have been observed: https://llvm-compile-time-tracker.com/compare.php?from=702e228249906d43687952d9a2f3d2f90d8024c6&to=61be4bfea92d52cfc3e48a3cabb1bc80cbebb7fa&stat=instructions:u
1 parent 3846d84 commit b6364ab

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

clang/include/clang/Sema/Template.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -587,16 +587,17 @@ enum class TemplateSubstitutionKind : char {
587587
/// specializations that will need to be instantiated after the
588588
/// enclosing class's instantiation is complete.
589589
SmallVector<std::pair<ClassTemplateDecl *,
590-
ClassTemplatePartialSpecializationDecl *>, 4>
591-
OutOfLinePartialSpecs;
590+
ClassTemplatePartialSpecializationDecl *>,
591+
1>
592+
OutOfLinePartialSpecs;
592593

593594
/// A list of out-of-line variable template partial
594595
/// specializations that will need to be instantiated after the
595596
/// enclosing variable's instantiation is complete.
596597
/// FIXME: Verify that this is needed.
597598
SmallVector<
598-
std::pair<VarTemplateDecl *, VarTemplatePartialSpecializationDecl *>, 4>
599-
OutOfLineVarPartialSpecs;
599+
std::pair<VarTemplateDecl *, VarTemplatePartialSpecializationDecl *>, 1>
600+
OutOfLineVarPartialSpecs;
600601

601602
public:
602603
TemplateDeclInstantiator(Sema &SemaRef, DeclContext *Owner,

clang/lib/Sema/SemaTemplateInstantiateDecl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2394,7 +2394,7 @@ Decl *TemplateDeclInstantiator::VisitVarTemplateDecl(VarTemplateDecl *D) {
23942394
// Queue up any out-of-line partial specializations of this member
23952395
// variable template; the client will force their instantiation once
23962396
// the enclosing class has been instantiated.
2397-
SmallVector<VarTemplatePartialSpecializationDecl *, 4> PartialSpecs;
2397+
SmallVector<VarTemplatePartialSpecializationDecl *, 1> PartialSpecs;
23982398
D->getPartialSpecializations(PartialSpecs);
23992399
for (unsigned I = 0, N = PartialSpecs.size(); I != N; ++I)
24002400
if (PartialSpecs[I]->getFirstDecl()->isOutOfLine())

0 commit comments

Comments
 (0)