Improved tracking of value number kills. VN kills are now represented

as an (index,bool) pair. The bool flag records whether the kill is a
PHI kill or not. This code will be used to enable splitting of live
intervals containing PHI-kills.

A slight change to live interval weights introduced an extra spill
into lsr-code-insertion (outside the critical sections). The test 
condition has been updated to reflect this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75097 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Lang Hames
2009-07-09 03:57:02 +00:00
parent 482fa0f2bc
commit ffd1326ff8
9 changed files with 164 additions and 66 deletions

View File

@@ -377,8 +377,9 @@ void LiveInterval::scaleNumbering(unsigned factor) {
vni->def = InstrSlots::scale(vni->def, factor);
for (unsigned i = 0; i < vni->kills.size(); ++i) {
if (vni->kills[i] != 0)
vni->kills[i] = InstrSlots::scale(vni->kills[i], factor);
if (!vni->kills[i].isPHIKill)
vni->kills[i].killIdx =
InstrSlots::scale(vni->kills[i].killIdx, factor);
}
}
}
@@ -840,7 +841,9 @@ void LiveInterval::print(std::ostream &OS,
if (ee || vni->hasPHIKill()) {
OS << "-(";
for (unsigned j = 0; j != ee; ++j) {
OS << vni->kills[j];
OS << vni->kills[j].killIdx;
if (vni->kills[j].isPHIKill)
OS << "*";
if (j != ee-1)
OS << " ";
}