class VLocTracker
Declaration
class VLocTracker { /* full declaration omitted */ };
Description
Collection of DBG_VALUEs observed when traversing a block. Records each variable and the value the DBG_VALUE refers to. Requires the machine value location dataflow algorithm to have run already, so that values can be identified.
Declared at: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h:689
Member Variables
- public MapVector<llvm::DebugVariable, LiveDebugValues::DbgValue> Vars
- Map DebugVariable to the latest Value it's defined to have. Needs to be a MapVector because we determine order-in-the-input-MIR from the order in this container. We only retain the last DbgValue in each block for each variable, to determine the blocks live-out variable value. The Vars container forms the transfer function for this block, as part of the dataflow analysis. The movement of values between locations inside of a block is handled at a much later stage, in the TransferTracker class.
- public SmallDenseMap<llvm::DebugVariable, const llvm::DILocation*, 8> Scopes
- public llvm::MachineBasicBlock* MBB = nullptr
- public const LiveDebugValues::OverlapMap& OverlappingFragments
- public LiveDebugValues::DbgValueProperties EmptyProperties
Method Overview
- public VLocTracker(const LiveDebugValues::OverlapMap & O, const llvm::DIExpression * EmptyExpr)
- public void clear()
- public void considerOverlaps(const llvm::DebugVariable & Var, const llvm::DILocation * Loc)
- public void defVar(const llvm::MachineInstr & MI, const LiveDebugValues::DbgValueProperties & Properties, Optional<LiveDebugValues::ValueIDNum> ID)
- public void defVar(const llvm::MachineInstr & MI, const llvm::MachineOperand & MO)
Methods
¶VLocTracker(const LiveDebugValues::OverlapMap& O,
const llvm::DIExpression* EmptyExpr)
VLocTracker(const LiveDebugValues::OverlapMap& O,
const llvm::DIExpression* EmptyExpr)
Declared at: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h:706
Parameters
- const LiveDebugValues::OverlapMap& O
- const llvm::DIExpression* EmptyExpr
¶void clear()
void clear()
Declared at: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h:770
¶void considerOverlaps(
const llvm::DebugVariable& Var,
const llvm::DILocation* Loc)
void considerOverlaps(
const llvm::DebugVariable& Var,
const llvm::DILocation* Loc)
Declared at: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h:743
Parameters
- const llvm::DebugVariable& Var
- const llvm::DILocation* Loc
¶void defVar(
const llvm::MachineInstr& MI,
const LiveDebugValues::DbgValueProperties&
Properties,
Optional<LiveDebugValues::ValueIDNum> ID)
void defVar(
const llvm::MachineInstr& MI,
const LiveDebugValues::DbgValueProperties&
Properties,
Optional<LiveDebugValues::ValueIDNum> ID)
Declared at: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h:709
Parameters
- const llvm::MachineInstr& MI
- const LiveDebugValues::DbgValueProperties& Properties
- Optional<LiveDebugValues::ValueIDNum> ID
¶void defVar(const llvm::MachineInstr& MI,
const llvm::MachineOperand& MO)
void defVar(const llvm::MachineInstr& MI,
const llvm::MachineOperand& MO)
Declared at: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h:726
Parameters
- const llvm::MachineInstr& MI
- const llvm::MachineOperand& MO