summaryrefslogtreecommitdiffstats
path: root/include/clang/AST/DeclTemplate.h
diff options
context:
space:
mode:
authorVassil Vassilev <v.g.vassilev@gmail.com>2017-12-14 23:30:18 +0000
committerVassil Vassilev <v.g.vassilev@gmail.com>2017-12-14 23:30:18 +0000
commit618519b96f4b9028bba07066b271c1cd368186c6 (patch)
treee57e0781f57d387bb7f9694e4224614d6171e473 /include/clang/AST/DeclTemplate.h
parent9e92ae2496f49efdc169a8da26ba13ba85e62378 (diff)
D40901: Refactor lazy loading of template specializations. NFC
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@320763 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/AST/DeclTemplate.h')
-rw-r--r--include/clang/AST/DeclTemplate.h30
1 files changed, 9 insertions, 21 deletions
diff --git a/include/clang/AST/DeclTemplate.h b/include/clang/AST/DeclTemplate.h
index 6f8e381871..7842d70971 100644
--- a/include/clang/AST/DeclTemplate.h
+++ b/include/clang/AST/DeclTemplate.h
@@ -790,6 +790,8 @@ protected:
return SpecIterator<EntryType>(isEnd ? Specs.end() : Specs.begin());
}
+ void loadLazySpecializationsImpl() const;
+
template <class EntryType> typename SpecEntryTraits<EntryType>::DeclType*
findSpecializationImpl(llvm::FoldingSetVector<EntryType> &Specs,
ArrayRef<TemplateArgument> Args, void *&InsertPos);
@@ -808,6 +810,13 @@ protected:
/// was explicitly specialized.
llvm::PointerIntPair<RedeclarableTemplateDecl*, 1, bool>
InstantiatedFromMember;
+
+ /// \brief If non-null, points to an array of specializations (including
+ /// partial specializations) known only by their external declaration IDs.
+ ///
+ /// The first value in the array is the number of specializations/partial
+ /// specializations that follow.
+ uint32_t *LazySpecializations = nullptr;
};
/// \brief Pointer to the common data shared by all declarations of this
@@ -975,13 +984,6 @@ protected:
/// require the use of this information.
TemplateArgument *InjectedArgs = nullptr;
- /// \brief If non-null, points to an array of specializations known only
- /// by their external declaration IDs.
- ///
- /// The first value in the array is the number of of specializations
- /// that follow.
- uint32_t *LazySpecializations = nullptr;
-
Common() = default;
};
@@ -2065,13 +2067,6 @@ protected:
/// \brief The injected-class-name type for this class template.
QualType InjectedClassNameType;
- /// \brief If non-null, points to an array of specializations (including
- /// partial specializations) known only by their external declaration IDs.
- ///
- /// The first value in the array is the number of of specializations/
- /// partial specializations that follow.
- uint32_t *LazySpecializations = nullptr;
-
Common() = default;
};
@@ -2885,13 +2880,6 @@ protected:
llvm::FoldingSetVector<VarTemplatePartialSpecializationDecl>
PartialSpecializations;
- /// \brief If non-null, points to an array of specializations (including
- /// partial specializations) known ownly by their external declaration IDs.
- ///
- /// The first value in the array is the number of of specializations/
- /// partial specializations that follow.
- uint32_t *LazySpecializations = nullptr;
-
Common() = default;
};