[clang] eb1c7c1 - [AST, Analysis] Use llvm::reverse (NFC)
Kazu Hirata via cfe-commits
cfe-commits at lists.llvm.org
Sun Nov 7 09:53:34 PST 2021
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;
More information about the cfe-commits
mailing list