LLVM
15.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, Optional< ValueIDNum > ID) |
void | defVar (const MachineInstr &MI, const MachineOperand &MO) |
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. More... | |
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 689 of file InstrRefBasedImpl.h.
|
inline |
Definition at line 706 of file InstrRefBasedImpl.h.
|
inline |
Definition at line 770 of file InstrRefBasedImpl.h.
References llvm::MapVector< KeyT, ValueT, MapType, VectorType >::clear(), and llvm::DenseMapBase< SmallDenseMap< KeyT, ValueT, 4, DenseMapInfo< KeyT >, llvm::detail::DenseMapPair< KeyT, ValueT > >, KeyT, ValueT, DenseMapInfo< KeyT >, llvm::detail::DenseMapPair< KeyT, ValueT > >::clear().
|
inline |
Definition at line 743 of file InstrRefBasedImpl.h.
References 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::MapVector< KeyT, ValueT, MapType, VectorType >::insert(), llvm::None, and LiveDebugValues::DbgValue::Undef.
|
inline |
Definition at line 709 of file InstrRefBasedImpl.h.
References assert(), LiveDebugValues::DbgValue::Def, llvm::MapVector< KeyT, ValueT, MapType, VectorType >::insert(), MI, and LiveDebugValues::DbgValue::Undef.
|
inline |
Definition at line 726 of file InstrRefBasedImpl.h.
References assert(), LiveDebugValues::DbgValue::Const, llvm::MapVector< KeyT, ValueT, MapType, VectorType >::insert(), and MI.
DbgValueProperties LiveDebugValues::VLocTracker::EmptyProperties |
Definition at line 703 of file InstrRefBasedImpl.h.
MachineBasicBlock* LiveDebugValues::VLocTracker::MBB = nullptr |
Definition at line 701 of file InstrRefBasedImpl.h.
const OverlapMap& LiveDebugValues::VLocTracker::OverlappingFragments |
Definition at line 702 of file InstrRefBasedImpl.h.
SmallDenseMap<DebugVariable, const DILocation *, 8> LiveDebugValues::VLocTracker::Scopes |
Definition at line 700 of file InstrRefBasedImpl.h.
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 699 of file InstrRefBasedImpl.h.