From e4bab21848dc5ce734997a9d0dd659f97c31411b Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Sat, 6 Nov 2021 18:31:20 -0800 Subject: [PATCH] [AMDGPU] Use MachineBasicBlock::{predecessors,successors} (NFC) --- .../Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp | 55 +++++++--------------- llvm/lib/Target/AMDGPU/AMDILCFGStructurizer.cpp | 10 ++-- llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | 9 ++-- llvm/lib/Target/AMDGPU/SIModeRegister.cpp | 8 +--- 4 files changed, 24 insertions(+), 58 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp b/llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp index b5a7503..095249d 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUMachineCFGStructurizer.cpp @@ -748,10 +748,8 @@ void LinearizedRegion::storeLiveOuts(MachineBasicBlock *MBB, // If we have a successor with a PHI, source coming from this MBB we have to // add the register as live out - for (MachineBasicBlock::succ_iterator SI = MBB->succ_begin(), - E = MBB->succ_end(); - SI != E; ++SI) { - for (auto &II : *(*SI)) { + for (MachineBasicBlock *Succ : MBB->successors()) { + for (auto &II : *Succ) { if (II.isPHI()) { MachineInstr &PHI = II; int numPreds = getPHINumInputs(PHI); @@ -760,7 +758,7 @@ void LinearizedRegion::storeLiveOuts(MachineBasicBlock *MBB, unsigned PHIReg = getPHISourceReg(PHI, i); LLVM_DEBUG(dbgs() << "Add LiveOut (PhiSource " << printMBBReference(*MBB) - << " -> " << printMBBReference(*(*SI)) + << " -> " << printMBBReference(*Succ) << "): " << printReg(PHIReg, TRI) << "\n"); addLiveOut(PHIReg); } @@ -1235,11 +1233,7 @@ bool AMDGPUMachineCFGStructurizer::regionIsSimpleIf(RegionMRT *Region) { return false; } - for (MachineBasicBlock::const_succ_iterator SI = Entry->succ_begin(), - E = Entry->succ_end(); - SI != E; ++SI) { - MachineBasicBlock *Current = *SI; - + for (MachineBasicBlock *Current : Entry->successors()) { if (Current == Succ) { FoundBypass = true; } else if ((Current->succ_size() == 1) && @@ -1277,10 +1271,7 @@ static void fixRegionTerminator(RegionMRT *Region) { auto Exit = LRegion->getExit(); SmallPtrSet Successors; - for (MachineBasicBlock::const_succ_iterator SI = Exit->succ_begin(), - SE = Exit->succ_end(); - SI != SE; ++SI) { - MachineBasicBlock *Succ = *SI; + for (MachineBasicBlock *Succ : Exit->successors()) { if (LRegion->contains(Succ)) { // Do not allow re-assign assert(InternalSucc == nullptr); @@ -1774,27 +1765,20 @@ static void removeExternalCFGEdges(MachineBasicBlock *StartMBB, unsigned SuccSize = StartMBB->succ_size(); if (SuccSize > 0) { MachineBasicBlock *StartMBBSucc = *(StartMBB->succ_begin()); - for (MachineBasicBlock::succ_iterator PI = EndMBB->succ_begin(), - E = EndMBB->succ_end(); - PI != E; ++PI) { + for (MachineBasicBlock *Succ : EndMBB->successors()) { // Either we have a back-edge to the entry block, or a back-edge to the // successor of the entry block since the block may be split. - if ((*PI) != StartMBB && - !((*PI) == StartMBBSucc && StartMBB != EndMBB && SuccSize == 1)) { + if (Succ != StartMBB && + !(Succ == StartMBBSucc && StartMBB != EndMBB && SuccSize == 1)) { Succs.insert( - std::pair(EndMBB, *PI)); + std::pair(EndMBB, Succ)); } } } - for (MachineBasicBlock::pred_iterator PI = StartMBB->pred_begin(), - E = StartMBB->pred_end(); - PI != E; ++PI) { - if ((*PI) != EndMBB) { - Succs.insert( - std::pair(*PI, StartMBB)); - } - } + for (MachineBasicBlock *Pred : StartMBB->predecessors()) + if (Pred != EndMBB) + Succs.insert(std::make_pair(Pred, StartMBB)); for (auto SI : Succs) { std::pair Edge = SI; @@ -1812,14 +1796,9 @@ MachineBasicBlock *AMDGPUMachineCFGStructurizer::createIfBlock( MachineBasicBlock *IfBB = MF->CreateMachineBasicBlock(); if (InheritPreds) { - for (MachineBasicBlock::pred_iterator PI = CodeBBStart->pred_begin(), - E = CodeBBStart->pred_end(); - PI != E; ++PI) { - if ((*PI) != CodeBBEnd) { - MachineBasicBlock *Pred = (*PI); + for (MachineBasicBlock *Pred : CodeBBStart->predecessors()) + if (Pred != CodeBBEnd) Pred->addSuccessor(IfBB); - } - } } removeExternalCFGEdges(CodeBBStart, CodeBBEnd); @@ -2566,11 +2545,9 @@ static void removeOldExitPreds(RegionMRT *Region) { static bool mbbHasBackEdge(MachineBasicBlock *MBB, SmallPtrSet &MBBs) { - for (auto SI = MBB->succ_begin(), SE = MBB->succ_end(); SI != SE; ++SI) { - if (MBBs.contains(*SI)) { + for (MachineBasicBlock *Succ : MBB->successors()) + if (MBBs.contains(Succ)) return true; - } - } return false; } diff --git a/llvm/lib/Target/AMDGPU/AMDILCFGStructurizer.cpp b/llvm/lib/Target/AMDGPU/AMDILCFGStructurizer.cpp index 52ac401..e87dfd6 100644 --- a/llvm/lib/Target/AMDGPU/AMDILCFGStructurizer.cpp +++ b/llvm/lib/Target/AMDGPU/AMDILCFGStructurizer.cpp @@ -632,9 +632,8 @@ bool AMDGPUCFGStructurizer::isReturnBlock(MachineBasicBlock *MBB) { void AMDGPUCFGStructurizer::cloneSuccessorList(MachineBasicBlock *DstMBB, MachineBasicBlock *SrcMBB) { - for (MachineBasicBlock::succ_iterator It = SrcMBB->succ_begin(), - iterEnd = SrcMBB->succ_end(); It != iterEnd; ++It) - DstMBB->addSuccessor(*It); // *iter's predecessor is also taken care of + for (MachineBasicBlock *Succ : SrcMBB->successors()) + DstMBB->addSuccessor(Succ); // *iter's predecessor is also taken care of } MachineBasicBlock *AMDGPUCFGStructurizer::clone(MachineBasicBlock *MBB) { @@ -1323,12 +1322,9 @@ int AMDGPUCFGStructurizer::improveSimpleJumpintoIf(MachineBasicBlock *HeadMBB, insertInstrBefore(I, R600::ENDIF); // put initReg = 2 to other predecessors of landBlk - for (MachineBasicBlock::pred_iterator PI = LandBlk->pred_begin(), - PE = LandBlk->pred_end(); PI != PE; ++PI) { - MachineBasicBlock *MBB = *PI; + for (MachineBasicBlock *MBB : LandBlk->predecessors()) if (MBB != TrueMBB && MBB != FalseMBB) report_fatal_error("Extra register needed to handle CFG"); - } } LLVM_DEBUG( dbgs() << "result from improveSimpleJumpintoIf: "; diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp index e201dab..fa1dfc6 100644 --- a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp +++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp @@ -7419,19 +7419,16 @@ void SIInstrInfo::convertNonUniformLoopRegion( Register BackEdgeReg = MRI.createVirtualRegister(RI.getBoolRC()); MachineInstrBuilder HeaderPHIBuilder = BuildMI(*(MF), Branch->getDebugLoc(), get(TargetOpcode::PHI), DstReg); - for (MachineBasicBlock::pred_iterator PI = LoopEntry->pred_begin(), - E = LoopEntry->pred_end(); - PI != E; ++PI) { - if (*PI == LoopEnd) { + for (MachineBasicBlock *PMBB : LoopEntry->predecessors()) { + if (PMBB == LoopEnd) { HeaderPHIBuilder.addReg(BackEdgeReg); } else { - MachineBasicBlock *PMBB = *PI; Register ZeroReg = MRI.createVirtualRegister(RI.getBoolRC()); materializeImmediate(*PMBB, PMBB->getFirstTerminator(), DebugLoc(), ZeroReg, 0); HeaderPHIBuilder.addReg(ZeroReg); } - HeaderPHIBuilder.addMBB(*PI); + HeaderPHIBuilder.addMBB(PMBB); } MachineInstr *HeaderPhi = HeaderPHIBuilder; MachineInstr *SIIFBREAK = BuildMI(*(MF), Branch->getDebugLoc(), diff --git a/llvm/lib/Target/AMDGPU/SIModeRegister.cpp b/llvm/lib/Target/AMDGPU/SIModeRegister.cpp index 3d659ec..2ba7261 100644 --- a/llvm/lib/Target/AMDGPU/SIModeRegister.cpp +++ b/llvm/lib/Target/AMDGPU/SIModeRegister.cpp @@ -373,12 +373,8 @@ void SIModeRegister::processBlockPhase2(MachineBasicBlock &MBB, BlockInfo[ThisBlock]->Exit = TmpStatus; // Add the successors to the work list so we can propagate the changed exit // status. - for (MachineBasicBlock::succ_iterator S = MBB.succ_begin(), - E = MBB.succ_end(); - S != E; S = std::next(S)) { - MachineBasicBlock &B = *(*S); - Phase2List.push(&B); - } + for (MachineBasicBlock *Succ : MBB.successors()) + Phase2List.push(Succ); } BlockInfo[ThisBlock]->ExitSet = ExitSet; if (RevisitRequired) -- 2.7.4