mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-25 04:39:51 +00:00
Fix some more LiveInterval enumerations.
Deterministically enumerate the virtual registers instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158872 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d4348a2dc2
commit
12a7be9ba4
@ -884,13 +884,11 @@ bool LiveIntervals::shrinkToUses(LiveInterval *li,
|
||||
//
|
||||
|
||||
void LiveIntervals::addKillFlags() {
|
||||
for (iterator I = begin(), E = end(); I != E; ++I) {
|
||||
unsigned Reg = I->first;
|
||||
if (TargetRegisterInfo::isPhysicalRegister(Reg))
|
||||
continue;
|
||||
for (unsigned i = 0, e = MRI->getNumVirtRegs(); i != e; ++i) {
|
||||
unsigned Reg = TargetRegisterInfo::index2VirtReg(i);
|
||||
if (MRI->reg_nodbg_empty(Reg))
|
||||
continue;
|
||||
LiveInterval *LI = I->second;
|
||||
LiveInterval *LI = &getInterval(Reg);
|
||||
|
||||
// Every instruction that kills Reg corresponds to a live range end point.
|
||||
for (LiveInterval::iterator RI = LI->begin(), RE = LI->end(); RI != RE;
|
||||
|
@ -1092,20 +1092,21 @@ void MachineVerifier::verifyLiveVariables() {
|
||||
|
||||
void MachineVerifier::verifyLiveIntervals() {
|
||||
assert(LiveInts && "Don't call verifyLiveIntervals without LiveInts");
|
||||
for (LiveIntervals::const_iterator LVI = LiveInts->begin(),
|
||||
LVE = LiveInts->end(); LVI != LVE; ++LVI) {
|
||||
const LiveInterval &LI = *LVI->second;
|
||||
for (unsigned i = 0, e = MRI->getNumVirtRegs(); i != e; ++i) {
|
||||
unsigned Reg = TargetRegisterInfo::index2VirtReg(i);
|
||||
|
||||
// Spilling and splitting may leave unused registers around. Skip them.
|
||||
if (MRI->reg_nodbg_empty(LI.reg))
|
||||
if (MRI->reg_nodbg_empty(Reg))
|
||||
continue;
|
||||
|
||||
// Physical registers have much weirdness going on, mostly from coalescing.
|
||||
// We should probably fix it, but for now just ignore them.
|
||||
if (TargetRegisterInfo::isPhysicalRegister(LI.reg))
|
||||
if (!LiveInts->hasInterval(Reg)) {
|
||||
report("Missing live interval for virtual register", MF);
|
||||
*OS << PrintReg(Reg, TRI) << " still has defs or uses\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
assert(LVI->first == LI.reg && "Invalid reg to interval mapping");
|
||||
const LiveInterval &LI = LiveInts->getInterval(Reg);
|
||||
assert(Reg == LI.reg && "Invalid reg to interval mapping");
|
||||
|
||||
for (LiveInterval::const_vni_iterator I = LI.vni_begin(), E = LI.vni_end();
|
||||
I!=E; ++I) {
|
||||
|
Loading…
Reference in New Issue
Block a user