LLVM 20.0.0git
|
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 | |
DebugVariableMap & | DVMap |
Ref to function-wide map of DebugVariable <=> ID-numbers. | |
MapVector< DebugVariableID, DbgValue > | Vars |
Map DebugVariable to the latest Value it's defined to have. | |
SmallDenseMap< DebugVariableID, const DILocation *, 8 > | Scopes |
MachineBasicBlock * | MBB = nullptr |
const OverlapMap & | OverlappingFragments |
DbgValueProperties | EmptyProperties |
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 1042 of file InstrRefBasedImpl.h.
|
inline |
Definition at line 1062 of file InstrRefBasedImpl.h.
|
inline |
Definition at line 1116 of file InstrRefBasedImpl.h.
|
inline |
Definition at line 1087 of file InstrRefBasedImpl.h.
References DVMap, EmptyProperties, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), llvm::DebugVariable::getFragmentOrDefault(), llvm::DebugVariable::getInlinedAt(), llvm::DebugVariable::getVariable(), LiveDebugValues::DebugVariableMap::insertDVID(), llvm::DebugVariable::isDefaultFragment(), OverlappingFragments, Scopes, LiveDebugValues::DbgValue::Undef, and Vars.
Referenced by defVar().
|
inline |
Definition at line 1067 of file InstrRefBasedImpl.h.
References assert(), considerOverlaps(), DVMap, LiveDebugValues::DebugVariableMap::insertDVID(), MI, Scopes, llvm::SmallVectorBase< Size_T >::size(), LiveDebugValues::DbgValue::Undef, and Vars.
DebugVariableMap& LiveDebugValues::VLocTracker::DVMap |
Ref to function-wide map of DebugVariable <=> ID-numbers.
Definition at line 1045 of file InstrRefBasedImpl.h.
Referenced by considerOverlaps(), and defVar().
DbgValueProperties LiveDebugValues::VLocTracker::EmptyProperties |
Definition at line 1059 of file InstrRefBasedImpl.h.
Referenced by considerOverlaps().
MachineBasicBlock* LiveDebugValues::VLocTracker::MBB = nullptr |
Definition at line 1057 of file InstrRefBasedImpl.h.
const OverlapMap& LiveDebugValues::VLocTracker::OverlappingFragments |
Definition at line 1058 of file InstrRefBasedImpl.h.
Referenced by considerOverlaps().
SmallDenseMap<DebugVariableID, const DILocation *, 8> LiveDebugValues::VLocTracker::Scopes |
Definition at line 1056 of file InstrRefBasedImpl.h.
Referenced by clear(), considerOverlaps(), and defVar().
MapVector<DebugVariableID, DbgValue> 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 1055 of file InstrRefBasedImpl.h.
Referenced by clear(), considerOverlaps(), and defVar().