LLVM 20.0.0git
|
Unique identifier for a value defined by an instruction, as a value type. More...
#include "CodeGen/LiveDebugValues/InstrRefBasedImpl.h"
Public Member Functions | |
ValueIDNum () | |
ValueIDNum (uint64_t Block, uint64_t Inst, uint64_t Loc) | |
ValueIDNum (uint64_t Block, uint64_t Inst, LocIdx Loc) | |
uint64_t | getBlock () const |
uint64_t | getInst () const |
uint64_t | getLoc () const |
bool | isPHI () const |
uint64_t | asU64 () const |
bool | operator< (const ValueIDNum &Other) const |
bool | operator== (const ValueIDNum &Other) const |
bool | operator!= (const ValueIDNum &Other) const |
std::string | asString (const std::string &mlocname) const |
Static Public Member Functions | |
static ValueIDNum | fromU64 (uint64_t v) |
Static Public Attributes | |
static ValueIDNum | EmptyValue = {UINT_MAX, UINT_MAX, UINT_MAX} |
static ValueIDNum | TombstoneValue = {UINT_MAX, UINT_MAX, UINT_MAX - 1} |
Unique identifier for a value defined by an instruction, as a value type.
Casts back and forth to a uint64_t. Probably replacable with something less bit-constrained. Each value identifies the instruction and machine location where the value is defined, although there may be no corresponding machine operand for it (ex: regmasks clobbering values). The instructions are one-based, and definitions that are PHIs have instruction number zero.
The obvious limits of a 1M block function or 1M instruction blocks are problematic; but by that point we should probably have bailed out of trying to analyse the function.
Definition at line 145 of file InstrRefBasedImpl.h.
|
inline |
Definition at line 162 of file InstrRefBasedImpl.h.
References asU64(), and EmptyValue.
Definition at line 164 of file InstrRefBasedImpl.h.
References llvm::Block.
Definition at line 168 of file InstrRefBasedImpl.h.
References LiveDebugValues::LocIdx::asU64(), and llvm::Block.
|
inline |
Definition at line 195 of file InstrRefBasedImpl.h.
References llvm::Twine::concat(), llvm::concat(), and llvm::Twine::str().
Referenced by LiveDebugValues::MLocTracker::IDAsString().
|
inline |
Definition at line 177 of file InstrRefBasedImpl.h.
Referenced by llvm::DenseMapInfo< ValueIDNum >::getHashValue(), llvm::SSAUpdaterTraits< LDVSSAUpdater >::GetPoisonVal(), operator<(), and ValueIDNum().
|
inlinestatic |
Definition at line 179 of file InstrRefBasedImpl.h.
References Value.
|
inline |
Definition at line 172 of file InstrRefBasedImpl.h.
Referenced by TransferTracker::isEntryValueValue(), and TransferTracker::loadVarInloc().
|
inline |
Definition at line 173 of file InstrRefBasedImpl.h.
Referenced by TransferTracker::loadVarInloc().
|
inline |
Definition at line 174 of file InstrRefBasedImpl.h.
Referenced by LiveDebugValues::MLocTracker::IDAsString(), TransferTracker::isEntryValueValue(), and TransferTracker::recoverAsEntryValue().
|
inline |
Definition at line 175 of file InstrRefBasedImpl.h.
Referenced by TransferTracker::isEntryValueValue(), and TransferTracker::loadVarInloc().
|
inline |
Definition at line 193 of file InstrRefBasedImpl.h.
References llvm::Other.
|
inline |
Definition at line 185 of file InstrRefBasedImpl.h.
References asU64(), and llvm::Other.
|
inline |
Definition at line 189 of file InstrRefBasedImpl.h.
References llvm::Other.
uint64_t LiveDebugValues::ValueIDNum::BlockNo |
Definition at line 148 of file InstrRefBasedImpl.h.
|
static |
Definition at line 207 of file InstrRefBasedImpl.h.
Referenced by TransferTracker::clobberMloc(), LiveDebugValues::FuncValueTable::FuncValueTable(), llvm::DenseMapInfo< ValueIDNum >::getEmptyKey(), LiveDebugValues::DbgOp::isUndef(), TransferTracker::loadInlocs(), TransferTracker::transferMlocs(), ValueIDNum(), and LiveDebugValues::MLocTracker::wipeRegister().
uint64_t LiveDebugValues::ValueIDNum::InstNo |
The block where the def happens.
Definition at line 149 of file InstrRefBasedImpl.h.
uint64_t LiveDebugValues::ValueIDNum::LocNo |
The Instruction where the def happens.
One based, is distance from start of block.
Definition at line 151 of file InstrRefBasedImpl.h.
struct { ... } LiveDebugValues::ValueIDNum::s |
|
static |
Definition at line 208 of file InstrRefBasedImpl.h.
Referenced by llvm::DenseMapInfo< ValueIDNum >::getTombstoneKey().
uint64_t LiveDebugValues::ValueIDNum::Value |
Definition at line 154 of file InstrRefBasedImpl.h.
Referenced by fromU64().