LiveInterval ‐ This class represents the liveness of a register, or stack slot.

Synopsis

Declared in <llvm/CodeGen/LiveInterval.h>

class LiveInterval
    : public LiveRange

Base Classes

Name

Description

LiveRange

Represents the liveness of a register, stack slot, or similar entity.

Types

Name

Description

Segment

A single continuous liveness interval for one value number.

SingleLinkedListIterator

Forward iterator over a singly linked list of nodes with a Next pointer.

SubRange

A live range covering selected lanes of a super‐register.

Type Aliases

Name

Description

SegmentSet

Ordered set used temporarily while building a live range.

Segments

Ordered vector of live segments.

VNInfoList

Vector of value numbers owned by this live range.

const_iterator

Const iterator over live segments.

const_subrange_iterator

Const iterator over subregister live ranges.

const_vni_iterator

Const iterator over value numbers.

iterator

Mutable iterator over live segments.

subrange_iterator

Mutable iterator over subregister live ranges.

super

Base LiveRange type of this live interval.

vni_iterator

Mutable iterator over value numbers.

Member Functions

Name

Description

LiveInterval [constructor]

Construct a live interval for Reg with initial weight Weight.

~LiveInterval [destructor]

Destroy the live interval and free its subranges.

FindSegmentContaining

FindSegmentContaining overloads

MergeSegmentsInAsValue

Merge all segments from RHS into this range as LHSValNo.

MergeValueInAsValue

Merge segments of RHSValNo from RHS as LHSValNo.

MergeValueNumberInto

Merge equivalent value number V1 into V2.

Query

Query liveness around instruction Idx.

RenumberValues

RenumberValues ‐ Renumber all values in order of appearance and remove unused values.

addSegment

Add segment S to this range, merging as appropriate.

advanceTo

advanceTo overloads

assign

Copy value numbers and live segments from Other into this range.

begin

begin overloads

beginIndex

beginIndex ‐ Return the lowest numbered slot covered.

clear

Remove all segments and value numbers from this range.

clearSubRanges

Removes all subregister liveness information.

computeSubRangeUndefs

Compute indexes where LaneMask is undef due to read‐undef defs.

containsOneValue

Return true if this range has exactly one value number.

containsValue

Return true if VNI belongs to this range.

covers

Return true if every segment of Other is covered by this range.

createDeadDef

createDeadDef overloads

createSubRange

Create a new empty subregister live range for LaneMask.

createSubRangeFrom

Create a subrange for LaneMask copied from CopyFrom.

createValueCopy

Create a copy of orig with a fresh value number.

dump

Dump this live interval to the debug stream.

empty

Return true if this live range contains no segments.

end

end overloads

endIndex

endNumber ‐ return the maximum point of the range of the whole, exclusive.

expiredAt

Return true if liveness has ended by slot index index.

extendInBlock

extendInBlock overloads

find

find overloads

findIndexesLiveAt

Store indexes from R at which this live range is live into O.

flushSegmentSet

Flush the temporary segment set into the segment vector.

getNextValue

Create and return a new value number defined at Def.

getNumValNums

Return the number of value numbers in this range.

getSegmentContaining

getSegmentContaining overloads

getSize

getSize ‐ Returns the sum of sizes of all the LiveRange's.

getVNInfoAt

Return the VNInfo live at Idx, or null.

getVNInfoBefore

Return the VNInfo live up to but not necessarily including Idx.

getValNumInfo

getValNumInfo overloads

hasAtLeastOneValue

Return true if this range has at least one value number.

hasSubRanges

Returns true if subregister liveness information is available.

incrementWeight

Increase the spill weight by Inc.

isLiveAtIndexes

Return true if any segment contains one of the provided slot indexes.

isLocal

Return true if this range is a single local segment between the bounds.

isSpillable

isSpillable ‐ Can this interval be spilled?

isUndefIn

Return true if there is an explicit undef in []`Begin,` End).

isZeroLength

Return true if no live segment spans an instruction.

join

Join live range Other into this range using value‐number mappings.

liveAt

Return true if this range is live at slot index index.

markNotSpillable

markNotSpillable ‐ Mark interval as not spillable

mergeAdjacentSegments

Merge the segment at I with adjacent same‐value neighbors.

overlaps

overlaps overloads

overlapsFrom

Return true if this range overlaps Other from StartPos onward.

print

Print this live interval to OS.

refineSubRanges

Refine subranges so that LaneMask matches an exact subrange set.

reg

Return the register or stack slot represented by this interval.

removeEmptySubRanges

Removes all subranges without any segments (subranges without segments are not considered valid and should only exist temporarily).

removeSegment

removeSegment overloads

removeValNo

Remove all segments defined by ValNo and drop the value number.

removeValNoIfDead

Mark ValNo for deletion if no segments in this range use it.

setWeight

Set the spill weight to Value.

size

Return the number of segments in this live range.

subrange_begin

subrange_begin overloads

subrange_end

subrange_end overloads

subranges

subranges overloads

verify

verify overloads

vni_begin

vni_begin overloads

vni_end

vni_end overloads

vnis

vnis overloads

weight

Return the spill weight of this interval.

operator<

Less‐than operators

Data Members

Name

Description

segmentSet

Optional segment set used during initial live‐range construction.

segments

Liveness segments in ascending start order.

valnos

Value numbers referenced by segments.

Protected Member Functions

Name

Description

append

Append segment S to the list of segments.

Created with MrDocs