LiveInterval: Add removeEmptySubRanges().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223887 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Matthias Braun 2014-12-10 01:12:40 +00:00
parent 6e616d2e97
commit f2f0589b02
2 changed files with 21 additions and 0 deletions

View File

@ -669,6 +669,10 @@ namespace llvm {
SubRanges = nullptr;
}
/// Removes all subranges without any segments (subranges without segments
/// are not considered valid and should only exist temporarily).
void removeEmptySubRanges();
/// getSize - Returns the sum of sizes of all the LiveRange's.
///
unsigned getSize() const;

View File

@ -592,6 +592,23 @@ VNInfo *LiveRange::MergeValueNumberInto(VNInfo *V1, VNInfo *V2) {
return V2;
}
void LiveInterval::removeEmptySubRanges() {
SubRange **NextPtr = &SubRanges;
SubRange *I = *NextPtr;
while (I != nullptr) {
if (!I->empty()) {
NextPtr = &I->Next;
I = *NextPtr;
continue;
}
// Skip empty subranges until we find the first nonempty one.
do {
I = I->Next;
} while (I != nullptr && I->empty());
*NextPtr = I;
}
}
unsigned LiveInterval::getSize() const {
unsigned Sum = 0;
for (const_iterator I = begin(), E = end(); I != E; ++I)