diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-12-14 19:38:49 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-12-14 19:38:49 +0000 |
commit | 5c3ad0d51e671c2e13b9641d798ab62085150899 (patch) | |
tree | 81dbbcc2087b0c7c613753d67acb8cb9ceab13d7 /llvm/lib/CodeGen/LiveIntervalUnion.h | |
parent | 94f928b83f8c8ffda1e1315a3af33487a748ef8b (diff) | |
download | bcm5719-llvm-5c3ad0d51e671c2e13b9641d798ab62085150899.tar.gz bcm5719-llvm-5c3ad0d51e671c2e13b9641d798ab62085150899.zip |
Add LiveIntervalUnion print methods, RegAllocGreedy::trySplit debug spew.
llvm-svn: 121783
Diffstat (limited to 'llvm/lib/CodeGen/LiveIntervalUnion.h')
-rw-r--r-- | llvm/lib/CodeGen/LiveIntervalUnion.h | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/LiveIntervalUnion.h b/llvm/lib/CodeGen/LiveIntervalUnion.h index 92d248266e0..d8dcbda8d34 100644 --- a/llvm/lib/CodeGen/LiveIntervalUnion.h +++ b/llvm/lib/CodeGen/LiveIntervalUnion.h @@ -20,6 +20,8 @@ #include "llvm/ADT/IntervalMap.h" #include "llvm/CodeGen/LiveInterval.h" +#include <algorithm> + namespace llvm { class TargetRegisterInfo; @@ -71,8 +73,8 @@ public: SegmentIter begin() { return Segments.begin(); } SegmentIter end() { return Segments.end(); } SegmentIter find(SlotIndex x) { return Segments.find(x); } - bool empty() { return Segments.empty(); } - SlotIndex startIndex() { return Segments.start(); } + bool empty() const { return Segments.empty(); } + SlotIndex startIndex() const { return Segments.start(); } // Add a live virtual register to this union and merge its segments. void unify(LiveInterval &VirtReg); @@ -106,6 +108,19 @@ public: // Public default ctor. InterferenceResult(): VirtRegI(), LiveUnionI() {} + /// start - Return the start of the current overlap. + SlotIndex start() const { + return std::max(VirtRegI->start, LiveUnionI.start()); + } + + /// stop - Return the end of the current overlap. + SlotIndex stop() const { + return std::min(VirtRegI->end, LiveUnionI.stop()); + } + + /// interference - Return the register that is interfering here. + LiveInterval *interference() const { return LiveUnionI.value(); } + // Note: this interface provides raw access to the iterators because the // result has no way to tell if it's valid to dereference them. @@ -121,6 +136,8 @@ public: bool operator!=(const InterferenceResult &IR) const { return !operator==(IR); } + + void print(raw_ostream &OS, const TargetRegisterInfo *TRI) const; }; /// Query interferences between a single live virtual register and a live @@ -206,6 +223,7 @@ public: return InterferingVRegs; } + void print(raw_ostream &OS, const TargetRegisterInfo *TRI); private: Query(const Query&); // DO NOT IMPLEMENT void operator=(const Query&); // DO NOT IMPLEMENT |