Author: Kazu Hirata Date: 2021-11-07T09:53:14-08:00 New Revision: eb1c7c13390105f8b84c7ec85bd222a56e57a480
URL: https://github.com/llvm/llvm-project/commit/eb1c7c13390105f8b84c7ec85bd222a56e57a480 DIFF: https://github.com/llvm/llvm-project/commit/eb1c7c13390105f8b84c7ec85bd222a56e57a480.diff LOG: [AST, Analysis] Use llvm::reverse (NFC) Added: Modified: clang/lib/AST/Expr.cpp clang/lib/AST/MicrosoftMangle.cpp clang/lib/AST/VTableBuilder.cpp clang/lib/Analysis/CFG.cpp clang/lib/Analysis/CloneDetection.cpp clang/lib/Analysis/ReachableCode.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index e7049408eb884..7bd3dce43f4df 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -753,11 +753,10 @@ std::string PredefinedExpr::ComputeName(IdentKind IK, const Decl *CurrentDecl) { std::string TemplateParams; llvm::raw_string_ostream TOut(TemplateParams); - for (SpecsTy::reverse_iterator I = Specs.rbegin(), E = Specs.rend(); - I != E; ++I) { - const TemplateParameterList *Params - = (*I)->getSpecializedTemplate()->getTemplateParameters(); - const TemplateArgumentList &Args = (*I)->getTemplateArgs(); + for (const ClassTemplateSpecializationDecl *D : llvm::reverse(Specs)) { + const TemplateParameterList *Params = + D->getSpecializedTemplate()->getTemplateParameters(); + const TemplateArgumentList &Args = D->getTemplateArgs(); assert(Params->size() == Args.size()); for (unsigned i = 0, numParams = Params->size(); i != numParams; ++i) { StringRef Param = Params->getParam(i)->getName(); @@ -2361,10 +2360,8 @@ SourceLocation InitListExpr::getEndLoc() const { SourceLocation End = RBraceLoc; if (End.isInvalid()) { // Find the first non-null initializer from the end. - for (InitExprsTy::const_reverse_iterator I = InitExprs.rbegin(), - E = InitExprs.rend(); - I != E; ++I) { - if (Stmt *S = *I) { + for (Stmt *S : llvm::reverse(InitExprs)) { + if (S) { End = S->getEndLoc(); break; } diff --git a/clang/lib/AST/MicrosoftMangle.cpp b/clang/lib/AST/MicrosoftMangle.cpp index 04baa85fe145d..163d4e95386e9 100644 --- a/clang/lib/AST/MicrosoftMangle.cpp +++ b/clang/lib/AST/MicrosoftMangle.cpp @@ -2825,8 +2825,8 @@ void MicrosoftCXXNameMangler::mangleArtificialTagType( // Always start with the unqualified name. mangleSourceName(UnqualifiedName); - for (auto I = NestedNames.rbegin(), E = NestedNames.rend(); I != E; ++I) - mangleSourceName(*I); + for (StringRef N : llvm::reverse(NestedNames)) + mangleSourceName(N); // Terminate the whole name with an '@'. Out << '@'; diff --git a/clang/lib/AST/VTableBuilder.cpp b/clang/lib/AST/VTableBuilder.cpp index ab18d2f9e1f2e..f938565c3cb4e 100644 --- a/clang/lib/AST/VTableBuilder.cpp +++ b/clang/lib/AST/VTableBuilder.cpp @@ -1418,8 +1418,7 @@ FindNearestOverriddenMethod(const CXXMethodDecl *MD, OverriddenMethodsSetTy OverriddenMethods; ComputeAllOverriddenMethods(MD, OverriddenMethods); - for (const CXXRecordDecl *PrimaryBase : - llvm::make_range(Bases.rbegin(), Bases.rend())) { + for (const CXXRecordDecl *PrimaryBase : llvm::reverse(Bases)) { // Now check the overridden methods. for (const CXXMethodDecl *OverriddenMD : OverriddenMethods) { // We found our overridden method. @@ -3098,8 +3097,7 @@ void VFTableBuilder::AddMethods(BaseSubobject Base, unsigned BaseDepth, } static void PrintBasePath(const VPtrInfo::BasePath &Path, raw_ostream &Out) { - for (const CXXRecordDecl *Elem : - llvm::make_range(Path.rbegin(), Path.rend())) { + for (const CXXRecordDecl *Elem : llvm::reverse(Path)) { Out << "'"; Elem->printQualifiedName(Out); Out << "' in "; diff --git a/clang/lib/Analysis/CFG.cpp b/clang/lib/Analysis/CFG.cpp index 11987dfd55656..abf65e3efce98 100644 --- a/clang/lib/Analysis/CFG.cpp +++ b/clang/lib/Analysis/CFG.cpp @@ -1801,16 +1801,11 @@ void CFGBuilder::addLifetimeEnds(LocalScope::const_iterator B, autoCreateBlock(); // object with trivial destructor end their lifetime last (when storage // duration ends) - for (SmallVectorImpl<VarDecl *>::reverse_iterator I = DeclsTrivial.rbegin(), - E = DeclsTrivial.rend(); - I != E; ++I) - appendLifetimeEnds(Block, *I, S); + for (VarDecl *VD : llvm::reverse(DeclsTrivial)) + appendLifetimeEnds(Block, VD, S); - for (SmallVectorImpl<VarDecl *>::reverse_iterator - I = DeclsNonTrivial.rbegin(), - E = DeclsNonTrivial.rend(); - I != E; ++I) - appendLifetimeEnds(Block, *I, S); + for (VarDecl *VD : llvm::reverse(DeclsNonTrivial)) + appendLifetimeEnds(Block, VD, S); } /// Add to current block markers for ending scopes. @@ -1823,9 +1818,8 @@ void CFGBuilder::addScopesEnd(LocalScope::const_iterator B, autoCreateBlock(); - for (auto I = DeclsWithEndedScope.rbegin(), E = DeclsWithEndedScope.rend(); - I != E; ++I) - appendScopeEnd(Block, *I, S); + for (VarDecl *VD : llvm::reverse(DeclsWithEndedScope)) + appendScopeEnd(Block, VD, S); return; } @@ -1850,24 +1844,22 @@ void CFGBuilder::addAutomaticObjDtors(LocalScope::const_iterator B, for (LocalScope::const_iterator I = B; I != E; ++I) Decls.push_back(*I); - for (SmallVectorImpl<VarDecl*>::reverse_iterator I = Decls.rbegin(), - E = Decls.rend(); - I != E; ++I) { - if (hasTrivialDestructor(*I)) { + for (VarDecl *VD : llvm::reverse(Decls)) { + if (hasTrivialDestructor(VD)) { // If AddScopes is enabled and *I is a first variable in a scope, add a // ScopeEnd marker in a Block. - if (BuildOpts.AddScopes && DeclsWithEndedScope.count(*I)) { + if (BuildOpts.AddScopes && DeclsWithEndedScope.count(VD)) { autoCreateBlock(); - appendScopeEnd(Block, *I, S); + appendScopeEnd(Block, VD, S); } continue; } // If this destructor is marked as a no-return destructor, we need to // create a new block for the destructor which does not have as a successor // anything built thus far: control won't flow out of this block. - QualType Ty = (*I)->getType(); + QualType Ty = VD->getType(); if (Ty->isReferenceType()) { - Ty = getReferenceInitTemporaryType((*I)->getInit()); + Ty = getReferenceInitTemporaryType(VD->getInit()); } Ty = Context->getBaseElementType(Ty); @@ -1877,9 +1869,9 @@ void CFGBuilder::addAutomaticObjDtors(LocalScope::const_iterator B, autoCreateBlock(); // Add ScopeEnd just after automatic obj destructor. - if (BuildOpts.AddScopes && DeclsWithEndedScope.count(*I)) - appendScopeEnd(Block, *I, S); - appendAutomaticObjDtor(Block, *I, S); + if (BuildOpts.AddScopes && DeclsWithEndedScope.count(VD)) + appendScopeEnd(Block, VD, S); + appendAutomaticObjDtor(Block, VD, S); } } diff --git a/clang/lib/Analysis/CloneDetection.cpp b/clang/lib/Analysis/CloneDetection.cpp index 0a1122bd5a4af..65ac4ad6a5e53 100644 --- a/clang/lib/Analysis/CloneDetection.cpp +++ b/clang/lib/Analysis/CloneDetection.cpp @@ -147,9 +147,8 @@ void OnlyLargestCloneConstraint::constrain( // Erasing a list of indexes from the vector should be done with decreasing // indexes. As IndexesToRemove is constructed with increasing values, we just // reverse iterate over it to get the desired order. - for (auto I = IndexesToRemove.rbegin(); I != IndexesToRemove.rend(); ++I) { - Result.erase(Result.begin() + *I); - } + for (unsigned I : llvm::reverse(IndexesToRemove)) + Result.erase(Result.begin() + I); } bool FilenamePatternConstraint::isAutoGenerated( diff --git a/clang/lib/Analysis/ReachableCode.cpp b/clang/lib/Analysis/ReachableCode.cpp index be4ab0be373ee..5be8180113da8 100644 --- a/clang/lib/Analysis/ReachableCode.cpp +++ b/clang/lib/Analysis/ReachableCode.cpp @@ -87,10 +87,8 @@ static bool isDeadReturn(const CFGBlock *B, const Stmt *S) { // block, or may be in a subsequent block because of destructors. const CFGBlock *Current = B; while (true) { - for (CFGBlock::const_reverse_iterator I = Current->rbegin(), - E = Current->rend(); - I != E; ++I) { - if (Optional<CFGStmt> CS = I->getAs<CFGStmt>()) { + for (const CFGElement &CE : llvm::reverse(*Current)) { + if (Optional<CFGStmt> CS = CE.getAs<CFGStmt>()) { if (const ReturnStmt *RS = dyn_cast<ReturnStmt>(CS->getStmt())) { if (RS == S) return true; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits