mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-16 12:24:03 +00:00
Add MachineLoopRange comparators for sorting loop lists by number and by area.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122073 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -42,6 +42,9 @@ private:
|
||||
/// Bit 0 = inside loop block.
|
||||
Map Intervals;
|
||||
|
||||
/// Loop area as measured by SlotIndex::distance.
|
||||
unsigned Area;
|
||||
|
||||
/// Create a MachineLoopRange, only accessible to MachineLoopRanges.
|
||||
MachineLoopRange(const MachineLoop*, Allocator&, SlotIndexes&);
|
||||
|
||||
@ -50,11 +53,27 @@ public:
|
||||
/// inteructions.
|
||||
bool overlaps(SlotIndex Start, SlotIndex Stop);
|
||||
|
||||
/// getNumber - Return the loop number. This is the same as the number of the
|
||||
/// header block.
|
||||
unsigned getNumber() const;
|
||||
|
||||
/// getArea - Return the loop area. This number is approximately proportional
|
||||
/// to the number of instructions in the loop.
|
||||
unsigned getArea() const { return Area; }
|
||||
|
||||
/// getMap - Allow public read-only access for IntervalMapOverlaps.
|
||||
const Map &getMap() { return Intervals; }
|
||||
|
||||
/// print - Print loop ranges on OS.
|
||||
void print(raw_ostream&) const;
|
||||
|
||||
/// byNumber - Comparator for array_pod_sort that sorts a list of
|
||||
/// MachineLoopRange pointers by number.
|
||||
static int byNumber(const void*, const void*);
|
||||
|
||||
/// byAreaDesc - Comparator for array_pod_sort that sorts a list of
|
||||
/// MachineLoopRange pointers by descending area, then by number.
|
||||
static int byAreaDesc(const void*, const void*);
|
||||
};
|
||||
|
||||
raw_ostream &operator<<(raw_ostream&, const MachineLoopRange&);
|
||||
|
Reference in New Issue
Block a user