Skip to content

Commit 1849244

Browse files
authored
[CodeGen] Remove atEnd method from defusechain iterators (llvm#120610)
This was not used much and there are better ways of writing it.
1 parent f739aa4 commit 1849244

File tree

4 files changed

+10
-15
lines changed

4 files changed

+10
-15
lines changed

llvm/include/llvm/CodeGen/MachineRegisterInfo.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1095,9 +1095,6 @@ class MachineRegisterInfo {
10951095
return !operator==(x);
10961096
}
10971097

1098-
/// atEnd - return true if this iterator is equal to reg_end() on the value.
1099-
bool atEnd() const { return Op == nullptr; }
1100-
11011098
// Iterator traversal: forward iteration only
11021099
defusechain_iterator &operator++() { // Preincrement
11031100
assert(Op && "Cannot increment end iterator!");
@@ -1203,9 +1200,6 @@ class MachineRegisterInfo {
12031200
return !operator==(x);
12041201
}
12051202

1206-
/// atEnd - return true if this iterator is equal to reg_end() on the value.
1207-
bool atEnd() const { return Op == nullptr; }
1208-
12091203
// Iterator traversal: forward iteration only
12101204
defusechain_instr_iterator &operator++() { // Preincrement
12111205
assert(Op && "Cannot increment end iterator!");

llvm/lib/CodeGen/MachineRegisterInfo.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -407,9 +407,11 @@ void MachineRegisterInfo::replaceRegWith(Register FromReg, Register ToReg) {
407407
MachineInstr *MachineRegisterInfo::getVRegDef(Register Reg) const {
408408
// Since we are in SSA form, we can use the first definition.
409409
def_instr_iterator I = def_instr_begin(Reg);
410-
assert((I.atEnd() || std::next(I) == def_instr_end()) &&
411-
"getVRegDef assumes a single definition or no definition");
412-
return !I.atEnd() ? &*I : nullptr;
410+
if (I == def_instr_end())
411+
return nullptr;
412+
assert(std::next(I) == def_instr_end() &&
413+
"getVRegDef assumes at most one definition");
414+
return &*I;
413415
}
414416

415417
/// getUniqueVRegDef - Return the unique machine instr that defines the

llvm/lib/CodeGen/MachineTraceMetrics.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -683,11 +683,10 @@ struct DataDep {
683683
DataDep(const MachineRegisterInfo *MRI, unsigned VirtReg, unsigned UseOp)
684684
: UseOp(UseOp) {
685685
assert(Register::isVirtualRegister(VirtReg));
686-
MachineRegisterInfo::def_iterator DefI = MRI->def_begin(VirtReg);
687-
assert(!DefI.atEnd() && "Register has no defs");
688-
DefMI = DefI->getParent();
689-
DefOp = DefI.getOperandNo();
690-
assert((++DefI).atEnd() && "Register has multiple defs");
686+
MachineOperand *DefMO = MRI->getOneDef(VirtReg);
687+
assert(DefMO && "Register does not have unique def");
688+
DefMI = DefMO->getParent();
689+
DefOp = DefMO->getOperandNo();
691690
}
692691
};
693692

llvm/lib/CodeGen/SwiftErrorValueTracking.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ void SwiftErrorValueTracking::propagateVRegs() {
259259
for (const auto &Use : VRegUpwardsUse) {
260260
const MachineBasicBlock *UseBB = Use.first.first;
261261
Register VReg = Use.second;
262-
if (!MRI.def_begin(VReg).atEnd())
262+
if (!MRI.def_empty(VReg))
263263
continue;
264264

265265
#ifdef EXPENSIVE_CHECKS

0 commit comments

Comments
 (0)