LLVM  3.7.0
Public Member Functions | Public Attributes | List of all members
llvm::LiveInterval::SubRange Class Reference

A live range for subregisters. More...

#include <LiveInterval.h>

Inheritance diagram for llvm::LiveInterval::SubRange:
[legend]
Collaboration diagram for llvm::LiveInterval::SubRange:
[legend]

Public Member Functions

 SubRange (unsigned LaneMask)
 Constructs a new SubRange object. More...
 
 SubRange (unsigned LaneMask, const LiveRange &Other, BumpPtrAllocator &Allocator)
 Constructs a new SubRange object by copying liveness from Other. More...
 
- Public Member Functions inherited from llvm::LiveRange
iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 
vni_iterator vni_begin ()
 
vni_iterator vni_end ()
 
const_vni_iterator vni_begin () const
 
const_vni_iterator vni_end () const
 
 LiveRange (bool UseSegmentSet=false)
 Constructs a new LiveRange object. More...
 
 LiveRange (const LiveRange &Other, BumpPtrAllocator &Allocator)
 Constructs a new LiveRange object by copying segments and valnos from another LiveRange. More...
 
iterator advanceTo (iterator I, SlotIndex Pos)
 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. More...
 
const_iterator advanceTo (const_iterator I, SlotIndex Pos) const
 
iterator find (SlotIndex Pos)
 find - Return an iterator pointing to the first segment that ends after Pos, or end(). More...
 
const_iterator find (SlotIndex Pos) const
 
void clear ()
 
size_t size () const
 
bool hasAtLeastOneValue () const
 
bool containsOneValue () const
 
unsigned getNumValNums () const
 
VNInfogetValNumInfo (unsigned ValNo)
 getValNumInfo - Returns pointer to the specified val#. More...
 
const VNInfogetValNumInfo (unsigned ValNo) const
 
bool containsValue (const VNInfo *VNI) const
 containsValue - Returns true if VNI belongs to this range. More...
 
VNInfogetNextValue (SlotIndex def, VNInfo::Allocator &VNInfoAllocator)
 getNextValue - Create a new value number and return it. More...
 
VNInfocreateDeadDef (SlotIndex Def, VNInfo::Allocator &VNInfoAllocator)
 createDeadDef - Make sure the range has a value defined at Def. More...
 
VNInfocreateValueCopy (const VNInfo *orig, VNInfo::Allocator &VNInfoAllocator)
 Create a copy of the given value. More...
 
void RenumberValues ()
 RenumberValues - Renumber all values in order of appearance and remove unused values. More...
 
VNInfoMergeValueNumberInto (VNInfo *V1, VNInfo *V2)
 MergeValueNumberInto - This method is called when two value numbers are found to be equivalent. More...
 
void MergeSegmentsInAsValue (const LiveRange &RHS, VNInfo *LHSValNo)
 Merge all of the live segments of a specific val# in RHS into this live range as the specified value number. More...
 
void MergeValueInAsValue (const LiveRange &RHS, const VNInfo *RHSValNo, VNInfo *LHSValNo)
 MergeValueInAsValue - Merge all of the segments of a specific val# in RHS into this live range as the specified value number. More...
 
bool empty () const
 
SlotIndex beginIndex () const
 beginIndex - Return the lowest numbered slot covered. More...
 
SlotIndex endIndex () const
 endNumber - return the maximum point of the range of the whole, exclusive. More...
 
bool expiredAt (SlotIndex index) const
 
bool liveAt (SlotIndex index) const
 
const SegmentgetSegmentContaining (SlotIndex Idx) const
 Return the segment that contains the specified index, or null if there is none. More...
 
SegmentgetSegmentContaining (SlotIndex Idx)
 Return the live segment that contains the specified index, or null if there is none. More...
 
VNInfogetVNInfoAt (SlotIndex Idx) const
 getVNInfoAt - Return the VNInfo that is live at Idx, or NULL. More...
 
VNInfogetVNInfoBefore (SlotIndex Idx) const
 getVNInfoBefore - Return the VNInfo that is live up to but not necessarilly including Idx, or NULL. More...
 
iterator FindSegmentContaining (SlotIndex Idx)
 Return an iterator to the segment that contains the specified index, or end() if there is none. More...
 
const_iterator FindSegmentContaining (SlotIndex Idx) const
 
bool overlaps (const LiveRange &other) const
 overlaps - Return true if the intersection of the two live ranges is not empty. More...
 
bool overlaps (const LiveRange &Other, const CoalescerPair &CP, const SlotIndexes &) const
 overlaps - Return true if the two ranges have overlapping segments that are not coalescable according to CP. More...
 
bool overlaps (SlotIndex Start, SlotIndex End) const
 overlaps - Return true if the live range overlaps an interval specified by [Start, End). More...
 
bool overlapsFrom (const LiveRange &Other, const_iterator I) const
 overlapsFrom - Return true if the intersection of the two live ranges is not empty. More...
 
bool covers (const LiveRange &Other) const
 Returns true if all segments of the Other live range are completely covered by this live range. More...
 
iterator addSegment (Segment S)
 Add the specified Segment to this range, merging segments as appropriate. More...
 
VNInfoextendInBlock (SlotIndex StartIdx, SlotIndex Use)
 If this range is live before Use in the basic block that starts at StartIdx, extend it to be live up to Use, and return the value. More...
 
void join (LiveRange &Other, const int *ValNoAssignments, const int *RHSValNoAssignments, SmallVectorImpl< VNInfo * > &NewVNInfo)
 join - Join two live ranges (this, and other) together. More...
 
bool isLocal (SlotIndex Start, SlotIndex End) const
 True iff this segment is a single segment that lies between the specified boundaries, exclusively. More...
 
void removeSegment (SlotIndex Start, SlotIndex End, bool RemoveDeadValNo=false)
 Remove the specified segment from this range. More...
 
void removeSegment (Segment S, bool RemoveDeadValNo=false)
 
iterator removeSegment (iterator I)
 Remove segment pointed to by iterator I from this range. More...
 
LiveQueryResult Query (SlotIndex Idx) const
 Query Liveness at Idx. More...
 
void removeValNo (VNInfo *ValNo)
 removeValNo - Remove all the segments defined by the specified value#. More...
 
bool isZeroLength (SlotIndexes *Indexes) const
 Returns true if the live range is zero length, i.e. More...
 
bool operator< (const LiveRange &other) const
 
void flushSegmentSet ()
 Flush segment set into the regular segment vector. More...
 
void print (raw_ostream &OS) const
 
void dump () const
 
void verify () const
 Walk the range and assert if any invariants fail to hold. More...
 

Public Attributes

SubRangeNext
 
unsigned LaneMask
 
- Public Attributes inherited from llvm::LiveRange
Segments segments
 
VNInfoList valnos
 
std::unique_ptr< SegmentSetsegmentSet
 

Additional Inherited Members

- Public Types inherited from llvm::LiveRange
typedef SmallVector< Segment, 4 > Segments
 
typedef SmallVector< VNInfo *, 4 > VNInfoList
 
typedef std::set< SegmentSegmentSet
 
typedef Segments::iterator iterator
 
typedef Segments::const_iterator const_iterator
 
typedef VNInfoList::iterator vni_iterator
 
typedef VNInfoList::const_iterator const_vni_iterator
 
- Protected Member Functions inherited from llvm::LiveRange
void append (const LiveRange::Segment S)
 Append a segment to the list of segments. More...
 

Detailed Description

A live range for subregisters.

The LaneMask specifies which parts of the super register are covered by the interval. (

See Also
TargetRegisterInfo::getSubRegIndexLaneMask()).

Definition at line 595 of file LiveInterval.h.

Constructor & Destructor Documentation

llvm::LiveInterval::SubRange::SubRange ( unsigned  LaneMask)
inline

Constructs a new SubRange object.

Definition at line 601 of file LiveInterval.h.

llvm::LiveInterval::SubRange::SubRange ( unsigned  LaneMask,
const LiveRange Other,
BumpPtrAllocator Allocator 
)
inline

Constructs a new SubRange object by copying liveness from Other.

Definition at line 606 of file LiveInterval.h.

Member Data Documentation

unsigned llvm::LiveInterval::SubRange::LaneMask
SubRange* llvm::LiveInterval::SubRange::Next

Definition at line 597 of file LiveInterval.h.

Referenced by llvm::LiveInterval::removeEmptySubRanges().


The documentation for this class was generated from the following file: