17 #ifndef LLVM_CODEGEN_LIVEINTERVALUNION_H
18 #define LLVM_CODEGEN_LIVEINTERVALUNION_H
25 class TargetRegisterInfo;
81 unsigned getTag()
const {
return Tag; }
111 bool CheckedFirstInterference;
112 bool SeenAllInterferences;
113 bool SeenUnspillableVReg;
114 unsigned Tag, UserTag;
117 Query(): LiveUnion(), VirtReg(), Tag(0), UserTag(0) {}
120 LiveUnion(LIU), VirtReg(VReg), CheckedFirstInterference(
false),
121 SeenAllInterferences(
false), SeenUnspillableVReg(
false)
127 InterferingVRegs.clear();
128 CheckedFirstInterference =
false;
129 SeenAllInterferences =
false;
130 SeenUnspillableVReg =
false;
136 assert(VReg && LIU &&
"Invalid arguments");
137 if (UserTag == UTag && VirtReg == VReg &&
150 assert(VirtReg &&
"uninitialized");
172 return InterferingVRegs;
177 void operator=(const
Query&) LLVM_DELETED_FUNCTION;
192 unsigned size()
const {
return Size; }
197 assert(idx < Size &&
"idx out of bounds");
205 #endif // !defined(LLVM_CODEGEN_LIVEINTERVALUNION_H)
bool seenAllInterferences() const
const_iterator begin() const
LiveIntervalUnion(Allocator &a)
const_iterator find(KeyT x) const
KeyT stop() const
stop - Return the largest mapped key in a non-empty map.
const_iterator end() const
Query(LiveInterval *VReg, LiveIntervalUnion *LIU)
void unify(LiveInterval &VirtReg)
void init(unsigned UTag, LiveInterval *VReg, LiveIntervalUnion *LIU)
bool empty() const
empty - Return true when no intervals are mapped.
const SmallVectorImpl< LiveInterval * > & interferingVRegs() const
void clear()
clear - Remove all entries.
LiveSegments::Allocator Allocator
SegmentIter find(SlotIndex x)
unsigned getTag() const
getTag - Return an opaque tag representing the current state of the union.
void print(raw_ostream &OS, const TargetRegisterInfo *TRI) const
bool overlap(const LiveInterval::Segment &VRSeg, const IntervalMap< SlotIndex, LiveInterval * >::const_iterator &LUSeg)
Compare a live virtual register segment to a LiveIntervalUnion segment.
bool isSeenInterference(LiveInterval *VReg) const
NDEBUG.
LiveIntervalUnion & operator[](unsigned idx)
KeyT start() const
start - Return the smallest mapped key in a non-empty map.
bool changedSince(unsigned tag) const
changedSince - Return true if the union change since getTag returned tag.
bool seenUnspillableVReg() const
#define LLVM_DELETED_FUNCTION
LiveSegments::iterator SegmentIter
void extract(LiveInterval &VirtReg)
void verify(LiveVirtRegBitSet &VisitedVRegs)
unsigned collectInterferingVRegs(unsigned MaxInterferingRegs=UINT_MAX)
SlotIndex startIndex() const
LiveInterval & virtReg() const
SlotIndex - An opaque wrapper around machine indexes.
SparseBitVector< 128 > LiveVirtRegBitSet