llvm::LiveIntervals

Analysis that computes and maintains live intervals for virtual registers.

Synopsis

Declared in <llvm/CodeGen/LiveIntervals.h>

class LiveIntervals;

Member Functions

NameDescription
LiveIntervals [constructor]Move-construct live intervals from another instance.
~LiveIntervals [destructor]Destroy the live intervals analysis and free allocated ranges.
InsertMachineInstrInMaps Insert machine instruction MI into the SlotIndexes map.
InsertMachineInstrRangeInMaps Insert the instructions in range []B, E) into the SlotIndexes map.
RemoveMachineInstrFromMaps Remove machine instruction MI from the SlotIndexes map.
ReplaceMachineInstrInMaps Replace MI with NewMI in the SlotIndexes map.
addKillFlags Add kill flags to any instruction that kills a virtual register.
addSegmentToEndOfBlock Given a register and an instruction, adds a live segment from that instruction to the end of its MBB.
checkRegMaskInterference Test if LI is live across any register mask instructions, and compute a bit mask of physical registers that are not clobbered by any of them.
constructMainRangeFromSubranges Construct the main live range of LI from its SubRanges.
createAndComputeVirtRegInterval createAndComputeVirtRegInterval overloads
createEmptyInterval Create an empty live interval for virtual register Reg.
dump Dump the live intervals analysis results to dbgs().
extendToIndices Extend live range LR to reach all points in Indices.
getCachedRegUnit Return the live range for register unit Unit if it has already been computed, or nullptr if it hasn't been computed yet.
getDomTree Return the machine dominator tree used by this analysis.
getInstructionFromIndex Returns the instruction associated with the given index.
getInstructionIndex Returns the base index of the given instruction.
getInterval Return the live interval for virtual register Reg, computing it if needed.
getMBBEndIdx Return the last index in the given basic block.
getMBBFromIndex Return the basic block that contains SlotIndex index.
getMBBStartIdx Return the first index in the given basic block.
getOrCreateEmptyInterval Return an existing interval for Reg.
getRegMaskBits Returns an array of register mask pointers corresponding to getRegMaskSlots().
getRegMaskBitsInBlock Returns an array of mask pointers corresponding to getRegMaskSlotsInBlock(MBBNum).
getRegMaskSlots Returns a sorted array of slot indices of all instructions with register mask operands.
getRegMaskSlotsInBlock Returns a sorted array of slot indices of all instructions with register mask operands in the basic block numbered MBBNum.
getRegUnit Return the live range for register unit Unit. It will be computed if it doesn't exist.
getSlotIndexes Return the SlotIndexes analysis used by this LiveIntervals instance.
getVNInfoAllocator Return the allocator used for VNInfo value numbers.
handleMove Notify LiveIntervals that instruction MI moved within a basic block.
handleMoveIntoNewBundle Update intervals of operands of all instructions in the newly created bundle specified by BundleStart.
hasInterval Return true if a live interval already exists for Reg.
hasPHIKill Returns true if VNI is killed by any PHI-def values in LI.
insertMBBInMaps Adds an empty block MBB to the SlotIndexes and regmask maps.
intervalIsInOneMBB If LI is confined to a single basic block, return a pointer to that block. If LI is live in to or out of any block, return NULL.
invalidate Invalidate this analysis result when required by the new pass manager.
isLiveInToMBB Return true if LR is live into basic block mbb.
isLiveOutOfMBB Return true if LR is live out of basic block mbb.
isNotInMIMap Returns true if the specified machine instr has been removed or was never entered in the map.
print Print the live intervals analysis results.
pruneValue pruneValue overloads
reanalyze Clear and recompute live intervals for machine function MF.
removeAllRegUnitsForPhysReg Remove associated live ranges for the register units associated with Reg. Subsequent uses should rely on on-demand recomputation.
removeInterval Remove and delete the live interval for virtual register Reg.
removePhysRegDefAt Remove value numbers and related live segments starting at position Pos that are part of any liverange of physical register Reg or one of its subregisters.
removeRegUnit Remove computed live range for register unit Unit. Subsequent uses should rely on on-demand recomputation.
removeVRegDefAt Remove value number and related live segments of LI and its subranges that start at position Pos.
repairIntervalsInRange Update live intervals for instructions in an iterator range.
shrinkToUses shrinkToUses overloads
splitAt After the tail of Orig has been sliced into SplitBB, updates the SlotIndexes and regmask maps and re-slices Orig's regmask table across the two blocks.
splitSeparateComponents Split separate components in LiveInterval LI into separate intervals.

Static Member Functions

NameDescription
getSpillWeight getSpillWeight overloads

Friends

NameDescription
llvm::LiveIntervalsWrapperPassLegacy MachineFunctionPass wrapper around LiveIntervals.
llvm::LiveIntervalsAnalysisAnalysis pass that computes LiveIntervals for a MachineFunction.