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

Inherited from LiveRangeCalc:

Methods

LiveIntervalCalc()

Declared at: llvm/include/llvm/CodeGen/LiveIntervalCalc.h:43

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)

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

llvm::LiveInterval& LI

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)

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)

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