[llvm] 5fc9e30 - [Scalar] Use range-based for loops (NFC)
Kazu Hirata via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 25 19:54:59 PST 2021
Author: Kazu Hirata
Date: 2021-02-25T19:54:38-08:00
New Revision: 5fc9e309856997337dc6fdbc46ac36e37225b139
URL: https://github.com/llvm/llvm-project/commit/5fc9e309856997337dc6fdbc46ac36e37225b139
DIFF: https://github.com/llvm/llvm-project/commit/5fc9e309856997337dc6fdbc46ac36e37225b139.diff
LOG: [Scalar] Use range-based for loops (NFC)
Added:
Modified:
llvm/lib/Transforms/Scalar/DCE.cpp
llvm/lib/Transforms/Scalar/GVN.cpp
llvm/lib/Transforms/Scalar/LICM.cpp
llvm/lib/Transforms/Scalar/LoopInterchange.cpp
llvm/lib/Transforms/Scalar/LoopRerollPass.cpp
llvm/lib/Transforms/Scalar/LoopUnswitch.cpp
llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
llvm/lib/Transforms/Scalar/NaryReassociate.cpp
llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
llvm/lib/Transforms/Scalar/StructurizeCFG.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Scalar/DCE.cpp b/llvm/lib/Transforms/Scalar/DCE.cpp
index d55adf7c2d12..d309799d95f0 100644
--- a/llvm/lib/Transforms/Scalar/DCE.cpp
+++ b/llvm/lib/Transforms/Scalar/DCE.cpp
@@ -125,14 +125,11 @@ static bool eliminateDeadCode(Function &F, TargetLibraryInfo *TLI) {
// Iterate over the original function, only adding insts to the worklist
// if they actually need to be revisited. This avoids having to pre-init
// the worklist with the entire function's worth of instructions.
- for (inst_iterator FI = inst_begin(F), FE = inst_end(F); FI != FE;) {
- Instruction *I = &*FI;
- ++FI;
-
+ for (Instruction &I : llvm::make_early_inc_range(instructions(F))) {
// We're visiting this instruction now, so make sure it's not in the
// worklist from an earlier visit.
- if (!WorkList.count(I))
- MadeChange |= DCEInstruction(I, WorkList, TLI);
+ if (!WorkList.count(&I))
+ MadeChange |= DCEInstruction(&I, WorkList, TLI);
}
while (!WorkList.empty()) {
diff --git a/llvm/lib/Transforms/Scalar/GVN.cpp b/llvm/lib/Transforms/Scalar/GVN.cpp
index 85ce8fc4a890..24491d37616b 100644
--- a/llvm/lib/Transforms/Scalar/GVN.cpp
+++ b/llvm/lib/Transforms/Scalar/GVN.cpp
@@ -679,10 +679,9 @@ PreservedAnalyses GVN::run(Function &F, FunctionAnalysisManager &AM) {
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
LLVM_DUMP_METHOD void GVN::dump(DenseMap<uint32_t, Value*>& d) const {
errs() << "{\n";
- for (DenseMap<uint32_t, Value*>::iterator I = d.begin(),
- E = d.end(); I != E; ++I) {
- errs() << I->first << "\n";
- I->second->dump();
+ for (auto &I : d) {
+ errs() << I.first << "\n";
+ I.second->dump();
}
errs() << "}\n";
}
@@ -1850,8 +1849,8 @@ bool GVN::ValueTable::areCallValsEqual(uint32_t Num, uint32_t NewNum,
MD->getNonLocalCallDependency(Call);
// Check to see if the Call has no function local clobber.
- for (unsigned i = 0; i < deps.size(); i++) {
- if (deps[i].getResult().isNonFuncLocal())
+ for (const NonLocalDepEntry &D : deps) {
+ if (D.getResult().isNonFuncLocal())
return true;
}
return false;
@@ -2733,9 +2732,8 @@ void GVN::verifyRemoved(const Instruction *Inst) const {
// Walk through the value number scope to make sure the instruction isn't
// ferreted away in it.
- for (DenseMap<uint32_t, LeaderTableEntry>::const_iterator
- I = LeaderTable.begin(), E = LeaderTable.end(); I != E; ++I) {
- const LeaderTableEntry *Node = &I->second;
+ for (const auto &I : LeaderTable) {
+ const LeaderTableEntry *Node = &I.second;
assert(Node->Val != Inst && "Inst still in value numbering scope!");
while (Node->Next) {
diff --git a/llvm/lib/Transforms/Scalar/LICM.cpp b/llvm/lib/Transforms/Scalar/LICM.cpp
index d2b4ba296f41..d82142f6d77f 100644
--- a/llvm/lib/Transforms/Scalar/LICM.cpp
+++ b/llvm/lib/Transforms/Scalar/LICM.cpp
@@ -1473,9 +1473,8 @@ static Instruction *cloneInstructionInExitBlock(
// invariant instructions, and then walk their operands to re-establish
// LCSSA. That will eliminate creating PHI nodes just to nuke them when
// sinking bottom-up.
- for (User::op_iterator OI = New->op_begin(), OE = New->op_end(); OI != OE;
- ++OI)
- if (Instruction *OInst = dyn_cast<Instruction>(*OI))
+ for (Use &Op : New->operands())
+ if (Instruction *OInst = dyn_cast<Instruction>(Op))
if (Loop *OLoop = LI->getLoopFor(OInst->getParent()))
if (!OLoop->contains(&PN)) {
PHINode *OpPN =
@@ -1483,7 +1482,7 @@ static Instruction *cloneInstructionInExitBlock(
OInst->getName() + ".lcssa", &ExitBlock.front());
for (unsigned i = 0, e = PN.getNumIncomingValues(); i != e; ++i)
OpPN->addIncoming(OInst, PN.getIncomingBlock(i));
- *OI = OpPN;
+ Op = OpPN;
}
return New;
}
diff --git a/llvm/lib/Transforms/Scalar/LoopInterchange.cpp b/llvm/lib/Transforms/Scalar/LoopInterchange.cpp
index ff0f9f8e981b..b6e071fe5faa 100644
--- a/llvm/lib/Transforms/Scalar/LoopInterchange.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopInterchange.cpp
@@ -1272,9 +1272,7 @@ bool LoopInterchangeTransform::transform() {
assert(!NewI->mayHaveSideEffects() &&
"Moving instructions with side-effects may change behavior of "
"the loop nest!");
- for (auto UI = WorkList[i]->use_begin(), UE = WorkList[i]->use_end();
- UI != UE;) {
- Use &U = *UI++;
+ for (Use &U : llvm::make_early_inc_range(WorkList[i]->uses())) {
Instruction *UserI = cast<Instruction>(U.getUser());
if (!InnerLoop->contains(UserI->getParent()) ||
UserI->getParent() == NewLatch || UserI == InductionPHI)
diff --git a/llvm/lib/Transforms/Scalar/LoopRerollPass.cpp b/llvm/lib/Transforms/Scalar/LoopRerollPass.cpp
index b3bae47e96de..539377f2327a 100644
--- a/llvm/lib/Transforms/Scalar/LoopRerollPass.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopRerollPass.cpp
@@ -716,9 +716,8 @@ void LoopReroll::DAGRootTracker::collectInLoopUserSet(
}
// We also want to collect single-user "feeder" values.
- for (User::op_iterator OI = I->op_begin(),
- OIE = I->op_end(); OI != OIE; ++OI) {
- if (Instruction *Op = dyn_cast<Instruction>(*OI))
+ for (Use &U : I->operands()) {
+ if (Instruction *Op = dyn_cast<Instruction>(U))
if (Op->hasOneUse() && L->contains(Op) && !Exclude.count(Op) &&
!Final.count(Op))
Queue.push_back(Op);
diff --git a/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp b/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp
index 4278583d642a..c55347273855 100644
--- a/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp
@@ -387,8 +387,8 @@ void LUAnalysisCache::cloneData(const Loop *NewLoop, const Loop *OldLoop,
// Clone unswitched values info:
// for new loop switches we clone info about values that was
// already unswitched and has redundant successors.
- for (UnswitchedValsIt I = Insts.begin(); I != Insts.end(); ++I) {
- const SwitchInst *OldInst = I->first;
+ for (const auto &I : Insts) {
+ const SwitchInst *OldInst = I.first;
Value *NewI = VMap.lookup(OldInst);
const SwitchInst *NewInst = cast_or_null<SwitchInst>(NewI);
assert(NewInst && "All instructions that are in SrcBB must be in VMap.");
diff --git a/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp b/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
index 8e251ca940a3..b854757bb31e 100644
--- a/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
+++ b/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp
@@ -997,8 +997,7 @@ class LowerMatrixIntrinsics {
ToRemove.push_back(Inst);
Value *Flattened = nullptr;
- for (auto I = Inst->use_begin(), E = Inst->use_end(); I != E;) {
- Use &U = *I++;
+ for (Use &U : llvm::make_early_inc_range(Inst->uses())) {
if (ShapeMap.find(U.getUser()) == ShapeMap.end()) {
if (!Flattened)
Flattened = Matrix.embedInVector(Builder);
diff --git a/llvm/lib/Transforms/Scalar/NaryReassociate.cpp b/llvm/lib/Transforms/Scalar/NaryReassociate.cpp
index 84ea9526a977..9ba6b47eb4bc 100644
--- a/llvm/lib/Transforms/Scalar/NaryReassociate.cpp
+++ b/llvm/lib/Transforms/Scalar/NaryReassociate.cpp
@@ -224,15 +224,14 @@ bool NaryReassociatePass::doOneIteration(Function &F) {
SmallVector<WeakTrackingVH, 16> DeadInsts;
for (const auto Node : depth_first(DT)) {
BasicBlock *BB = Node->getBlock();
- for (auto I = BB->begin(); I != BB->end(); ++I) {
- Instruction *OrigI = &*I;
+ for (Instruction &OrigI : *BB) {
const SCEV *OrigSCEV = nullptr;
- if (Instruction *NewI = tryReassociate(OrigI, OrigSCEV)) {
+ if (Instruction *NewI = tryReassociate(&OrigI, OrigSCEV)) {
Changed = true;
- OrigI->replaceAllUsesWith(NewI);
+ OrigI.replaceAllUsesWith(NewI);
// Add 'OrigI' to the list of dead instructions.
- DeadInsts.push_back(WeakTrackingVH(OrigI));
+ DeadInsts.push_back(WeakTrackingVH(&OrigI));
// Add the rewritten instruction to SeenExprs; the original
// instruction is deleted.
const SCEV *NewSCEV = SE->getSCEV(NewI);
@@ -260,7 +259,7 @@ bool NaryReassociatePass::doOneIteration(Function &F) {
if (NewSCEV != OrigSCEV)
SeenExprs[OrigSCEV].push_back(WeakTrackingVH(NewI));
} else if (OrigSCEV)
- SeenExprs[OrigSCEV].push_back(WeakTrackingVH(OrigI));
+ SeenExprs[OrigSCEV].push_back(WeakTrackingVH(&OrigI));
}
}
// Delete all dead instructions from 'DeadInsts'.
diff --git a/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp b/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
index b2e63605a036..ff6de10616f7 100644
--- a/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
+++ b/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
@@ -153,14 +153,13 @@ static void replaceLoopInvariantUses(Loop &L, Value *Invariant,
assert(!isa<Constant>(Invariant) && "Why are we unswitching on a constant?");
// Replace uses of LIC in the loop with the given constant.
- for (auto UI = Invariant->use_begin(), UE = Invariant->use_end(); UI != UE;) {
- // Grab the use and walk past it so we can clobber it in the use list.
- Use *U = &*UI++;
- Instruction *UserI = dyn_cast<Instruction>(U->getUser());
+ // We use make_early_inc_range as set invalidates the iterator.
+ for (Use &U : llvm::make_early_inc_range(Invariant->uses())) {
+ Instruction *UserI = dyn_cast<Instruction>(U.getUser());
// Replace this use within the loop body.
if (UserI && L.contains(UserI))
- U->set(&Replacement);
+ U.set(&Replacement);
}
}
@@ -2294,21 +2293,19 @@ static void unswitchNontrivialInvariants(
Direction ? ConstantInt::getFalse(BI->getContext())
: ConstantInt::getTrue(BI->getContext());
for (Value *Invariant : Invariants)
- for (auto UI = Invariant->use_begin(), UE = Invariant->use_end();
- UI != UE;) {
- // Grab the use and walk past it so we can clobber it in the use list.
- Use *U = &*UI++;
- Instruction *UserI = dyn_cast<Instruction>(U->getUser());
+ // Use make_early_inc_range here as set invalidates the iterator.
+ for (Use &U : llvm::make_early_inc_range(Invariant->uses())) {
+ Instruction *UserI = dyn_cast<Instruction>(U.getUser());
if (!UserI)
continue;
// Replace it with the 'continue' side if in the main loop body, and the
// unswitched if in the cloned blocks.
if (DT.dominates(LoopPH, UserI->getParent()))
- U->set(ContinueReplacement);
+ U.set(ContinueReplacement);
else if (ReplaceUnswitched &&
DT.dominates(ClonedPH, UserI->getParent()))
- U->set(UnswitchedReplacement);
+ U.set(UnswitchedReplacement);
}
}
diff --git a/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp b/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp
index d8ea62dfa325..ac580b4161f4 100644
--- a/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp
+++ b/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp
@@ -693,11 +693,9 @@ void StructurizeCFG::changeExit(RegionNode *Node, BasicBlock *NewExit,
BasicBlock *OldExit = SubRegion->getExit();
BasicBlock *Dominator = nullptr;
- // Find all the edges from the sub region to the exit
- for (auto BBI = pred_begin(OldExit), E = pred_end(OldExit); BBI != E;) {
- // Incrememt BBI before mucking with BB's terminator.
- BasicBlock *BB = *BBI++;
-
+ // Find all the edges from the sub region to the exit.
+ // We use make_early_inc_range here because we modify BB's terminator.
+ for (BasicBlock *BB : llvm::make_early_inc_range(predecessors(OldExit))) {
if (!SubRegion->contains(BB))
continue;
@@ -923,10 +921,9 @@ void StructurizeCFG::rebuildSSA() {
for (BasicBlock *BB : ParentRegion->blocks())
for (Instruction &I : *BB) {
bool Initialized = false;
- // We may modify the use list as we iterate over it, so be careful to
- // compute the next element in the use list at the top of the loop.
- for (auto UI = I.use_begin(), E = I.use_end(); UI != E;) {
- Use &U = *UI++;
+ // We may modify the use list as we iterate over it, so we use
+ // make_early_inc_range.
+ for (Use &U : llvm::make_early_inc_range(I.uses())) {
Instruction *User = cast<Instruction>(U.getUser());
if (User->getParent() == BB) {
continue;
More information about the llvm-commits
mailing list