class LiveIntervalCalc
Declaration
class LiveIntervalCalc : public LiveRangeCalc { /* full declaration omitted */ };
Declared at: llvm/include/llvm/CodeGen/LiveIntervalCalc.h:28
Inherits from: LiveRangeCalc
Member Variables
Method Overview
- public LiveIntervalCalc()
- public void calculate(llvm::LiveInterval & LI, bool TrackSubRegs)
- public void constructMainRangeFromSubranges(llvm::LiveInterval & LI)
- public void createDeadDefs(llvm::LiveRange & LR, llvm::Register Reg)
- private void extendToUses(llvm::LiveRange & LR, llvm::Register Reg, llvm::LaneBitmask LaneMask, llvm::LiveInterval * LI = nullptr)
- public void extendToUses(llvm::LiveRange & LR, llvm::MCRegister PhysReg)
Inherited from LiveRangeCalc:
- public addLiveInBlock
- public calculateValues
- public extend
- protected getDomTree
- protected getIndexes
- protected getMachineFunction
- protected getRegInfo
- protected getVNAlloc
- public isJointlyDominated
- public reset
- protected resetLiveOutMap
- public setLiveOutValue
Methods
¶LiveIntervalCalc()
LiveIntervalCalc()
Declared at: llvm/include/llvm/CodeGen/LiveIntervalCalc.h:43
¶void calculate(llvm::LiveInterval& LI,
bool TrackSubRegs)
void calculate(llvm::LiveInterval& LI,
bool TrackSubRegs)
Description
Calculates liveness for the register specified in live interval @p LI. Creates subregister live ranges as needed if subreg liveness tracking is enabled.
Declared at: llvm/include/llvm/CodeGen/LiveIntervalCalc.h:61
Parameters
- llvm::LiveInterval& LI
- bool TrackSubRegs
¶void constructMainRangeFromSubranges(
llvm::LiveInterval& LI)
void constructMainRangeFromSubranges(
llvm::LiveInterval& LI)
Description
For live interval \p LI with correct SubRanges construct matching information for the main live range. Expects the main live range to not have any segments or value numbers.
Declared at: llvm/include/llvm/CodeGen/LiveIntervalCalc.h:66
Parameters
¶void createDeadDefs(llvm::LiveRange& LR,
llvm::Register Reg)
void createDeadDefs(llvm::LiveRange& LR,
llvm::Register Reg)
Description
createDeadDefs - Create a dead def in LI for every def operand of Reg. Each instruction defining Reg gets a new VNInfo with a corresponding minimal live range.
Declared at: llvm/include/llvm/CodeGen/LiveIntervalCalc.h:48
Parameters
- llvm::LiveRange& LR
- llvm::Register Reg
¶void extendToUses(
llvm::LiveRange& LR,
llvm::Register Reg,
llvm::LaneBitmask LaneMask,
llvm::LiveInterval* LI = nullptr)
void extendToUses(
llvm::LiveRange& LR,
llvm::Register Reg,
llvm::LaneBitmask LaneMask,
llvm::LiveInterval* LI = nullptr)
Description
Extend the live range of @p LR to reach all uses of Reg. If @p LR is a main range, or if @p LI is null, then all uses must be jointly dominated by the definitions from @p LR. If @p LR is a subrange of the live interval @p LI, corresponding to lane mask @p LaneMask, all uses must be jointly dominated by the definitions from @p LR together with definitions of other lanes where @p LR becomes undefined (via <def ,read-undef> operands). If @p LR is a main range, the @p LaneMask should be set to ~0, i.e. LaneBitmask::getAll().
Declared at: llvm/include/llvm/CodeGen/LiveIntervalCalc.h:39
Parameters
- llvm::LiveRange& LR
- llvm::Register Reg
- llvm::LaneBitmask LaneMask
- llvm::LiveInterval* LI = nullptr
¶void extendToUses(llvm::LiveRange& LR,
llvm::MCRegister PhysReg)
void extendToUses(llvm::LiveRange& LR,
llvm::MCRegister PhysReg)
Description
Extend the live range of @p LR to reach all uses of Reg. All uses must be jointly dominated by existing liveness. PHI-defs are inserted as needed to preserve SSA form.
Declared at: llvm/include/llvm/CodeGen/LiveIntervalCalc.h:54
Parameters
- llvm::LiveRange& LR
- llvm::MCRegister PhysReg