Skip to content

Commit 1a605f3

Browse files
[CodeGen] Use make_early_inc_range (NFC)
1 parent 72710af commit 1a605f3

File tree

4 files changed

+42
-54
lines changed

4 files changed

+42
-54
lines changed

llvm/lib/CodeGen/MachineCopyPropagation.cpp

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -594,19 +594,16 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) {
594594
LLVM_DEBUG(dbgs() << "MCP: ForwardCopyPropagateBlock " << MBB.getName()
595595
<< "\n");
596596

597-
for (MachineBasicBlock::iterator I = MBB.begin(), E = MBB.end(); I != E; ) {
598-
MachineInstr *MI = &*I;
599-
++I;
600-
597+
for (MachineInstr &MI : llvm::make_early_inc_range(MBB)) {
601598
// Analyze copies (which don't overlap themselves).
602-
if (MI->isCopy() && !TRI->regsOverlap(MI->getOperand(0).getReg(),
603-
MI->getOperand(1).getReg())) {
604-
assert(MI->getOperand(0).getReg().isPhysical() &&
605-
MI->getOperand(1).getReg().isPhysical() &&
599+
if (MI.isCopy() && !TRI->regsOverlap(MI.getOperand(0).getReg(),
600+
MI.getOperand(1).getReg())) {
601+
assert(MI.getOperand(0).getReg().isPhysical() &&
602+
MI.getOperand(1).getReg().isPhysical() &&
606603
"MachineCopyPropagation should be run after register allocation!");
607604

608-
MCRegister Def = MI->getOperand(0).getReg().asMCReg();
609-
MCRegister Src = MI->getOperand(1).getReg().asMCReg();
605+
MCRegister Def = MI.getOperand(0).getReg().asMCReg();
606+
MCRegister Src = MI.getOperand(1).getReg().asMCReg();
610607

611608
// The two copies cancel out and the source of the first copy
612609
// hasn't been overridden, eliminate the second one. e.g.
@@ -623,31 +620,31 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) {
623620
// %ecx = COPY %eax
624621
// =>
625622
// %ecx = COPY %eax
626-
if (eraseIfRedundant(*MI, Def, Src) || eraseIfRedundant(*MI, Src, Def))
623+
if (eraseIfRedundant(MI, Def, Src) || eraseIfRedundant(MI, Src, Def))
627624
continue;
628625

629-
forwardUses(*MI);
626+
forwardUses(MI);
630627

631628
// Src may have been changed by forwardUses()
632-
Src = MI->getOperand(1).getReg().asMCReg();
629+
Src = MI.getOperand(1).getReg().asMCReg();
633630

634631
// If Src is defined by a previous copy, the previous copy cannot be
635632
// eliminated.
636-
ReadRegister(Src, *MI, RegularUse);
637-
for (const MachineOperand &MO : MI->implicit_operands()) {
633+
ReadRegister(Src, MI, RegularUse);
634+
for (const MachineOperand &MO : MI.implicit_operands()) {
638635
if (!MO.isReg() || !MO.readsReg())
639636
continue;
640637
MCRegister Reg = MO.getReg().asMCReg();
641638
if (!Reg)
642639
continue;
643-
ReadRegister(Reg, *MI, RegularUse);
640+
ReadRegister(Reg, MI, RegularUse);
644641
}
645642

646-
LLVM_DEBUG(dbgs() << "MCP: Copy is a deletion candidate: "; MI->dump());
643+
LLVM_DEBUG(dbgs() << "MCP: Copy is a deletion candidate: "; MI.dump());
647644

648645
// Copy is now a candidate for deletion.
649646
if (!MRI->isReserved(Def))
650-
MaybeDeadCopies.insert(MI);
647+
MaybeDeadCopies.insert(&MI);
651648

652649
// If 'Def' is previously source of another copy, then this earlier copy's
653650
// source is no longer available. e.g.
@@ -657,7 +654,7 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) {
657654
// ...
658655
// %xmm2 = copy %xmm9
659656
Tracker.clobberRegister(Def, *TRI);
660-
for (const MachineOperand &MO : MI->implicit_operands()) {
657+
for (const MachineOperand &MO : MI.implicit_operands()) {
661658
if (!MO.isReg() || !MO.isDef())
662659
continue;
663660
MCRegister Reg = MO.getReg().asMCReg();
@@ -666,29 +663,29 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) {
666663
Tracker.clobberRegister(Reg, *TRI);
667664
}
668665

669-
Tracker.trackCopy(MI, *TRI);
666+
Tracker.trackCopy(&MI, *TRI);
670667

671668
continue;
672669
}
673670

674671
// Clobber any earlyclobber regs first.
675-
for (const MachineOperand &MO : MI->operands())
672+
for (const MachineOperand &MO : MI.operands())
676673
if (MO.isReg() && MO.isEarlyClobber()) {
677674
MCRegister Reg = MO.getReg().asMCReg();
678675
// If we have a tied earlyclobber, that means it is also read by this
679676
// instruction, so we need to make sure we don't remove it as dead
680677
// later.
681678
if (MO.isTied())
682-
ReadRegister(Reg, *MI, RegularUse);
679+
ReadRegister(Reg, MI, RegularUse);
683680
Tracker.clobberRegister(Reg, *TRI);
684681
}
685682

686-
forwardUses(*MI);
683+
forwardUses(MI);
687684

688685
// Not a copy.
689686
SmallVector<Register, 2> Defs;
690687
const MachineOperand *RegMask = nullptr;
691-
for (const MachineOperand &MO : MI->operands()) {
688+
for (const MachineOperand &MO : MI.operands()) {
692689
if (MO.isRegMask())
693690
RegMask = &MO;
694691
if (!MO.isReg())
@@ -704,7 +701,7 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) {
704701
Defs.push_back(Reg.asMCReg());
705702
continue;
706703
} else if (MO.readsReg())
707-
ReadRegister(Reg.asMCReg(), *MI, MO.isDebug() ? DebugUse : RegularUse);
704+
ReadRegister(Reg.asMCReg(), MI, MO.isDebug() ? DebugUse : RegularUse);
708705
}
709706

710707
// The instruction has a register mask operand which means that it clobbers

llvm/lib/CodeGen/MachineLICM.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -781,15 +781,11 @@ void MachineLICMBase::HoistOutOfLoop(MachineDomTreeNode *HeaderN) {
781781

782782
// Process the block
783783
SpeculationState = SpeculateUnknown;
784-
for (MachineBasicBlock::iterator
785-
MII = MBB->begin(), E = MBB->end(); MII != E; ) {
786-
MachineBasicBlock::iterator NextMII = MII; ++NextMII;
787-
MachineInstr *MI = &*MII;
788-
if (!Hoist(MI, Preheader))
789-
UpdateRegPressure(MI);
784+
for (MachineInstr &MI : llvm::make_early_inc_range(*MBB)) {
785+
if (!Hoist(&MI, Preheader))
786+
UpdateRegPressure(&MI);
790787
// If we have hoisted an instruction that may store, it can only be a
791788
// constant store.
792-
MII = NextMII;
793789
}
794790

795791
// If it's a leaf node, it's done. Traverse upwards to pop ancestors.

llvm/lib/CodeGen/MachineRegisterInfo.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -383,9 +383,7 @@ void MachineRegisterInfo::replaceRegWith(Register FromReg, Register ToReg) {
383383
const TargetRegisterInfo *TRI = getTargetRegisterInfo();
384384

385385
// TODO: This could be more efficient by bulk changing the operands.
386-
for (reg_iterator I = reg_begin(FromReg), E = reg_end(); I != E; ) {
387-
MachineOperand &O = *I;
388-
++I;
386+
for (MachineOperand &O : llvm::make_early_inc_range(reg_operands(FromReg))) {
389387
if (Register::isPhysicalRegister(ToReg)) {
390388
O.substPhysReg(ToReg, *TRI);
391389
} else {

llvm/lib/CodeGen/MachineSink.cpp

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1718,25 +1718,22 @@ bool PostRAMachineSinking::tryToSinkCopy(MachineBasicBlock &CurBB,
17181718
UsedRegUnits.clear();
17191719
SeenDbgInstrs.clear();
17201720

1721-
for (auto I = CurBB.rbegin(), E = CurBB.rend(); I != E;) {
1722-
MachineInstr *MI = &*I;
1723-
++I;
1724-
1721+
for (MachineInstr &MI : llvm::make_early_inc_range(llvm::reverse(CurBB))) {
17251722
// Track the operand index for use in Copy.
17261723
SmallVector<unsigned, 2> UsedOpsInCopy;
17271724
// Track the register number defed in Copy.
17281725
SmallVector<unsigned, 2> DefedRegsInCopy;
17291726

17301727
// We must sink this DBG_VALUE if its operand is sunk. To avoid searching
17311728
// for DBG_VALUEs later, record them when they're encountered.
1732-
if (MI->isDebugValue()) {
1729+
if (MI.isDebugValue()) {
17331730
SmallDenseMap<MCRegister, SmallVector<unsigned, 2>, 4> MIUnits;
17341731
bool IsValid = true;
1735-
for (MachineOperand &MO : MI->debug_operands()) {
1732+
for (MachineOperand &MO : MI.debug_operands()) {
17361733
if (MO.isReg() && Register::isPhysicalRegister(MO.getReg())) {
17371734
// Bail if we can already tell the sink would be rejected, rather
17381735
// than needlessly accumulating lots of DBG_VALUEs.
1739-
if (hasRegisterDependency(MI, UsedOpsInCopy, DefedRegsInCopy,
1736+
if (hasRegisterDependency(&MI, UsedOpsInCopy, DefedRegsInCopy,
17401737
ModifiedRegUnits, UsedRegUnits)) {
17411738
IsValid = false;
17421739
break;
@@ -1750,28 +1747,28 @@ bool PostRAMachineSinking::tryToSinkCopy(MachineBasicBlock &CurBB,
17501747
}
17511748
if (IsValid) {
17521749
for (auto RegOps : MIUnits)
1753-
SeenDbgInstrs[RegOps.first].push_back({MI, RegOps.second});
1750+
SeenDbgInstrs[RegOps.first].push_back({&MI, RegOps.second});
17541751
}
17551752
continue;
17561753
}
17571754

1758-
if (MI->isDebugOrPseudoInstr())
1755+
if (MI.isDebugOrPseudoInstr())
17591756
continue;
17601757

17611758
// Do not move any instruction across function call.
1762-
if (MI->isCall())
1759+
if (MI.isCall())
17631760
return false;
17641761

1765-
if (!MI->isCopy() || !MI->getOperand(0).isRenamable()) {
1766-
LiveRegUnits::accumulateUsedDefed(*MI, ModifiedRegUnits, UsedRegUnits,
1762+
if (!MI.isCopy() || !MI.getOperand(0).isRenamable()) {
1763+
LiveRegUnits::accumulateUsedDefed(MI, ModifiedRegUnits, UsedRegUnits,
17671764
TRI);
17681765
continue;
17691766
}
17701767

17711768
// Don't sink the COPY if it would violate a register dependency.
1772-
if (hasRegisterDependency(MI, UsedOpsInCopy, DefedRegsInCopy,
1769+
if (hasRegisterDependency(&MI, UsedOpsInCopy, DefedRegsInCopy,
17731770
ModifiedRegUnits, UsedRegUnits)) {
1774-
LiveRegUnits::accumulateUsedDefed(*MI, ModifiedRegUnits, UsedRegUnits,
1771+
LiveRegUnits::accumulateUsedDefed(MI, ModifiedRegUnits, UsedRegUnits,
17751772
TRI);
17761773
continue;
17771774
}
@@ -1782,7 +1779,7 @@ bool PostRAMachineSinking::tryToSinkCopy(MachineBasicBlock &CurBB,
17821779
// Don't sink if we cannot find a single sinkable successor in which Reg
17831780
// is live-in.
17841781
if (!SuccBB) {
1785-
LiveRegUnits::accumulateUsedDefed(*MI, ModifiedRegUnits, UsedRegUnits,
1782+
LiveRegUnits::accumulateUsedDefed(MI, ModifiedRegUnits, UsedRegUnits,
17861783
TRI);
17871784
continue;
17881785
}
@@ -1793,7 +1790,7 @@ bool PostRAMachineSinking::tryToSinkCopy(MachineBasicBlock &CurBB,
17931790
// recorded which reg units that DBG_VALUEs read, if this instruction
17941791
// writes any of those units then the corresponding DBG_VALUEs must sink.
17951792
MapVector<MachineInstr *, MIRegs::second_type> DbgValsToSinkMap;
1796-
for (auto &MO : MI->operands()) {
1793+
for (auto &MO : MI.operands()) {
17971794
if (!MO.isReg() || !MO.isDef())
17981795
continue;
17991796

@@ -1811,10 +1808,10 @@ bool PostRAMachineSinking::tryToSinkCopy(MachineBasicBlock &CurBB,
18111808

18121809
// Clear the kill flag if SrcReg is killed between MI and the end of the
18131810
// block.
1814-
clearKillFlags(MI, CurBB, UsedOpsInCopy, UsedRegUnits, TRI);
1811+
clearKillFlags(&MI, CurBB, UsedOpsInCopy, UsedRegUnits, TRI);
18151812
MachineBasicBlock::iterator InsertPos = SuccBB->getFirstNonPHI();
1816-
performSink(*MI, *SuccBB, InsertPos, DbgValsToSink);
1817-
updateLiveIn(MI, SuccBB, UsedOpsInCopy, DefedRegsInCopy);
1813+
performSink(MI, *SuccBB, InsertPos, DbgValsToSink);
1814+
updateLiveIn(&MI, SuccBB, UsedOpsInCopy, DefedRegsInCopy);
18181815

18191816
Changed = true;
18201817
++NumPostRACopySink;

0 commit comments

Comments
 (0)