diff --git a/clang/include/clang/Analysis/CFG.h b/clang/include/clang/Analysis/CFG.h index e70c70335e59..1b1ff5e558ec 100644 --- a/clang/include/clang/Analysis/CFG.h +++ b/clang/include/clang/Analysis/CFG.h @@ -1394,10 +1394,9 @@ public: //===--------------------------------------------------------------------===// template 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 stmt = BI->getAs()) + for (CFGBlock *BB : *this) + for (const CFGElement &Elem : *BB) { + if (std::optional stmt = Elem.getAs()) O(const_cast(stmt->getStmt())); } } diff --git a/clang/lib/Analysis/CFG.cpp b/clang/lib/Analysis/CFG.cpp index c23e3d057c52..d960d5130332 100644 --- a/clang/lib/Analysis/CFG.cpp +++ b/clang/lib/Analysis/CFG.cpp @@ -1753,10 +1753,9 @@ std::unique_ptr 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 c3a4581e1fb1..028e62ba89b7 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 6a2b0392ccea..26646cd6b650 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 RPOT(this); - for (llvm::ReversePostOrderTraversal::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 c1b2ff41edc0..375fdb3695e2 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 vec; - for (llvm::DenseMap::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 b1fbc3c9eff9..ef24efd3c4bd 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 739c47b12e8c..4a9ab5d9f0f7 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 CS = I->getAs()) { + for (const CFGElement &Elem : *Block) + if (std::optional CS = Elem.getAs()) { const Stmt *S = CS->getStmt(); if (S == DeadStmt) AfterDeadStmt = true;