mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-26 07:56:43 +00:00
Convert a bunch of loops to foreach. NFC.
After r244074, we now have a successors() method to iterate over all the successors of a TerminatorInst. This commit changes a bunch of eligible loops to use it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244260 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4752eae71b
commit
be21eab7ac
@ -5034,8 +5034,7 @@ ScalarEvolution::ComputeExitLimit(const Loop *L, BasicBlock *ExitingBlock) {
|
||||
if (!Pred)
|
||||
return getCouldNotCompute();
|
||||
TerminatorInst *PredTerm = Pred->getTerminator();
|
||||
for (unsigned i = 0, e = PredTerm->getNumSuccessors(); i != e; ++i) {
|
||||
BasicBlock *PredSucc = PredTerm->getSuccessor(i);
|
||||
for (const BasicBlock *PredSucc : PredTerm->successors()) {
|
||||
if (PredSucc == BB)
|
||||
continue;
|
||||
// If the predecessor has a successor that isn't BB and isn't
|
||||
|
@ -404,8 +404,7 @@ void BasicBlock::replaceSuccessorsPhiUsesWith(BasicBlock *New) {
|
||||
// Cope with being called on a BasicBlock that doesn't have a terminator
|
||||
// yet. Clang's CodeGenFunction::EmitReturnBlock() likes to do this.
|
||||
return;
|
||||
for (unsigned i = 0, e = TI->getNumSuccessors(); i != e; ++i) {
|
||||
BasicBlock *Succ = TI->getSuccessor(i);
|
||||
for (BasicBlock *Succ : TI->successors()) {
|
||||
// N.B. Succ might not be a complete BasicBlock, so don't assume
|
||||
// that it ends with a non-phi instruction.
|
||||
for (iterator II = Succ->begin(), IE = Succ->end(); II != IE; ++II) {
|
||||
|
@ -1355,8 +1355,8 @@ bool ARMFastISel::SelectIndirectBr(const Instruction *I) {
|
||||
TII.get(Opc)).addReg(AddrReg));
|
||||
|
||||
const IndirectBrInst *IB = cast<IndirectBrInst>(I);
|
||||
for (unsigned i = 0, e = IB->getNumSuccessors(); i != e; ++i)
|
||||
FuncInfo.MBB->addSuccessor(FuncInfo.MBBMap[IB->getSuccessor(i)]);
|
||||
for (const BasicBlock *SuccBB : IB->successors())
|
||||
FuncInfo.MBB->addSuccessor(FuncInfo.MBBMap[SuccBB]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -1759,8 +1759,8 @@ bool PPCFastISel::SelectIndirectBr(const Instruction *I) {
|
||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::BCTR8));
|
||||
|
||||
const IndirectBrInst *IB = cast<IndirectBrInst>(I);
|
||||
for (unsigned i = 0, e = IB->getNumSuccessors(); i != e; ++i)
|
||||
FuncInfo.MBB->addSuccessor(FuncInfo.MBBMap[IB->getSuccessor(i)]);
|
||||
for (const BasicBlock *SuccBB : IB->successors())
|
||||
FuncInfo.MBB->addSuccessor(FuncInfo.MBBMap[SuccBB]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -2927,8 +2927,8 @@ static bool AddReachableCodeToWorklist(BasicBlock *BB, const DataLayout &DL,
|
||||
}
|
||||
}
|
||||
|
||||
for (unsigned i = 0, e = TI->getNumSuccessors(); i != e; ++i)
|
||||
Worklist.push_back(TI->getSuccessor(i));
|
||||
for (BasicBlock *SuccBB : TI->successors())
|
||||
Worklist.push_back(SuccBB);
|
||||
} while (!Worklist.empty());
|
||||
|
||||
// Once we've found all of the instructions to add to instcombine's worklist,
|
||||
|
@ -467,8 +467,8 @@ bool LoopRotate::rotateLoop(Loop *L, bool SimplifiedLatch) {
|
||||
// terminator into OrigPreHeader. Fix up the PHI nodes in each of OrigHeader's
|
||||
// successors by duplicating their incoming values for OrigHeader.
|
||||
TerminatorInst *TI = OrigHeader->getTerminator();
|
||||
for (unsigned i = 0, e = TI->getNumSuccessors(); i != e; ++i)
|
||||
for (BasicBlock::iterator BI = TI->getSuccessor(i)->begin();
|
||||
for (BasicBlock *SuccBB : TI->successors())
|
||||
for (BasicBlock::iterator BI = SuccBB->begin();
|
||||
PHINode *PN = dyn_cast<PHINode>(BI); ++BI)
|
||||
PN->addIncoming(PN->getIncomingValueForBlock(OrigHeader), OrigPreheader);
|
||||
|
||||
|
@ -1796,10 +1796,9 @@ bool IPSCCP::runOnModule(Module &M) {
|
||||
MadeChanges = true;
|
||||
|
||||
TerminatorInst *TI = BB->getTerminator();
|
||||
for (unsigned i = 0, e = TI->getNumSuccessors(); i != e; ++i) {
|
||||
BasicBlock *Succ = TI->getSuccessor(i);
|
||||
for (BasicBlock *Succ : TI->successors()) {
|
||||
if (!Succ->empty() && isa<PHINode>(Succ->begin()))
|
||||
TI->getSuccessor(i)->removePredecessor(BB);
|
||||
Succ->removePredecessor(BB);
|
||||
}
|
||||
if (!TI->use_empty())
|
||||
TI->replaceAllUsesWith(UndefValue::get(TI->getType()));
|
||||
|
@ -358,13 +358,9 @@ void StructurizeCFG::analyzeLoops(RegionNode *N) {
|
||||
BasicBlock *BB = N->getNodeAs<BasicBlock>();
|
||||
BranchInst *Term = cast<BranchInst>(BB->getTerminator());
|
||||
|
||||
for (unsigned i = 0, e = Term->getNumSuccessors(); i != e; ++i) {
|
||||
BasicBlock *Succ = Term->getSuccessor(i);
|
||||
|
||||
if (Visited.count(Succ)) {
|
||||
for (BasicBlock *Succ : Term->successors())
|
||||
if (Visited.count(Succ))
|
||||
Loops[Succ] = BB;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -41,8 +41,8 @@ void llvm::DeleteDeadBlock(BasicBlock *BB) {
|
||||
|
||||
// Loop through all of our successors and make sure they know that one
|
||||
// of their predecessors is going away.
|
||||
for (unsigned i = 0, e = BBTerm->getNumSuccessors(); i != e; ++i)
|
||||
BBTerm->getSuccessor(i)->removePredecessor(BB);
|
||||
for (BasicBlock *Succ : BBTerm->successors())
|
||||
Succ->removePredecessor(BB);
|
||||
|
||||
// Zap all the instructions in the block.
|
||||
while (!BB->empty()) {
|
||||
|
@ -400,8 +400,8 @@ void PruningFunctionCloner::CloneBlock(const BasicBlock *BB,
|
||||
// If the director says to skip with a terminate instruction, we still
|
||||
// need to clone this block's successors.
|
||||
const TerminatorInst *TI = NewBB->getTerminator();
|
||||
for (unsigned i = 0, e = TI->getNumSuccessors(); i != e; ++i)
|
||||
ToClone.push_back(TI->getSuccessor(i));
|
||||
for (const BasicBlock *Succ : TI->successors())
|
||||
ToClone.push_back(Succ);
|
||||
return;
|
||||
}
|
||||
assert(Action != CloningDirector::SkipInstruction &&
|
||||
@ -450,8 +450,8 @@ void PruningFunctionCloner::CloneBlock(const BasicBlock *BB,
|
||||
|
||||
// Recursively clone any reachable successor blocks.
|
||||
const TerminatorInst *TI = BB->getTerminator();
|
||||
for (unsigned i = 0, e = TI->getNumSuccessors(); i != e; ++i)
|
||||
ToClone.push_back(TI->getSuccessor(i));
|
||||
for (const BasicBlock *Succ : TI->successors())
|
||||
ToClone.push_back(Succ);
|
||||
}
|
||||
|
||||
if (CodeInfo) {
|
||||
|
@ -188,9 +188,8 @@ bool llvm::ConstantFoldTerminator(BasicBlock *BB, bool DeleteDeadConditions,
|
||||
BasicBlock *BB = SI->getParent();
|
||||
|
||||
// Remove entries from PHI nodes which we no longer branch to...
|
||||
for (unsigned i = 0, e = SI->getNumSuccessors(); i != e; ++i) {
|
||||
for (BasicBlock *Succ : SI->successors()) {
|
||||
// Found case matching a constant operand?
|
||||
BasicBlock *Succ = SI->getSuccessor(i);
|
||||
if (Succ == TheOnlyDest)
|
||||
TheOnlyDest = nullptr; // Don't modify the first branch to TheOnlyDest
|
||||
else
|
||||
|
@ -2565,8 +2565,7 @@ static bool SimplifyTerminatorOnSelect(TerminatorInst *OldTerm, Value *Cond,
|
||||
BasicBlock *KeepEdge2 = TrueBB != FalseBB ? FalseBB : nullptr;
|
||||
|
||||
// Then remove the rest.
|
||||
for (unsigned I = 0, E = OldTerm->getNumSuccessors(); I != E; ++I) {
|
||||
BasicBlock *Succ = OldTerm->getSuccessor(I);
|
||||
for (BasicBlock *Succ : OldTerm->successors()) {
|
||||
// Make sure only to keep exactly one copy of each edge.
|
||||
if (Succ == KeepEdge1)
|
||||
KeepEdge1 = nullptr;
|
||||
|
Loading…
x
Reference in New Issue
Block a user