diff options
author | Kazu Hirata <kazu@google.com> | 2021-10-31 07:57:36 -0700 |
---|---|---|
committer | Kazu Hirata <kazu@google.com> | 2021-10-31 07:57:36 -0700 |
commit | 1a605f395ff079ced140f04ee743dbfc7fc46ec9 (patch) | |
tree | da7766686c7292c9d7b7b7e7fcd5f66a9eac85ca /llvm/lib/CodeGen/MachineCopyPropagation.cpp | |
parent | 72710af2334849dfaa9419b341617dd457292e7c (diff) | |
download | llvm-1a605f395ff079ced140f04ee743dbfc7fc46ec9.zip llvm-1a605f395ff079ced140f04ee743dbfc7fc46ec9.tar.gz llvm-1a605f395ff079ced140f04ee743dbfc7fc46ec9.tar.bz2 |
[CodeGen] Use make_early_inc_range (NFC)
Diffstat (limited to 'llvm/lib/CodeGen/MachineCopyPropagation.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineCopyPropagation.cpp | 47 |
1 files changed, 22 insertions, 25 deletions
diff --git a/llvm/lib/CodeGen/MachineCopyPropagation.cpp b/llvm/lib/CodeGen/MachineCopyPropagation.cpp index e3fbd88..7c83bac 100644 --- a/llvm/lib/CodeGen/MachineCopyPropagation.cpp +++ b/llvm/lib/CodeGen/MachineCopyPropagation.cpp @@ -594,19 +594,16 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) { LLVM_DEBUG(dbgs() << "MCP: ForwardCopyPropagateBlock " << MBB.getName() << "\n"); - for (MachineBasicBlock::iterator I = MBB.begin(), E = MBB.end(); I != E; ) { - MachineInstr *MI = &*I; - ++I; - + for (MachineInstr &MI : llvm::make_early_inc_range(MBB)) { // Analyze copies (which don't overlap themselves). - if (MI->isCopy() && !TRI->regsOverlap(MI->getOperand(0).getReg(), - MI->getOperand(1).getReg())) { - assert(MI->getOperand(0).getReg().isPhysical() && - MI->getOperand(1).getReg().isPhysical() && + if (MI.isCopy() && !TRI->regsOverlap(MI.getOperand(0).getReg(), + MI.getOperand(1).getReg())) { + assert(MI.getOperand(0).getReg().isPhysical() && + MI.getOperand(1).getReg().isPhysical() && "MachineCopyPropagation should be run after register allocation!"); - MCRegister Def = MI->getOperand(0).getReg().asMCReg(); - MCRegister Src = MI->getOperand(1).getReg().asMCReg(); + MCRegister Def = MI.getOperand(0).getReg().asMCReg(); + MCRegister Src = MI.getOperand(1).getReg().asMCReg(); // The two copies cancel out and the source of the first copy // hasn't been overridden, eliminate the second one. e.g. @@ -623,31 +620,31 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) { // %ecx = COPY %eax // => // %ecx = COPY %eax - if (eraseIfRedundant(*MI, Def, Src) || eraseIfRedundant(*MI, Src, Def)) + if (eraseIfRedundant(MI, Def, Src) || eraseIfRedundant(MI, Src, Def)) continue; - forwardUses(*MI); + forwardUses(MI); // Src may have been changed by forwardUses() - Src = MI->getOperand(1).getReg().asMCReg(); + Src = MI.getOperand(1).getReg().asMCReg(); // If Src is defined by a previous copy, the previous copy cannot be // eliminated. - ReadRegister(Src, *MI, RegularUse); - for (const MachineOperand &MO : MI->implicit_operands()) { + ReadRegister(Src, MI, RegularUse); + for (const MachineOperand &MO : MI.implicit_operands()) { if (!MO.isReg() || !MO.readsReg()) continue; MCRegister Reg = MO.getReg().asMCReg(); if (!Reg) continue; - ReadRegister(Reg, *MI, RegularUse); + ReadRegister(Reg, MI, RegularUse); } - LLVM_DEBUG(dbgs() << "MCP: Copy is a deletion candidate: "; MI->dump()); + LLVM_DEBUG(dbgs() << "MCP: Copy is a deletion candidate: "; MI.dump()); // Copy is now a candidate for deletion. if (!MRI->isReserved(Def)) - MaybeDeadCopies.insert(MI); + MaybeDeadCopies.insert(&MI); // If 'Def' is previously source of another copy, then this earlier copy's // source is no longer available. e.g. @@ -657,7 +654,7 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) { // ... // %xmm2 = copy %xmm9 Tracker.clobberRegister(Def, *TRI); - for (const MachineOperand &MO : MI->implicit_operands()) { + for (const MachineOperand &MO : MI.implicit_operands()) { if (!MO.isReg() || !MO.isDef()) continue; MCRegister Reg = MO.getReg().asMCReg(); @@ -666,29 +663,29 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) { Tracker.clobberRegister(Reg, *TRI); } - Tracker.trackCopy(MI, *TRI); + Tracker.trackCopy(&MI, *TRI); continue; } // Clobber any earlyclobber regs first. - for (const MachineOperand &MO : MI->operands()) + for (const MachineOperand &MO : MI.operands()) if (MO.isReg() && MO.isEarlyClobber()) { MCRegister Reg = MO.getReg().asMCReg(); // If we have a tied earlyclobber, that means it is also read by this // instruction, so we need to make sure we don't remove it as dead // later. if (MO.isTied()) - ReadRegister(Reg, *MI, RegularUse); + ReadRegister(Reg, MI, RegularUse); Tracker.clobberRegister(Reg, *TRI); } - forwardUses(*MI); + forwardUses(MI); // Not a copy. SmallVector<Register, 2> Defs; const MachineOperand *RegMask = nullptr; - for (const MachineOperand &MO : MI->operands()) { + for (const MachineOperand &MO : MI.operands()) { if (MO.isRegMask()) RegMask = &MO; if (!MO.isReg()) @@ -704,7 +701,7 @@ void MachineCopyPropagation::ForwardCopyPropagateBlock(MachineBasicBlock &MBB) { Defs.push_back(Reg.asMCReg()); continue; } else if (MO.readsReg()) - ReadRegister(Reg.asMCReg(), *MI, MO.isDebug() ? DebugUse : RegularUse); + ReadRegister(Reg.asMCReg(), MI, MO.isDebug() ? DebugUse : RegularUse); } // The instruction has a register mask operand which means that it clobbers |