Thanks to visit codestin.com
Credit goes to llvm.org

LLVM 22.0.0git
LiveDebugValues::VLocTracker Class Reference

Collection of DBG_VALUEs observed when traversing a block. More...

#include "CodeGen/LiveDebugValues/InstrRefBasedImpl.h"

Public Member Functions

 VLocTracker (DebugVariableMap &DVMap, const OverlapMap &O, const DIExpression *EmptyExpr)
void defVar (const MachineInstr &MI, const DbgValueProperties &Properties, const SmallVectorImpl< DbgOpID > &DebugOps)
void considerOverlaps (const DebugVariable &Var, const DILocation *Loc)
void clear ()

Public Attributes

DebugVariableMapDVMap
 Ref to function-wide map of DebugVariable <=> ID-numbers.
SmallMapVector< DebugVariableID, DbgValue, 8 > Vars
 Map DebugVariable to the latest Value it's defined to have.
SmallDenseMap< DebugVariableID, const DILocation *, 8 > Scopes
MachineBasicBlockMBB = nullptr
const OverlapMapOverlappingFragments
DbgValueProperties EmptyProperties

Detailed 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.

Definition at line 1039 of file InstrRefBasedImpl.h.

Constructor & Destructor Documentation

◆ VLocTracker()

LiveDebugValues::VLocTracker::VLocTracker ( DebugVariableMap & DVMap,
const OverlapMap & O,
const DIExpression * EmptyExpr )
inline

Definition at line 1059 of file InstrRefBasedImpl.h.

References DVMap, EmptyProperties, and OverlappingFragments.

Member Function Documentation

◆ clear()

void LiveDebugValues::VLocTracker::clear ( )
inline

Definition at line 1109 of file InstrRefBasedImpl.h.

References Scopes, and Vars.

◆ considerOverlaps()

◆ defVar()

void LiveDebugValues::VLocTracker::defVar ( const MachineInstr & MI,
const DbgValueProperties & Properties,
const SmallVectorImpl< DbgOpID > & DebugOps )
inline

Member Data Documentation

◆ DVMap

DebugVariableMap& LiveDebugValues::VLocTracker::DVMap

Ref to function-wide map of DebugVariable <=> ID-numbers.

Definition at line 1042 of file InstrRefBasedImpl.h.

Referenced by considerOverlaps(), defVar(), and VLocTracker().

◆ EmptyProperties

DbgValueProperties LiveDebugValues::VLocTracker::EmptyProperties

Definition at line 1056 of file InstrRefBasedImpl.h.

Referenced by considerOverlaps(), and VLocTracker().

◆ MBB

MachineBasicBlock* LiveDebugValues::VLocTracker::MBB = nullptr

Definition at line 1054 of file InstrRefBasedImpl.h.

◆ OverlappingFragments

const OverlapMap& LiveDebugValues::VLocTracker::OverlappingFragments

Definition at line 1055 of file InstrRefBasedImpl.h.

Referenced by considerOverlaps(), and VLocTracker().

◆ Scopes

SmallDenseMap<DebugVariableID, const DILocation *, 8> LiveDebugValues::VLocTracker::Scopes

Definition at line 1053 of file InstrRefBasedImpl.h.

Referenced by clear(), considerOverlaps(), and defVar().

◆ Vars

SmallMapVector<DebugVariableID, DbgValue, 8> LiveDebugValues::VLocTracker::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. (FIXME: likely no longer true as the ordering is now provided by DebugVariableMap). 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.

Definition at line 1052 of file InstrRefBasedImpl.h.

Referenced by clear(), considerOverlaps(), and defVar().


The documentation for this class was generated from the following file: