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)

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

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:432

Parameters

llvm::SlotIndex Idx

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)

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)

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)

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)

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

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()

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)

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::Segment S

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::iterator I
llvm::SlotIndex Pos

llvm::LiveRange::const_iterator advanceTo(
    llvm::LiveRange::const_iterator I,
    llvm::SlotIndex Pos) const

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:270

Parameters

llvm::LiveRange::const_iterator I
llvm::SlotIndex Pos

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)

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

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:217

llvm::LiveRange::iterator begin()

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:214

llvm::SlotIndex beginIndex() const

Description

beginIndex - Return the lowest numbered slot covered.

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:376

void clear()

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:291

bool containsOneValue() const

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:302

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

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)

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)

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)

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

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:651

bool empty() const

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:373

llvm::LiveRange::const_iterator end() const

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:218

llvm::LiveRange::iterator end()

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:215

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

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:388

Parameters

llvm::SlotIndex index

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)

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

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:287

Parameters

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

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()

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)

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

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:304

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)

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

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

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

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:311

Parameters

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

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:300

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

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

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

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)

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

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:392

Parameters

llvm::SlotIndex index

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

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

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

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

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:650

Parameters

llvm::raw_ostream& OS

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)

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)

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

llvm::LiveRange::iterator I

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

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:296

void verify() const

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:659

llvm::LiveRange::const_vni_iterator vni_begin()
    const

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:226

llvm::LiveRange::vni_iterator vni_begin()

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:223

llvm::LiveRange::const_vni_iterator vni_end()
    const

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:227

llvm::LiveRange::vni_iterator vni_end()

Declared at: llvm/include/llvm/CodeGen/LiveInterval.h:224