mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-17 04:24:00 +00:00
LiveInterval: Fix SubRange memory leak.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228405 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -598,6 +598,11 @@ VNInfo *LiveRange::MergeValueNumberInto(VNInfo *V1, VNInfo *V2) {
|
||||
return V2;
|
||||
}
|
||||
|
||||
void LiveInterval::freeSubRange(SubRange *S) {
|
||||
S->~SubRange();
|
||||
// Memory was allocated with BumpPtr allocator and is not freed here.
|
||||
}
|
||||
|
||||
void LiveInterval::removeEmptySubRanges() {
|
||||
SubRange **NextPtr = &SubRanges;
|
||||
SubRange *I = *NextPtr;
|
||||
@ -609,12 +614,22 @@ void LiveInterval::removeEmptySubRanges() {
|
||||
}
|
||||
// Skip empty subranges until we find the first nonempty one.
|
||||
do {
|
||||
I = I->Next;
|
||||
SubRange *Next = I->Next;
|
||||
freeSubRange(I);
|
||||
I = Next;
|
||||
} while (I != nullptr && I->empty());
|
||||
*NextPtr = I;
|
||||
}
|
||||
}
|
||||
|
||||
void LiveInterval::clearSubRanges() {
|
||||
for (SubRange *I = SubRanges, *Next; I != nullptr; I = Next) {
|
||||
Next = I->Next;
|
||||
freeSubRange(I);
|
||||
}
|
||||
SubRanges = nullptr;
|
||||
}
|
||||
|
||||
/// Helper function for constructMainRangeFromSubranges(): Search the CFG
|
||||
/// backwards until we find a place covered by a LiveRange segment that actually
|
||||
/// has a valno set.
|
||||
|
Reference in New Issue
Block a user