mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-25 04:39:44 +00:00
Add LiveInterval::RenumberValues - Garbage collection for VNInfos.
After heavy editing of a live interval, it is much easier to simply renumber the live values instead of trying to keep track of the unused ones. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110463 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
90c579de5a
commit
23436597a8
@ -336,6 +336,10 @@ namespace llvm {
|
|||||||
return VNI;
|
return VNI;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// RenumberValues - Renumber all values in order of appearance and remove
|
||||||
|
/// unused values.
|
||||||
|
void RenumberValues();
|
||||||
|
|
||||||
/// isOnlyLROfValNo - Return true if the specified live range is the only
|
/// isOnlyLROfValNo - Return true if the specified live range is the only
|
||||||
/// one defined by the its val#.
|
/// one defined by the its val#.
|
||||||
bool isOnlyLROfValNo(const LiveRange *LR) {
|
bool isOnlyLROfValNo(const LiveRange *LR) {
|
||||||
|
@ -180,6 +180,21 @@ void LiveInterval::markValNoForDeletion(VNInfo *ValNo) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// RenumberValues - Renumber all values in order of appearance and delete the
|
||||||
|
/// remaining unused values.
|
||||||
|
void LiveInterval::RenumberValues() {
|
||||||
|
SmallPtrSet<VNInfo*, 8> Seen;
|
||||||
|
valnos.clear();
|
||||||
|
for (const_iterator I = begin(), E = end(); I != E; ++I) {
|
||||||
|
VNInfo *VNI = I->valno;
|
||||||
|
if (!Seen.insert(VNI))
|
||||||
|
continue;
|
||||||
|
assert(!VNI->isUnused() && "Unused valno used by live range");
|
||||||
|
VNI->id = (unsigned)valnos.size();
|
||||||
|
valnos.push_back(VNI);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// extendIntervalEndTo - This method is used when we want to extend the range
|
/// extendIntervalEndTo - This method is used when we want to extend the range
|
||||||
/// specified by I to end at the specified endpoint. To do this, we should
|
/// specified by I to end at the specified endpoint. To do this, we should
|
||||||
/// merge and eliminate all ranges that this will overlap with. The iterator is
|
/// merge and eliminate all ranges that this will overlap with. The iterator is
|
||||||
|
@ -553,8 +553,10 @@ void SplitEditor::rewrite() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// dupli_ goes in last, after rewriting.
|
// dupli_ goes in last, after rewriting.
|
||||||
if (dupli_)
|
if (dupli_) {
|
||||||
|
dupli_->RenumberValues();
|
||||||
intervals_.push_back(dupli_);
|
intervals_.push_back(dupli_);
|
||||||
|
}
|
||||||
|
|
||||||
// FIXME: *Calculate spill weights, allocation hints, and register classes for
|
// FIXME: *Calculate spill weights, allocation hints, and register classes for
|
||||||
// firstInterval..
|
// firstInterval..
|
||||||
|
Loading…
Reference in New Issue
Block a user