LLVM 18.0.0git
|
Collection of DBG_VALUEs observed when traversing a block. More...
#include "CodeGen/LiveDebugValues/InstrRefBasedImpl.h"
Public Member Functions | |
VLocTracker (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 | |
MapVector< DebugVariable, DbgValue > | Vars |
Map DebugVariable to the latest Value it's defined to have. | |
SmallDenseMap< DebugVariable, 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 965 of file InstrRefBasedImpl.h.
|
inline |
Definition at line 982 of file InstrRefBasedImpl.h.
|
inline |
Definition at line 1030 of file InstrRefBasedImpl.h.
|
inline |
Definition at line 1003 of file InstrRefBasedImpl.h.
References 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(), llvm::DebugVariable::isDefaultFragment(), OverlappingFragments, Scopes, LiveDebugValues::DbgValue::Undef, and Vars.
Referenced by defVar().
|
inline |
Definition at line 985 of file InstrRefBasedImpl.h.
References assert(), considerOverlaps(), MI, Scopes, llvm::SmallVectorBase< Size_T >::size(), LiveDebugValues::DbgValue::Undef, and Vars.
DbgValueProperties LiveDebugValues::VLocTracker::EmptyProperties |
Definition at line 979 of file InstrRefBasedImpl.h.
Referenced by considerOverlaps().
MachineBasicBlock* LiveDebugValues::VLocTracker::MBB = nullptr |
Definition at line 977 of file InstrRefBasedImpl.h.
const OverlapMap& LiveDebugValues::VLocTracker::OverlappingFragments |
Definition at line 978 of file InstrRefBasedImpl.h.
Referenced by considerOverlaps().
SmallDenseMap<DebugVariable, const DILocation *, 8> LiveDebugValues::VLocTracker::Scopes |
Definition at line 976 of file InstrRefBasedImpl.h.
Referenced by clear(), considerOverlaps(), and defVar().
MapVector<DebugVariable, 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. 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 975 of file InstrRefBasedImpl.h.
Referenced by clear(), considerOverlaps(), and defVar().