diff options
| -rw-r--r-- | clang/include/clang/AST/DataRecursiveASTVisitor.h | 4 | ||||
| -rw-r--r-- | clang/include/clang/AST/DeclTemplate.h | 10 | ||||
| -rw-r--r-- | clang/include/clang/AST/RecursiveASTVisitor.h | 4 | ||||
| -rw-r--r-- | clang/lib/AST/DeclPrinter.cpp | 7 | ||||
| -rw-r--r-- | clang/lib/CodeGen/CGDebugInfo.cpp | 6 |
5 files changed, 14 insertions, 17 deletions
diff --git a/clang/include/clang/AST/DataRecursiveASTVisitor.h b/clang/include/clang/AST/DataRecursiveASTVisitor.h index f6443e84f7a..84953007684 100644 --- a/clang/include/clang/AST/DataRecursiveASTVisitor.h +++ b/clang/include/clang/AST/DataRecursiveASTVisitor.h @@ -1513,9 +1513,7 @@ template<typename Derived> bool DataRecursiveASTVisitor<Derived>::TraverseFunctionInstantiations( FunctionTemplateDecl *D) { FunctionTemplateDecl::spec_iterator end = D->spec_end(); - for (FunctionTemplateDecl::spec_iterator it = D->spec_begin(); it != end; - ++it) { - FunctionDecl* FD = *it; + for (auto *FD : D->specializations()) { switch (FD->getTemplateSpecializationKind()) { case TSK_Undeclared: case TSK_ImplicitInstantiation: diff --git a/clang/include/clang/AST/DeclTemplate.h b/clang/include/clang/AST/DeclTemplate.h index cc843e56c4c..bbf746375d2 100644 --- a/clang/include/clang/AST/DeclTemplate.h +++ b/clang/include/clang/AST/DeclTemplate.h @@ -713,9 +713,9 @@ public: } typedef redeclarable_base::redecl_range redecl_range; - typedef redeclarable_base::redecl_iterator redecl_iterator;
- using redeclarable_base::redecls_begin;
- using redeclarable_base::redecls_end;
+ typedef redeclarable_base::redecl_iterator redecl_iterator; + using redeclarable_base::redecls_begin; + using redeclarable_base::redecls_end; using redeclarable_base::redecls; using redeclarable_base::getPreviousDecl; using redeclarable_base::getMostRecentDecl; @@ -846,7 +846,11 @@ public: } typedef SpecIterator<FunctionTemplateSpecializationInfo> spec_iterator; + typedef llvm::iterator_range<spec_iterator> spec_range; + spec_range specializations() const { + return spec_range(spec_begin(), spec_end()); + } spec_iterator spec_begin() const { return makeSpecIterator(getSpecializations(), false); } diff --git a/clang/include/clang/AST/RecursiveASTVisitor.h b/clang/include/clang/AST/RecursiveASTVisitor.h index 259e97766f4..52f61b2bd65 100644 --- a/clang/include/clang/AST/RecursiveASTVisitor.h +++ b/clang/include/clang/AST/RecursiveASTVisitor.h @@ -1534,9 +1534,7 @@ template<typename Derived> bool RecursiveASTVisitor<Derived>::TraverseTemplateInstantiations( FunctionTemplateDecl *D) { FunctionTemplateDecl::spec_iterator end = D->spec_end(); - for (FunctionTemplateDecl::spec_iterator it = D->spec_begin(); it != end; - ++it) { - FunctionDecl* FD = *it; + for (auto *FD : D->specializations()) { switch (FD->getTemplateSpecializationKind()) { case TSK_Undeclared: case TSK_ImplicitInstantiation: diff --git a/clang/lib/AST/DeclPrinter.cpp b/clang/lib/AST/DeclPrinter.cpp index bbe777b93c9..c0df591b3d5 100644 --- a/clang/lib/AST/DeclPrinter.cpp +++ b/clang/lib/AST/DeclPrinter.cpp @@ -885,10 +885,9 @@ void DeclPrinter::VisitTemplateDecl(const TemplateDecl *D) { void DeclPrinter::VisitFunctionTemplateDecl(FunctionTemplateDecl *D) { if (PrintInstantiation) { TemplateParameterList *Params = D->getTemplateParameters(); - for (FunctionTemplateDecl::spec_iterator I = D->spec_begin(), E = D->spec_end(); - I != E; ++I) { - PrintTemplateParameters(Params, (*I)->getTemplateSpecializationArgs()); - Visit(*I); + for (auto *I : D->specializations()) { + PrintTemplateParameters(Params, I->getTemplateSpecializationArgs()); + Visit(I); } } diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index 45001fc36e7..2b81b3789ef 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -1151,11 +1151,9 @@ CollectCXXMemberFunctions(const CXXRecordDecl *RD, llvm::DIFile Unit, // Add any template specializations that have already been seen. Like // implicit member functions, these may have been added to a declaration // in the case of vtable-based debug info reduction. - for (FunctionTemplateDecl::spec_iterator SI = FTD->spec_begin(), - SE = FTD->spec_end(); - SI != SE; ++SI) { + for (const auto *SI : FTD->specializations()) { llvm::DenseMap<const FunctionDecl *, llvm::WeakVH>::iterator MI = - SPCache.find(cast<CXXMethodDecl>(*SI)->getCanonicalDecl()); + SPCache.find(cast<CXXMethodDecl>(SI)->getCanonicalDecl()); if (MI != SPCache.end()) EltTys.push_back(MI->second); } |

