LLVM 18.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< DebugVariable, 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< DebugVariable, 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) |
Friends | |
class | ::InstrRefLDVTest |
Definition at line 1037 of file InstrRefBasedImpl.h.
Definition at line 1041 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 1060 of file InstrRefBasedImpl.h.
Live in/out structure for the variable values: a per-block map of variables to their values.
Definition at line 1055 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 1064 of file InstrRefBasedImpl.h.
Machine location/value transfer function, a mapping of which locations are assigned which new values.
Definition at line 1051 of file InstrRefBasedImpl.h.
using LiveDebugValues::InstrRefBasedLDV::OptFragmentInfo = std::optional<DIExpression::FragmentInfo> |
Definition at line 1042 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 1075 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 1067 of file InstrRefBasedImpl.h.
using LiveDebugValues::InstrRefBasedLDV::ScopeToVarsT = DenseMap<const LexicalScope *, SmallSet<DebugVariable, 4> > |
Mapping from lexical scopes to variables in that scope.
Definition at line 1070 of file InstrRefBasedImpl.h.
using LiveDebugValues::InstrRefBasedLDV::VarAndLoc = std::pair<DebugVariable, DbgValue> |
Definition at line 1057 of file InstrRefBasedImpl.h.
using LiveDebugValues::InstrRefBasedLDV::VarToFragments = DenseMap<const DILocalVariable *, SmallSet<FragmentInfo, 4> > |
Definition at line 1046 of file InstrRefBasedImpl.h.
|
default |
Default construct and initialize the pass.
void InstrRefBasedLDV::dump_mloc_transfer | ( | const MLocTransferMap & | mloc_transfer | ) | const |
Definition at line 3376 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 1349 of file InstrRefBasedImpl.cpp.
References llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), LiveDebugValues::MLocTracker::getSpillIDWithIdx(), LiveDebugValues::MLocTracker::getSpillMLoc(), MI, and LiveDebugValues::MLocTracker::StackSlotIdxes.
|
inline |
Definition at line 1423 of file InstrRefBasedImpl.h.
References llvm::PseudoSourceValue::FixedStack, and MI.
Definition at line 1313 of file InstrRefBasedImpl.cpp.
References isCalleeSavedReg(), and LiveDebugValues::MLocTracker::LocIdxToLocID.
Definition at line 1317 of file InstrRefBasedImpl.cpp.
References llvm::MCRegAliasIterator::isValid(), and llvm::BitVector::test().
Referenced by isCalleeSaved().
|
friend |
Definition at line 1039 of file InstrRefBasedImpl.h.