reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

Derived Classes

tools/clang/include/clang/AST/DeclTemplate.h
  961 class FunctionTemplateDecl : public RedeclarableTemplateDecl {
 2069 class ClassTemplateDecl : public RedeclarableTemplateDecl {
 2341 class TypeAliasTemplateDecl : public RedeclarableTemplateDecl {
 2891 class VarTemplateDecl : public RedeclarableTemplateDecl {

Declarations

gen/tools/clang/include/clang/AST/DeclNodes.inc
  197 ABSTRACT_DECL(REDECLARABLETEMPLATE(RedeclarableTemplate, TemplateDecl))

References

include/llvm/ADT/STLExtras.h
   75       typename std::add_pointer<typename std::add_const<T>::type>::type;
include/llvm/Support/Casting.h
   57   static inline bool doit(const From &Val) {
   58     return To::classof(&Val);
   66   static inline bool doit(const From &) { return true; }
  104   static inline bool doit(const From *Val) {
  106     return isa_impl<To, From>::doit(*Val);
  106     return isa_impl<To, From>::doit(*Val);
  122     return isa_impl_wrap<To, SimpleFrom,
  132     return isa_impl_cl<To,FromTy>::doit(Val);
  142   return isa_impl_wrap<X, const Y,
  172   using ret_type = To *;       // Pointer arg case, return Ty*
  176   using ret_type = const To *; // Constant pointer arg case, return const Ty*
  198   using ret_type = typename cast_retty<To, SimpleFrom>::ret_type;
  204   using ret_type = typename cast_retty_impl<To,FromTy>::ret_type;
  210       To, From, typename simplify_type<From>::SimpleType>::ret_type;
  227   static typename cast_retty<To, FromTy>::ret_type doit(const FromTy &Val) {
  228     typename cast_retty<To, FromTy>::ret_type Res2
  256 inline typename cast_retty<X, Y>::ret_type cast(Y &Val) {
  263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
  265   return cast_convert_val<X, Y*,
  265   return cast_convert_val<X, Y*,
  266                           typename simplify_type<Y*>::SimpleType>::doit(Val);
  305 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  305 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  306 cast_or_null(Y *Val) {
  309   return cast<X>(Val);
  337 LLVM_NODISCARD inline typename cast_retty<X, Y>::ret_type dyn_cast(Y &Val) {
  342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
  342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
  342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
  343   return isa<X>(Val) ? cast<X>(Val) : nullptr;
  343   return isa<X>(Val) ? cast<X>(Val) : nullptr;
  360                             typename cast_retty<X, Y>::ret_type>::type
  366 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
  368   return (Val && isa<X>(Val)) ? cast<X>(Val) : nullptr;
  368   return (Val && isa<X>(Val)) ? cast<X>(Val) : nullptr;
include/llvm/Support/PointerLikeTypeTraits.h
   56   static inline void *getAsVoidPointer(T *P) { return P; }
   57   static inline T *getFromVoidPointer(void *P) { return static_cast<T *>(P); }
   59   enum { NumLowBitsAvailable = detail::ConstantLog2<alignof(T)>::value };
tools/clang/include/clang/AST/Decl.h
 4406     decl_type *MostRecent = First->getNextRedeclaration();
 4407     RedeclLink = PreviousDeclLink(cast<decl_type>(MostRecent));
tools/clang/include/clang/AST/DeclTemplate.h
  737                                  public Redeclarable<RedeclarableTemplateDecl>
  739   using redeclarable_base = Redeclarable<RedeclarableTemplateDecl>;
  741   RedeclarableTemplateDecl *getNextRedeclarationImpl() override {
  745   RedeclarableTemplateDecl *getPreviousDeclImpl() override {
  749   RedeclarableTemplateDecl *getMostRecentDeclImpl() override {
  812     llvm::PointerIntPair<RedeclarableTemplateDecl*, 1, bool>
  847   RedeclarableTemplateDecl *getCanonicalDecl() override {
  850   const RedeclarableTemplateDecl *getCanonicalDecl() const {
  919   RedeclarableTemplateDecl *getInstantiatedFromMemberTemplate() const {
  923   void setInstantiatedFromMemberTemplate(RedeclarableTemplateDecl *TD) {
  961 class FunctionTemplateDecl : public RedeclarableTemplateDecl {
 2069 class ClassTemplateDecl : public RedeclarableTemplateDecl {
 2341 class TypeAliasTemplateDecl : public RedeclarableTemplateDecl {
 2891 class VarTemplateDecl : public RedeclarableTemplateDecl {
tools/clang/include/clang/AST/JSONNodeDumper.h
  172   template <typename T> void writePreviousDeclImpl(const Redeclarable<T> *D) {
  173     const T *Prev = D->getPreviousDecl();
tools/clang/include/clang/AST/Redeclarable.h
  113     DeclLink(PreviousTag, decl_type *D) : Link(NotKnownLatest(Previous(D))) {}
  122     decl_type *getPrevious(const decl_type *D) const {
  122     decl_type *getPrevious(const decl_type *D) const {
  137     void setPrevious(decl_type *D) {
  142     void setLatest(decl_type *D) {
  166   static DeclLink PreviousDeclLink(decl_type *D) {
  187   decl_type *First;
  189   decl_type *getNextRedeclaration() const {
  203   decl_type *getPreviousDecl() {
  208   const decl_type *getPreviousDecl() const {
  215   decl_type *getFirstDecl() { return First; }
  219   const decl_type *getFirstDecl() const { return First; }
  225   decl_type *getMostRecentDecl() {
  230   const decl_type *getMostRecentDecl() const {
  236   void setPreviousDecl(decl_type *PrevDecl);
  241     decl_type *Current = nullptr;
  242     decl_type *Starter;
  246     using value_type = decl_type *;
  247     using reference = decl_type *;
  248     using pointer = decl_type *;
  253     explicit redecl_iterator(decl_type *C) : Current(C), Starter(C) {}
  271       decl_type *Next = Current->getNextRedeclaration();
tools/clang/include/clang/Serialization/ASTReader.h
 1887   T *ReadDeclAs(ModuleFile &F, const RecordData &R, unsigned &I) {
 1888     return cast_or_null<T>(GetDecl(ReadDeclID(F, R, I)));
 2541   T *readDeclAs() {
 2542     return Reader->ReadDeclAs<T>(*F, Record, Idx);
tools/clang/lib/AST/ASTContext.cpp
  165       isa<RedeclarableTemplateDecl>(D) ||
tools/clang/lib/AST/Decl.cpp
  188 std::enable_if<!std::is_base_of<RedeclarableTemplateDecl, T>::value, bool>::type
  200 static bool isExplicitMemberSpecialization(const RedeclarableTemplateDecl *D) {
 1034     if (const auto *redeclTemp = dyn_cast<RedeclarableTemplateDecl>(temp)) {
 1034     if (const auto *redeclTemp = dyn_cast<RedeclarableTemplateDecl>(temp)) {
 1676 template<typename T> static bool isRedeclarableImpl(Redeclarable<T> *) {
tools/clang/lib/AST/DeclPrinter.cpp
  797     VisitRedeclarableTemplateDecl(CTD);
 1151   VisitRedeclarableTemplateDecl(D);
 1177   VisitRedeclarableTemplateDecl(D);
tools/clang/lib/AST/DeclTemplate.cpp
  189 RedeclarableTemplateDecl::CommonBase *RedeclarableTemplateDecl::getCommonPtr() const {
  195   SmallVector<const RedeclarableTemplateDecl *, 2> PrevDecls;
  196   for (const RedeclarableTemplateDecl *Prev = getPreviousDecl(); Prev;
  215   for (const RedeclarableTemplateDecl *Prev : PrevDecls)
  235 typename RedeclarableTemplateDecl::SpecEntryTraits<EntryType>::DeclType *
  295 RedeclarableTemplateDecl::CommonBase *
  341   using Base = RedeclarableTemplateDecl;
  411 RedeclarableTemplateDecl::CommonBase *
  964 RedeclarableTemplateDecl::CommonBase *
 1028 RedeclarableTemplateDecl::CommonBase *
tools/clang/lib/AST/ODRHash.cpp
  418   void VisitRedeclarableTemplateDecl(const RedeclarableTemplateDecl *D) {
  420     Inherited::VisitRedeclarableTemplateDecl(D);
tools/clang/lib/AST/TextNodeDumper.cpp
   31 static void dumpPreviousDeclImpl(raw_ostream &OS, const Redeclarable<T> *D) {
   32   const T *Prev = D->getPreviousDecl();
tools/clang/lib/Serialization/ASTReader.cpp
 9997     auto RTD = cast<RedeclarableTemplateDecl>(D)->getCanonicalDecl();
 9999       cast<RedeclarableTemplateDecl>(R)->Common = RTD->Common;
tools/clang/lib/Serialization/ASTReaderDecl.cpp
  144     T *ReadDeclAs() {
  145       return Record.readDeclAs<T>();
  249       operator T*() const { return dyn_cast_or_null<T>(Existing); }
  249       operator T*() const { return dyn_cast_or_null<T>(Existing); }
  386     RedeclarableResult VisitRedeclarableTemplateDecl(RedeclarableTemplateDecl *D);
  412     RedeclarableResult VisitRedeclarable(Redeclarable<T> *D);
  415     void mergeRedeclarable(Redeclarable<T> *D, RedeclarableResult &Redecl,
  419     void mergeRedeclarable(Redeclarable<T> *D, T *Existing,
  419     void mergeRedeclarable(Redeclarable<T> *D, T *Existing,
  426     void mergeTemplatePattern(RedeclarableTemplateDecl *D,
  427                               RedeclarableTemplateDecl *Existing,
 2016 ASTDeclReader::VisitRedeclarableTemplateDecl(RedeclarableTemplateDecl *D) {
 2021   RedeclarableTemplateDecl *CanonD = D->getCanonicalDecl();
 2031     if (auto *RTD = ReadDeclAs<RedeclarableTemplateDecl>()) {
 2031     if (auto *RTD = ReadDeclAs<RedeclarableTemplateDecl>()) {
 2394   auto *FirstDecl = cast_or_null<T>(Reader.GetDecl(FirstDeclID));
 2394   auto *FirstDecl = cast_or_null<T>(Reader.GetDecl(FirstDeclID));
 2400     D->RedeclLink = Redeclarable<T>::PreviousDeclLink(FirstDecl);
 2404   auto *DAsT = static_cast<T *>(D);
 2430   auto *D = static_cast<T *>(DBase);
 2434     mergeRedeclarable(D, cast<T>(Existing), Redecl, TemplatePatternID);
 2436     if (T *Existing = ExistingRes)
 2450 void ASTDeclReader::mergeTemplatePattern(RedeclarableTemplateDecl *D,
 2451                                          RedeclarableTemplateDecl *Existing,
 2496   auto *D = static_cast<T *>(DBase);
 2497   T *ExistingCanon = Existing->getCanonicalDecl();
 2498   T *DCanon = D->getCanonicalDecl();
 2506     D->RedeclLink = Redeclarable<T>::PreviousDeclLink(ExistingCanon);
 2519     if (auto *DTemplate = dyn_cast<RedeclarableTemplateDecl>(D))
 2519     if (auto *DTemplate = dyn_cast<RedeclarableTemplateDecl>(D))
 2521           DTemplate, assert_cast<RedeclarableTemplateDecl*>(ExistingCanon),
 3381 Decl *ASTDeclReader::getMostRecentDeclImpl(Redeclarable<DeclT> *D) {
 3408                                            Redeclarable<DeclT> *D,
 3410   D->RedeclLink.setPrevious(cast<DeclT>(Previous));
 3411   D->First = cast<DeclT>(Previous)->First;
 3567 void ASTDeclReader::attachLatestDeclImpl(Redeclarable<DeclT> *D, Decl *Latest) {
 3568   D->RedeclLink.setLatest(cast<DeclT>(Latest));
 3589 void ASTDeclReader::markIncompleteDeclChainImpl(Redeclarable<DeclT> *D) {
tools/clang/lib/Serialization/ASTWriterDecl.cpp
  106     void VisitRedeclarableTemplateDecl(RedeclarableTemplateDecl *D);
  129     template <typename T> void VisitRedeclarable(Redeclarable<T> *D);
  188     typename RedeclarableTemplateDecl::SpecEntryTraits<EntryType>::DeclType *
  190       return RedeclarableTemplateDecl::SpecEntryTraits<EntryType>::getDecl(&T);
 1452 void ASTDeclWriter::VisitRedeclarableTemplateDecl(RedeclarableTemplateDecl *D) {
 1722   T *First = D->getFirstDecl();
 1723   T *MostRecent = First->getMostRecentDecl();
 1724   T *DAsT = static_cast<T *>(D);
tools/clang/tools/libclang/CIndexCXX.cpp
  114   } else if (const RedeclarableTemplateDecl *Tmpl
  115                                         = dyn_cast<RedeclarableTemplateDecl>(D))
usr/include/c++/7.4.0/type_traits
  215     : public __is_void_helper<typename remove_cv<_Tp>::type>::type
  581     : public __or_<is_lvalue_reference<_Tp>,
  582                    is_rvalue_reference<_Tp>>::type
  601     : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
  601     : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
  602                           is_void<_Tp>>>::type
  638     : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
  638     : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
 1554     { typedef _Tp     type; };
 1558     { typedef _Tp     type; };
 1563     { typedef _Tp     type; };
 1574       remove_const<typename remove_volatile<_Tp>::type>::type     type;
 1580     { typedef _Tp const     type; };
 1629     { typedef _Tp   type; };
 1983     { typedef _Up     type; };
 1999     { typedef typename remove_reference<_Tp>::type*     type; };
 2003     : public __add_pointer_helper<_Tp>