class LiveRange
Declaration
class LiveRange { /* full declaration omitted */ };
Description
This class represents the liveness of a register, stack slot, etc. It manages an ordered list of Segment objects. The Segments are organized in a static single assignment form: At places where a new value is defined or different values reach a CFG join a new segment with a new value number is used.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:156
Member Variables
- public llvm::LiveRange::Segments segments
- public llvm::LiveRange::VNInfoList valnos
- public std::unique_ptr<SegmentSet> segmentSet
Method Overview
- public llvm::LiveRange::iterator FindSegmentContaining(llvm::SlotIndex Idx)
- public llvm::LiveRange::const_iterator FindSegmentContaining(llvm::SlotIndex Idx) const
- public LiveRange(const llvm::LiveRange & Other, llvm::BumpPtrAllocator & Allocator)
- public LiveRange(bool UseSegmentSet = false)
- public void MergeSegmentsInAsValue(const llvm::LiveRange & RHS, llvm::VNInfo * LHSValNo)
- public void MergeValueInAsValue(const llvm::LiveRange & RHS, const llvm::VNInfo * RHSValNo, llvm::VNInfo * LHSValNo)
- public llvm::VNInfo * MergeValueNumberInto(llvm::VNInfo * V1, llvm::VNInfo * V2)
- public llvm::LiveQueryResult Query(llvm::SlotIndex Idx) const
- public void RenumberValues()
- public llvm::LiveRange::iterator addSegment(llvm::LiveRange::Segment S)
- public llvm::LiveRange::iterator advanceTo(llvm::LiveRange::iterator I, llvm::SlotIndex Pos)
- public llvm::LiveRange::const_iterator advanceTo(llvm::LiveRange::const_iterator I, llvm::SlotIndex Pos) const
- protected void append(const LiveRange::Segment S)
- public void assign(const llvm::LiveRange & Other, llvm::BumpPtrAllocator & Allocator)
- public llvm::LiveRange::const_iterator begin() const
- public llvm::LiveRange::iterator begin()
- public llvm::SlotIndex beginIndex() const
- public void clear()
- public bool containsOneValue() const
- public bool containsValue(const llvm::VNInfo * VNI) const
- public bool covers(const llvm::LiveRange & Other) const
- public llvm::VNInfo * createDeadDef(llvm::SlotIndex Def, VNInfo::Allocator & VNIAlloc)
- public llvm::VNInfo * createDeadDef(llvm::VNInfo * VNI)
- public llvm::VNInfo * createValueCopy(const llvm::VNInfo * orig, VNInfo::Allocator & VNInfoAllocator)
- public void dump() const
- public bool empty() const
- public llvm::LiveRange::const_iterator end() const
- public llvm::LiveRange::iterator end()
- public llvm::SlotIndex endIndex() const
- public bool expiredAt(llvm::SlotIndex index) const
- public llvm::VNInfo * extendInBlock(llvm::SlotIndex StartIdx, llvm::SlotIndex Kill)
- public std::pair<VNInfo *, bool> extendInBlock(ArrayRef<llvm::SlotIndex> Undefs, llvm::SlotIndex StartIdx, llvm::SlotIndex Kill)
- public llvm::LiveRange::const_iterator find(llvm::SlotIndex Pos) const
- public llvm::LiveRange::iterator find(llvm::SlotIndex Pos)
- public template <typename Range, typename OutputIt>bool findIndexesLiveAt(Range && R, OutputIt O) const
- public void flushSegmentSet()
- public llvm::VNInfo * getNextValue(llvm::SlotIndex def, VNInfo::Allocator & VNInfoAllocator)
- public unsigned int getNumValNums() const
- public const llvm::LiveRange::Segment * getSegmentContaining(llvm::SlotIndex Idx) const
- public llvm::LiveRange::Segment * getSegmentContaining(llvm::SlotIndex Idx)
- public llvm::VNInfo * getVNInfoAt(llvm::SlotIndex Idx) const
- public llvm::VNInfo * getVNInfoBefore(llvm::SlotIndex Idx) const
- public inline const llvm::VNInfo * getValNumInfo(unsigned int ValNo) const
- public inline llvm::VNInfo * getValNumInfo(unsigned int ValNo)
- public bool hasAtLeastOneValue() const
- public bool isLiveAtIndexes(ArrayRef<llvm::SlotIndex> Slots) const
- public bool isLocal(llvm::SlotIndex Start, llvm::SlotIndex End) const
- public bool isUndefIn(ArrayRef<llvm::SlotIndex> Undefs, llvm::SlotIndex Begin, llvm::SlotIndex End) const
- public bool isZeroLength(llvm::SlotIndexes * Indexes) const
- public void join(llvm::LiveRange & Other, const int * ValNoAssignments, const int * RHSValNoAssignments, SmallVectorImpl<llvm::VNInfo *> & NewVNInfo)
- public bool liveAt(llvm::SlotIndex index) const
- public bool overlaps(llvm::SlotIndex Start, llvm::SlotIndex End) const
- public bool overlaps(const llvm::LiveRange & other) const
- public bool overlaps(const llvm::LiveRange & Other, const llvm::CoalescerPair & CP, const llvm::SlotIndexes &) const
- public bool overlapsFrom(const llvm::LiveRange & Other, llvm::LiveRange::const_iterator StartPos) const
- public void print(llvm::raw_ostream & OS) const
- public void removeSegment(llvm::SlotIndex Start, llvm::SlotIndex End, bool RemoveDeadValNo = false)
- public void removeSegment(llvm::LiveRange::Segment S, bool RemoveDeadValNo = false)
- public llvm::LiveRange::iterator removeSegment(llvm::LiveRange::iterator I)
- public void removeValNo(llvm::VNInfo * ValNo)
- public size_t size() const
- public void verify() const
- public llvm::LiveRange::const_vni_iterator vni_begin() const
- public llvm::LiveRange::vni_iterator vni_begin()
- public llvm::LiveRange::const_vni_iterator vni_end() const
- public llvm::LiveRange::vni_iterator vni_end()
Methods
¶llvm::LiveRange::iterator FindSegmentContaining(
llvm::SlotIndex Idx)
llvm::LiveRange::iterator FindSegmentContaining(
llvm::SlotIndex Idx)
Description
Return an iterator to the segment that contains the specified index, or end() if there is none.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:427
Parameters
- llvm::SlotIndex Idx
¶llvm::LiveRange::const_iterator
FindSegmentContaining(llvm::SlotIndex Idx) const
llvm::LiveRange::const_iterator
FindSegmentContaining(llvm::SlotIndex Idx) const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:432
Parameters
- llvm::SlotIndex Idx
¶LiveRange(const llvm::LiveRange& Other,
llvm::BumpPtrAllocator& Allocator)
LiveRange(const llvm::LiveRange& Other,
llvm::BumpPtrAllocator& Allocator)
Description
Constructs a new LiveRange object by copying segments and valnos from another LiveRange.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:236
Parameters
- const llvm::LiveRange& Other
- llvm::BumpPtrAllocator& Allocator
¶LiveRange(bool UseSegmentSet = false)
LiveRange(bool UseSegmentSet = false)
Description
Constructs a new LiveRange object.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:230
Parameters
- bool UseSegmentSet = false
¶void MergeSegmentsInAsValue(
const llvm::LiveRange& RHS,
llvm::VNInfo* LHSValNo)
void MergeSegmentsInAsValue(
const llvm::LiveRange& RHS,
llvm::VNInfo* LHSValNo)
Description
Merge all of the live segments of a specific val# in RHS into this live range as the specified value number. The segments in RHS are allowed to overlap with segments in the current range, it will replace the value numbers of the overlaped live segments with the specified value number.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:363
Parameters
- const llvm::LiveRange& RHS
- llvm::VNInfo* LHSValNo
¶void MergeValueInAsValue(
const llvm::LiveRange& RHS,
const llvm::VNInfo* RHSValNo,
llvm::VNInfo* LHSValNo)
void MergeValueInAsValue(
const llvm::LiveRange& RHS,
const llvm::VNInfo* RHSValNo,
llvm::VNInfo* LHSValNo)
Description
MergeValueInAsValue - Merge all of the segments of a specific val# in RHS into this live range as the specified value number. The segments in RHS are allowed to overlap with segments in the current range, but only if the overlapping segments have the specified value number.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:370
Parameters
- const llvm::LiveRange& RHS
- const llvm::VNInfo* RHSValNo
- llvm::VNInfo* LHSValNo
¶llvm::VNInfo* MergeValueNumberInto(
llvm::VNInfo* V1,
llvm::VNInfo* V2)
llvm::VNInfo* MergeValueNumberInto(
llvm::VNInfo* V1,
llvm::VNInfo* V2)
Description
MergeValueNumberInto - This method is called when two value numbers are found to be equivalent. This eliminates V1, replacing all segments with the V1 value number with the V2 value number. This can cause merging of V1/V2 values numbers and compaction of the value space.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:356
Parameters
- llvm::VNInfo* V1
- llvm::VNInfo* V2
¶llvm::LiveQueryResult Query(
llvm::SlotIndex Idx) const
llvm::LiveQueryResult Query(
llvm::SlotIndex Idx) const
Description
Query Liveness at Idx. The sub-instruction slot of Idx doesn't matter, only the instruction it refers to is considered.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:532
Parameters
- llvm::SlotIndex Idx
¶void RenumberValues()
void RenumberValues()
Description
RenumberValues - Renumber all values in order of appearance and remove unused values.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:350
¶llvm::LiveRange::iterator addSegment(
llvm::LiveRange::Segment S)
llvm::LiveRange::iterator addSegment(
llvm::LiveRange::Segment S)
Description
Add the specified Segment to this range, merging segments as appropriate. This returns an iterator to the inserted segment (which may have grown since it was inserted).
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:471
Parameters
¶llvm::LiveRange::iterator advanceTo(
llvm::LiveRange::iterator I,
llvm::SlotIndex Pos)
llvm::LiveRange::iterator advanceTo(
llvm::LiveRange::iterator I,
llvm::SlotIndex Pos)
Description
advanceTo - Advance the specified iterator to point to the Segment containing the specified position, or end() if the position is past the end of the range. If no Segment contains this position, but the position is in a hole, this method returns an iterator pointing to the Segment immediately after the hole.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:262
Parameters
¶llvm::LiveRange::const_iterator advanceTo(
llvm::LiveRange::const_iterator I,
llvm::SlotIndex Pos) const
llvm::LiveRange::const_iterator advanceTo(
llvm::LiveRange::const_iterator I,
llvm::SlotIndex Pos) const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:270
Parameters
¶void append(const LiveRange::Segment S)
void append(const LiveRange::Segment S)
Description
Append a segment to the list of segments.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:664
Parameters
- const LiveRange::Segment S
¶void assign(const llvm::LiveRange& Other,
llvm::BumpPtrAllocator& Allocator)
void assign(const llvm::LiveRange& Other,
llvm::BumpPtrAllocator& Allocator)
Description
Copies values numbers and live segments from \p Other into this range.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:243
Parameters
- const llvm::LiveRange& Other
- llvm::BumpPtrAllocator& Allocator
¶llvm::LiveRange::const_iterator begin() const
llvm::LiveRange::const_iterator begin() const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:217
¶llvm::LiveRange::iterator begin()
llvm::LiveRange::iterator begin()
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:214
¶llvm::SlotIndex beginIndex() const
llvm::SlotIndex beginIndex() const
Description
beginIndex - Return the lowest numbered slot covered.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:376
¶void clear()
void clear()
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:291
¶bool containsOneValue() const
bool containsOneValue() const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:302
¶bool containsValue(const llvm::VNInfo* VNI) const
bool containsValue(const llvm::VNInfo* VNI) const
Description
containsValue - Returns true if VNI belongs to this range.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:316
Parameters
- const llvm::VNInfo* VNI
¶bool covers(const llvm::LiveRange& Other) const
bool covers(const llvm::LiveRange& Other) const
Description
Returns true if all segments of the @p Other live range are completely covered by this live range. Adjacent live ranges do not affect the covering:the liverange [1,5](5,10] covers (3,7].
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:466
Parameters
- const llvm::LiveRange& Other
¶llvm::VNInfo* createDeadDef(
llvm::SlotIndex Def,
VNInfo::Allocator& VNIAlloc)
llvm::VNInfo* createDeadDef(
llvm::SlotIndex Def,
VNInfo::Allocator& VNIAlloc)
Description
createDeadDef - Make sure the range has a value defined at Def. If one already exists, return it. Otherwise allocate a new value and add liveness for a dead def.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:332
Parameters
- llvm::SlotIndex Def
- VNInfo::Allocator& VNIAlloc
¶llvm::VNInfo* createDeadDef(llvm::VNInfo* VNI)
llvm::VNInfo* createDeadDef(llvm::VNInfo* VNI)
Description
Create a def of value @p VNI. Return @p VNI. If there already exists a definition at VNI->def, the value defined there must be @p VNI.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:336
Parameters
- llvm::VNInfo* VNI
¶llvm::VNInfo* createValueCopy(
const llvm::VNInfo* orig,
VNInfo::Allocator& VNInfoAllocator)
llvm::VNInfo* createValueCopy(
const llvm::VNInfo* orig,
VNInfo::Allocator& VNInfoAllocator)
Description
Create a copy of the given value. The new value will be identical except for the Value number.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:340
Parameters
- const llvm::VNInfo* orig
- VNInfo::Allocator& VNInfoAllocator
¶void dump() const
void dump() const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:651
¶bool empty() const
bool empty() const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:373
¶llvm::LiveRange::const_iterator end() const
llvm::LiveRange::const_iterator end() const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:218
¶llvm::LiveRange::iterator end()
llvm::LiveRange::iterator end()
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:215
¶llvm::SlotIndex endIndex() const
llvm::SlotIndex endIndex() const
Description
endNumber - return the maximum point of the range of the whole, exclusive.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:383
¶bool expiredAt(llvm::SlotIndex index) const
bool expiredAt(llvm::SlotIndex index) const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:388
Parameters
- llvm::SlotIndex index
¶llvm::VNInfo* extendInBlock(
llvm::SlotIndex StartIdx,
llvm::SlotIndex Kill)
llvm::VNInfo* extendInBlock(
llvm::SlotIndex StartIdx,
llvm::SlotIndex Kill)
Description
Simplified version of the above "extendInBlock", which assumes that no register lanes are undefined by <def ,read-undef> operands. If this range is live before @p Use in the basic block that starts at @p StartIdx, extend it to be live up to @p Use, and return the value. If there is no segment before @p Use, return nullptr.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:495
Parameters
- llvm::SlotIndex StartIdx
- llvm::SlotIndex Kill
¶std::pair<VNInfo*, bool> extendInBlock(
ArrayRef<llvm::SlotIndex> Undefs,
llvm::SlotIndex StartIdx,
llvm::SlotIndex Kill)
std::pair<VNInfo*, bool> extendInBlock(
ArrayRef<llvm::SlotIndex> Undefs,
llvm::SlotIndex StartIdx,
llvm::SlotIndex Kill)
Description
Attempt to extend a value defined after @p StartIdx to include @p Use. Both @p StartIdx and @p Use should be in the same basic block. In case of subranges, an extension could be prevented by an explicit "undef" caused by a <def ,read-undef> on a non-overlapping lane. The list of location of such "undefs" should be provided in @p Undefs. The return value is a pair: the first element is VNInfo of the value that was extended (possibly nullptr), the second is a boolean value indicating whether an "undef" was encountered. If this range is live before @p Use in the basic block that starts at@p StartIdx, and there is no intervening "undef", extend it to be live up to @p Use, and return the pair {value, false}. If there is no segment before @p Use and there is no "undef" between @p StartIdx and@p Use, return {nullptr, false}. If there is an "undef" before @p Use, return {nullptr, true}.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:487
Parameters
- ArrayRef<llvm::SlotIndex> Undefs
- llvm::SlotIndex StartIdx
- llvm::SlotIndex Kill
¶llvm::LiveRange::const_iterator find(
llvm::SlotIndex Pos) const
llvm::LiveRange::const_iterator find(
llvm::SlotIndex Pos) const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:287
Parameters
- llvm::SlotIndex Pos
¶llvm::LiveRange::iterator find(
llvm::SlotIndex Pos)
llvm::LiveRange::iterator find(
llvm::SlotIndex Pos)
Description
find - Return an iterator pointing to the first segment that ends after Pos, or end(). This is the same as advanceTo(begin(), Pos), but faster when searching large ranges. If Pos is contained in a Segment, that segment is returned. If Pos is in a hole, the following Segment is returned. If Pos is beyond endIndex, end() is returned.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:285
Parameters
- llvm::SlotIndex Pos
¶template <typename Range, typename OutputIt>
bool findIndexesLiveAt(Range&& R,
OutputIt O) const
template <typename Range, typename OutputIt>
bool findIndexesLiveAt(Range&& R,
OutputIt O) const
Description
Stores indexes from the input index sequence R at which this LiveRange is live to the output O iterator. R is a range of _ascending sorted_ _random_ access iterators to the input indexes. Indexes stored at O are ascending sorted so it can be used directly in the subsequent search (for example for subranges). Returns true if found at least one index.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:619
Templates
- Range
- OutputIt
Parameters
- Range&& R
- OutputIt O
¶void flushSegmentSet()
void flushSegmentSet()
Description
Flush segment set into the regular segment vector. The method is to be called after the live range has been created, if use of the segment set was activated in the constructor of the live range.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:610
¶llvm::VNInfo* getNextValue(
llvm::SlotIndex def,
VNInfo::Allocator& VNInfoAllocator)
llvm::VNInfo* getNextValue(
llvm::SlotIndex def,
VNInfo::Allocator& VNInfoAllocator)
Description
getNextValue - Create a new value number and return it. MIIdx specifies the instruction that defines the value number.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:322
Parameters
- llvm::SlotIndex def
- VNInfo::Allocator& VNInfoAllocator
¶unsigned int getNumValNums() const
unsigned int getNumValNums() const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:304
¶const llvm::LiveRange::Segment*
getSegmentContaining(llvm::SlotIndex Idx) const
const llvm::LiveRange::Segment*
getSegmentContaining(llvm::SlotIndex Idx) const
Description
Return the segment that contains the specified index, or null if there is none.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:399
Parameters
- llvm::SlotIndex Idx
¶llvm::LiveRange::Segment* getSegmentContaining(
llvm::SlotIndex Idx)
llvm::LiveRange::Segment* getSegmentContaining(
llvm::SlotIndex Idx)
Description
Return the live segment that contains the specified index, or null if there is none.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:406
Parameters
- llvm::SlotIndex Idx
¶llvm::VNInfo* getVNInfoAt(
llvm::SlotIndex Idx) const
llvm::VNInfo* getVNInfoAt(
llvm::SlotIndex Idx) const
Description
getVNInfoAt - Return the VNInfo that is live at Idx, or NULL.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:412
Parameters
- llvm::SlotIndex Idx
¶llvm::VNInfo* getVNInfoBefore(
llvm::SlotIndex Idx) const
llvm::VNInfo* getVNInfoBefore(
llvm::SlotIndex Idx) const
Description
getVNInfoBefore - Return the VNInfo that is live up to but not necessarilly including Idx, or NULL. Use this to find the reaching def used by an instruction at this SlotIndex position.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:420
Parameters
- llvm::SlotIndex Idx
¶inline const llvm::VNInfo* getValNumInfo(
unsigned int ValNo) const
inline const llvm::VNInfo* getValNumInfo(
unsigned int ValNo) const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:311
Parameters
- unsigned int ValNo
¶inline llvm::VNInfo* getValNumInfo(
unsigned int ValNo)
inline llvm::VNInfo* getValNumInfo(
unsigned int ValNo)
Description
getValNumInfo - Returns pointer to the specified val#.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:308
Parameters
- unsigned int ValNo
¶bool hasAtLeastOneValue() const
bool hasAtLeastOneValue() const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:300
¶bool isLiveAtIndexes(
ArrayRef<llvm::SlotIndex> Slots) const
bool isLiveAtIndexes(
ArrayRef<llvm::SlotIndex> Slots) const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:588
Parameters
- ArrayRef<llvm::SlotIndex> Slots
¶bool isLocal(llvm::SlotIndex Start,
llvm::SlotIndex End) const
bool isLocal(llvm::SlotIndex Start,
llvm::SlotIndex End) const
Description
True iff this segment is a single segment that lies between the specified boundaries, exclusively. Vregs live across a backedge are not considered local. The boundaries are expected to lie within an extended basic block, so vregs that are not live out should contain no holes.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:509
Parameters
- llvm::SlotIndex Start
- llvm::SlotIndex End
¶bool isUndefIn(ArrayRef<llvm::SlotIndex> Undefs,
llvm::SlotIndex Begin,
llvm::SlotIndex End) const
bool isUndefIn(ArrayRef<llvm::SlotIndex> Undefs,
llvm::SlotIndex Begin,
llvm::SlotIndex End) const
Description
Returns true if there is an explicit "undef" between @p Begin @p End.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:598
Parameters
- ArrayRef<llvm::SlotIndex> Undefs
- llvm::SlotIndex Begin
- llvm::SlotIndex End
¶bool isZeroLength(
llvm::SlotIndexes* Indexes) const
bool isZeroLength(
llvm::SlotIndexes* Indexes) const
Description
Returns true if the live range is zero length, i.e. no live segments span instructions. It doesn't pay to spill such a range.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:577
Parameters
- llvm::SlotIndexes* Indexes
¶void join(
llvm::LiveRange& Other,
const int* ValNoAssignments,
const int* RHSValNoAssignments,
SmallVectorImpl<llvm::VNInfo*>& NewVNInfo)
void join(
llvm::LiveRange& Other,
const int* ValNoAssignments,
const int* RHSValNoAssignments,
SmallVectorImpl<llvm::VNInfo*>& NewVNInfo)
Description
join - Join two live ranges (this, and other) together. This applies mappings to the value numbers in the LHS/RHS ranges as specified. If the ranges are not joinable, this aborts.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:500
Parameters
- llvm::LiveRange& Other
- const int* ValNoAssignments
- const int* RHSValNoAssignments
- SmallVectorImpl<llvm::VNInfo*>& NewVNInfo
¶bool liveAt(llvm::SlotIndex index) const
bool liveAt(llvm::SlotIndex index) const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:392
Parameters
- llvm::SlotIndex index
¶bool overlaps(llvm::SlotIndex Start,
llvm::SlotIndex End) const
bool overlaps(llvm::SlotIndex Start,
llvm::SlotIndex End) const
Description
overlaps - Return true if the live range overlaps an interval specified by [Start, End).
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:455
Parameters
- llvm::SlotIndex Start
- llvm::SlotIndex End
¶bool overlaps(const llvm::LiveRange& other) const
bool overlaps(const llvm::LiveRange& other) const
Description
overlaps - Return true if the intersection of the two live ranges is not empty.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:439
Parameters
- const llvm::LiveRange& other
¶bool overlaps(const llvm::LiveRange& Other,
const llvm::CoalescerPair& CP,
const llvm::SlotIndexes&) const
bool overlaps(const llvm::LiveRange& Other,
const llvm::CoalescerPair& CP,
const llvm::SlotIndexes&) const
Description
overlaps - Return true if the two ranges have overlapping segments that are not coalescable according to CP. Overlapping segments where one range is defined by a coalescable copy are allowed.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:450
Parameters
- const llvm::LiveRange& Other
- const llvm::CoalescerPair& CP
- const llvm::SlotIndexes&
¶bool overlapsFrom(const llvm::LiveRange& Other,
llvm::LiveRange::const_iterator
StartPos) const
bool overlapsFrom(const llvm::LiveRange& Other,
llvm::LiveRange::const_iterator
StartPos) const
Description
overlapsFrom - Return true if the intersection of the two live ranges is not empty. The specified iterator is a hint that we can begin scanning the Other range starting at I.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:460
Parameters
- const llvm::LiveRange& Other
- llvm::LiveRange::const_iterator StartPos
¶void print(llvm::raw_ostream& OS) const
void print(llvm::raw_ostream& OS) const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:650
Parameters
¶void removeSegment(llvm::SlotIndex Start,
llvm::SlotIndex End,
bool RemoveDeadValNo = false)
void removeSegment(llvm::SlotIndex Start,
llvm::SlotIndex End,
bool RemoveDeadValNo = false)
Description
Remove the specified segment from this range. Note that the segment must be a single Segment in its entirety.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:516
Parameters
- llvm::SlotIndex Start
- llvm::SlotIndex End
- bool RemoveDeadValNo = false
¶void removeSegment(llvm::LiveRange::Segment S,
bool RemoveDeadValNo = false)
void removeSegment(llvm::LiveRange::Segment S,
bool RemoveDeadValNo = false)
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:519
Parameters
- llvm::LiveRange::Segment S
- bool RemoveDeadValNo = false
¶llvm::LiveRange::iterator removeSegment(
llvm::LiveRange::iterator I)
llvm::LiveRange::iterator removeSegment(
llvm::LiveRange::iterator I)
Description
Remove segment pointed to by iterator @p I from this range. This does not remove dead value numbers.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:525
Parameters
¶void removeValNo(llvm::VNInfo* ValNo)
void removeValNo(llvm::VNInfo* ValNo)
Description
removeValNo - Remove all the segments defined by the specified value#. Also remove the value# from value# list.
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:573
Parameters
- llvm::VNInfo* ValNo
¶size_t size() const
size_t size() const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:296
¶void verify() const
void verify() const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:659
¶llvm::LiveRange::const_vni_iterator vni_begin()
const
llvm::LiveRange::const_vni_iterator vni_begin()
const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:226
¶llvm::LiveRange::vni_iterator vni_begin()
llvm::LiveRange::vni_iterator vni_begin()
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:223
¶llvm::LiveRange::const_vni_iterator vni_end()
const
llvm::LiveRange::const_vni_iterator vni_end()
const
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:227
¶llvm::LiveRange::vni_iterator vni_end()
llvm::LiveRange::vni_iterator vni_end()
Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:224