[clang] [Analysis] Use range-based for loops (NFC) (PR #146466)
Kazu Hirata via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 30 21:15:10 PDT 2025
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/146466
None
>From 1480b40e0ea317111b432465493b746c10706ffc Mon Sep 17 00:00:00 2001
From: Kazu Hirata <kazu at google.com>
Date: Sun, 29 Jun 2025 12:27:42 -0700
Subject: [PATCH] [Analysis] Use range-based for loops (NFC)
---
clang/include/clang/Analysis/CFG.h | 7 +++----
clang/lib/Analysis/CFG.cpp | 5 ++---
clang/lib/Analysis/CFGStmtMap.cpp | 4 ++--
clang/lib/Analysis/CallGraph.cpp | 5 +----
clang/lib/Analysis/LiveVariables.cpp | 10 ++++------
clang/lib/Analysis/PathDiagnostic.cpp | 4 ++--
clang/lib/Analysis/ReachableCode.cpp | 5 ++---
7 files changed, 16 insertions(+), 24 deletions(-)
diff --git a/clang/include/clang/Analysis/CFG.h b/clang/include/clang/Analysis/CFG.h
index e70c70335e597..1b1ff5e558ec5 100644
--- a/clang/include/clang/Analysis/CFG.h
+++ b/clang/include/clang/Analysis/CFG.h
@@ -1394,10 +1394,9 @@ class CFG {
//===--------------------------------------------------------------------===//
template <typename Callback> void VisitBlockStmts(Callback &O) const {
- for (const_iterator I = begin(), E = end(); I != E; ++I)
- for (CFGBlock::const_iterator BI = (*I)->begin(), BE = (*I)->end();
- BI != BE; ++BI) {
- if (std::optional<CFGStmt> stmt = BI->getAs<CFGStmt>())
+ for (CFGBlock *BB : *this)
+ for (const CFGElement &Elem : *BB) {
+ if (std::optional<CFGStmt> stmt = Elem.getAs<CFGStmt>())
O(const_cast<Stmt *>(stmt->getStmt()));
}
}
diff --git a/clang/lib/Analysis/CFG.cpp b/clang/lib/Analysis/CFG.cpp
index cf7595952be27..9c642d77db765 100644
--- a/clang/lib/Analysis/CFG.cpp
+++ b/clang/lib/Analysis/CFG.cpp
@@ -1754,10 +1754,9 @@ std::unique_ptr<CFG> CFGBuilder::buildCFG(const Decl *D, Stmt *Statement) {
// Add successors to the Indirect Goto Dispatch block (if we have one).
if (CFGBlock *B = cfg->getIndirectGotoBlock())
- for (LabelSetTy::iterator I = AddressTakenLabels.begin(),
- E = AddressTakenLabels.end(); I != E; ++I ) {
+ for (LabelDecl *LD : AddressTakenLabels) {
// Lookup the target block.
- LabelMapTy::iterator LI = LabelMap.find(*I);
+ LabelMapTy::iterator LI = LabelMap.find(LD);
// If there is no target block that contains label, then we are looking
// at an incomplete AST. Handle this by not registering a successor.
diff --git a/clang/lib/Analysis/CFGStmtMap.cpp b/clang/lib/Analysis/CFGStmtMap.cpp
index c3a4581e1fb10..028e62ba89b79 100644
--- a/clang/lib/Analysis/CFGStmtMap.cpp
+++ b/clang/lib/Analysis/CFGStmtMap.cpp
@@ -83,8 +83,8 @@ CFGStmtMap *CFGStmtMap::Build(CFG *C, ParentMap *PM) {
// Walk all blocks, accumulating the block-level expressions, labels,
// and terminators.
- for (CFG::iterator I = C->begin(), E = C->end(); I != E; ++I)
- Accumulate(*SM, *I);
+ for (CFGBlock *BB : *C)
+ Accumulate(*SM, BB);
return new CFGStmtMap(PM, SM);
}
diff --git a/clang/lib/Analysis/CallGraph.cpp b/clang/lib/Analysis/CallGraph.cpp
index 6a2b0392ccea6..26646cd6b6502 100644
--- a/clang/lib/Analysis/CallGraph.cpp
+++ b/clang/lib/Analysis/CallGraph.cpp
@@ -223,10 +223,7 @@ void CallGraph::print(raw_ostream &OS) const {
// We are going to print the graph in reverse post order, partially, to make
// sure the output is deterministic.
llvm::ReversePostOrderTraversal<const CallGraph *> RPOT(this);
- for (llvm::ReversePostOrderTraversal<const CallGraph *>::rpo_iterator
- I = RPOT.begin(), E = RPOT.end(); I != E; ++I) {
- const CallGraphNode *N = *I;
-
+ for (const CallGraphNode *N : RPOT) {
OS << " Function: ";
if (N == Root)
OS << "< root >";
diff --git a/clang/lib/Analysis/LiveVariables.cpp b/clang/lib/Analysis/LiveVariables.cpp
index c1b2ff41edc0a..375fdb3695e2f 100644
--- a/clang/lib/Analysis/LiveVariables.cpp
+++ b/clang/lib/Analysis/LiveVariables.cpp
@@ -546,8 +546,8 @@ LiveVariablesImpl::runOnBlock(const CFGBlock *block,
void LiveVariables::runOnAllBlocks(LiveVariables::Observer &obs) {
const CFG *cfg = getImpl(impl).analysisContext.getCFG();
- for (CFG::const_iterator it = cfg->begin(), ei = cfg->end(); it != ei; ++it)
- getImpl(impl).runOnBlock(*it, getImpl(impl).blocksEndToLiveness[*it], &obs);
+ for (CFGBlock *B : *cfg)
+ getImpl(impl).runOnBlock(B, getImpl(impl).blocksEndToLiveness[B], &obs);
}
LiveVariables::LiveVariables(void *im) : impl(im) {}
@@ -618,10 +618,8 @@ void LiveVariables::dumpBlockLiveness(const SourceManager &M) {
void LiveVariablesImpl::dumpBlockLiveness(const SourceManager &M) {
std::vector<const CFGBlock *> vec;
- for (llvm::DenseMap<const CFGBlock *, LiveVariables::LivenessValues>::iterator
- it = blocksEndToLiveness.begin(), ei = blocksEndToLiveness.end();
- it != ei; ++it) {
- vec.push_back(it->first);
+ for (const auto &KV : blocksEndToLiveness) {
+ vec.push_back(KV.first);
}
llvm::sort(vec, [](const CFGBlock *A, const CFGBlock *B) {
return A->getBlockID() < B->getBlockID();
diff --git a/clang/lib/Analysis/PathDiagnostic.cpp b/clang/lib/Analysis/PathDiagnostic.cpp
index b1fbc3c9eff94..ef24efd3c4bd0 100644
--- a/clang/lib/Analysis/PathDiagnostic.cpp
+++ b/clang/lib/Analysis/PathDiagnostic.cpp
@@ -1146,9 +1146,9 @@ void PathDiagnostic::FullProfile(llvm::FoldingSetNodeID &ID) const {
LLVM_DUMP_METHOD void PathPieces::dump() const {
unsigned index = 0;
- for (PathPieces::const_iterator I = begin(), E = end(); I != E; ++I) {
+ for (const PathDiagnosticPieceRef &Piece : *this) {
llvm::errs() << "[" << index++ << "] ";
- (*I)->dump();
+ Piece->dump();
llvm::errs() << "\n";
}
}
diff --git a/clang/lib/Analysis/ReachableCode.cpp b/clang/lib/Analysis/ReachableCode.cpp
index 739c47b12e8c4..4a9ab5d9f0f73 100644
--- a/clang/lib/Analysis/ReachableCode.cpp
+++ b/clang/lib/Analysis/ReachableCode.cpp
@@ -460,9 +460,8 @@ static bool isInCoroutineStmt(const Stmt *DeadStmt, const CFGBlock *Block) {
const Stmt *CoroStmt = nullptr;
// Find the first coroutine statement after the DeadStmt in the block.
bool AfterDeadStmt = false;
- for (CFGBlock::const_iterator I = Block->begin(), E = Block->end(); I != E;
- ++I)
- if (std::optional<CFGStmt> CS = I->getAs<CFGStmt>()) {
+ for (const CFGElement &Elem : *Block)
+ if (std::optional<CFGStmt> CS = Elem.getAs<CFGStmt>()) {
const Stmt *S = CS->getStmt();
if (S == DeadStmt)
AfterDeadStmt = true;
More information about the cfe-commits
mailing list