LLVM 20.0.0git
|
#include "CodeGen/LiveDebugValues/InstrRefBasedImpl.h"
Public Types | |
using | FragmentInfo = DIExpression::FragmentInfo |
using | OptFragmentInfo = std::optional< DIExpression::FragmentInfo > |
using | VarToFragments = DenseMap< const DILocalVariable *, SmallSet< FragmentInfo, 4 > > |
using | MLocTransferMap = SmallDenseMap< LocIdx, ValueIDNum > |
Machine location/value transfer function, a mapping of which locations are assigned which new values. | |
using | LiveIdxT = DenseMap< const MachineBasicBlock *, DbgValue * > |
Live in/out structure for the variable values: a per-block map of variables to their values. | |
using | VarAndLoc = std::pair< DebugVariableID, DbgValue > |
using | InValueT = std::pair< MachineBasicBlock *, DbgValue * > |
Type for a live-in value: the predecessor block, and its value. | |
using | LiveInsT = SmallVector< SmallVector< VarAndLoc, 8 >, 8 > |
Vector (per block) of a collection (inner smallvector) of live-ins. | |
using | ScopeToDILocT = DenseMap< const LexicalScope *, const DILocation * > |
Mapping from lexical scopes to a DILocation in that scope. | |
using | ScopeToVarsT = DenseMap< const LexicalScope *, SmallSet< DebugVariableID, 4 > > |
Mapping from lexical scopes to variables in that scope. | |
using | ScopeToAssignBlocksT = DenseMap< const LexicalScope *, SmallPtrSet< MachineBasicBlock *, 4 > > |
Mapping from lexical scopes to blocks where variables in that scope are assigned. | |
Public Member Functions | |
InstrRefBasedLDV () | |
Default construct and initialize the pass. | |
LLVM_DUMP_METHOD void | dump_mloc_transfer (const MLocTransferMap &mloc_transfer) const |
bool | isCalleeSaved (LocIdx L) const |
bool | isCalleeSavedReg (Register R) const |
bool | hasFoldedStackStore (const MachineInstr &MI) |
std::optional< LocIdx > | findLocationForMemOperand (const MachineInstr &MI) |
DebugVariableMap & | getDVMap () |
Friends | |
class | ::InstrRefLDVTest |
Definition at line 1123 of file InstrRefBasedImpl.h.
Definition at line 1127 of file InstrRefBasedImpl.h.
using LiveDebugValues::InstrRefBasedLDV::InValueT = std::pair<MachineBasicBlock *, DbgValue *> |
Type for a live-in value: the predecessor block, and its value.
Definition at line 1146 of file InstrRefBasedImpl.h.
Live in/out structure for the variable values: a per-block map of variables to their values.
Definition at line 1141 of file InstrRefBasedImpl.h.
using LiveDebugValues::InstrRefBasedLDV::LiveInsT = SmallVector<SmallVector<VarAndLoc, 8>, 8> |
Vector (per block) of a collection (inner smallvector) of live-ins.
Used as the result type for the variable value dataflow problem.
Definition at line 1150 of file InstrRefBasedImpl.h.
Machine location/value transfer function, a mapping of which locations are assigned which new values.
Definition at line 1137 of file InstrRefBasedImpl.h.
using LiveDebugValues::InstrRefBasedLDV::OptFragmentInfo = std::optional<DIExpression::FragmentInfo> |
Definition at line 1128 of file InstrRefBasedImpl.h.
using LiveDebugValues::InstrRefBasedLDV::ScopeToAssignBlocksT = DenseMap<const LexicalScope *, SmallPtrSet<MachineBasicBlock *, 4> > |
Mapping from lexical scopes to blocks where variables in that scope are assigned.
Such blocks aren't necessarily "in" the lexical scope, it's just a block where an assignment happens.
Definition at line 1162 of file InstrRefBasedImpl.h.
using LiveDebugValues::InstrRefBasedLDV::ScopeToDILocT = DenseMap<const LexicalScope *, const DILocation *> |
Mapping from lexical scopes to a DILocation in that scope.
Definition at line 1153 of file InstrRefBasedImpl.h.
using LiveDebugValues::InstrRefBasedLDV::ScopeToVarsT = DenseMap<const LexicalScope *, SmallSet<DebugVariableID, 4> > |
Mapping from lexical scopes to variables in that scope.
Definition at line 1156 of file InstrRefBasedImpl.h.
using LiveDebugValues::InstrRefBasedLDV::VarAndLoc = std::pair<DebugVariableID, DbgValue> |
Definition at line 1143 of file InstrRefBasedImpl.h.
using LiveDebugValues::InstrRefBasedLDV::VarToFragments = DenseMap<const DILocalVariable *, SmallSet<FragmentInfo, 4> > |
Definition at line 1132 of file InstrRefBasedImpl.h.
|
default |
Default construct and initialize the pass.
void InstrRefBasedLDV::dump_mloc_transfer | ( | const MLocTransferMap & | mloc_transfer | ) | const |
Definition at line 3410 of file InstrRefBasedImpl.cpp.
References llvm::dbgs(), LiveDebugValues::MLocTracker::IDAsString(), LiveDebugValues::MLocTracker::LocIdxToName(), and P.
std::optional< LocIdx > InstrRefBasedLDV::findLocationForMemOperand | ( | const MachineInstr & | MI | ) |
Definition at line 1378 of file InstrRefBasedImpl.cpp.
References assert(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), LiveDebugValues::MLocTracker::getSpillIDWithIdx(), LiveDebugValues::MLocTracker::getSpillMLoc(), llvm::LocationSize::getValue(), llvm::LocationSize::hasValue(), MI, and LiveDebugValues::MLocTracker::StackSlotIdxes.
|
inline |
Definition at line 1530 of file InstrRefBasedImpl.h.
|
inline |
Definition at line 1514 of file InstrRefBasedImpl.h.
References llvm::PseudoSourceValue::FixedStack, and MI.
Definition at line 1342 of file InstrRefBasedImpl.cpp.
References isCalleeSavedReg(), and LiveDebugValues::MLocTracker::LocIdxToLocID.
Definition at line 1346 of file InstrRefBasedImpl.cpp.
References llvm::MCRegAliasIterator::isValid(), and llvm::BitVector::test().
Referenced by isCalleeSaved().
|
friend |
Definition at line 1125 of file InstrRefBasedImpl.h.