mirror of
https://github.com/RPCS3/llvm.git
synced 2025-04-04 22:31:44 +00:00
Simplify this code by using higher-level LiveVariables methods
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22989 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
76eb08bcda
commit
ab4b66d4c2
@ -431,12 +431,8 @@ void LiveIntervals::handleVirtualRegisterDef(MachineBasicBlock* mbb,
|
|||||||
|
|
||||||
// If this redefinition is dead, we need to add a dummy unit live
|
// If this redefinition is dead, we need to add a dummy unit live
|
||||||
// range covering the def slot.
|
// range covering the def slot.
|
||||||
for (LiveVariables::killed_iterator KI = lv_->dead_begin(mi),
|
if (lv_->RegisterDefIsDead(mi, interval.reg))
|
||||||
E = lv_->dead_end(mi); KI != E; ++KI)
|
|
||||||
if (KI->second == interval.reg) {
|
|
||||||
interval.addRange(LiveRange(RedefIndex, RedefIndex+1, 0));
|
interval.addRange(LiveRange(RedefIndex, RedefIndex+1, 0));
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
DEBUG(std::cerr << "RESULT: " << interval);
|
DEBUG(std::cerr << "RESULT: " << interval);
|
||||||
|
|
||||||
@ -496,14 +492,11 @@ void LiveIntervals::handlePhysicalRegisterDef(MachineBasicBlock *MBB,
|
|||||||
// If it is not used after definition, it is considered dead at
|
// If it is not used after definition, it is considered dead at
|
||||||
// the instruction defining it. Hence its interval is:
|
// the instruction defining it. Hence its interval is:
|
||||||
// [defSlot(def), defSlot(def)+1)
|
// [defSlot(def), defSlot(def)+1)
|
||||||
for (KillIter ki = lv_->dead_begin(mi), ke = lv_->dead_end(mi);
|
if (lv_->RegisterDefIsDead(mi, interval.reg)) {
|
||||||
ki != ke; ++ki) {
|
|
||||||
if (interval.reg == ki->second) {
|
|
||||||
DEBUG(std::cerr << " dead");
|
DEBUG(std::cerr << " dead");
|
||||||
end = getDefIndex(start) + 1;
|
end = getDefIndex(start) + 1;
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// If it is not dead on definition, it must be killed by a
|
// If it is not dead on definition, it must be killed by a
|
||||||
// subsequent instruction. Hence its interval is:
|
// subsequent instruction. Hence its interval is:
|
||||||
@ -512,15 +505,12 @@ void LiveIntervals::handlePhysicalRegisterDef(MachineBasicBlock *MBB,
|
|||||||
++mi;
|
++mi;
|
||||||
assert(mi != MBB->end() && "physreg was not killed in defining block!");
|
assert(mi != MBB->end() && "physreg was not killed in defining block!");
|
||||||
baseIndex += InstrSlots::NUM;
|
baseIndex += InstrSlots::NUM;
|
||||||
for (KillIter ki = lv_->killed_begin(mi), ke = lv_->killed_end(mi);
|
if (lv_->KillsRegister(mi, interval.reg)) {
|
||||||
ki != ke; ++ki) {
|
|
||||||
if (interval.reg == ki->second) {
|
|
||||||
DEBUG(std::cerr << " killed");
|
DEBUG(std::cerr << " killed");
|
||||||
end = getUseIndex(baseIndex) + 1;
|
end = getUseIndex(baseIndex) + 1;
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
assert(start < end && "did not find end of interval?");
|
assert(start < end && "did not find end of interval?");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user