LLVM 22.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 LLVM_ABI_FOR_TEST ValueIDNum | EmptyValue = {UINT_MAX, UINT_MAX, UINT_MAX} |
static LLVM_ABI_FOR_TEST 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 146 of file InstrRefBasedImpl.h.
|
inline |
Definition at line 163 of file InstrRefBasedImpl.h.
References EmptyValue.
Referenced by fromU64(), operator!=(), operator<(), and operator==().
Definition at line 165 of file InstrRefBasedImpl.h.
References llvm::Block.
Definition at line 169 of file InstrRefBasedImpl.h.
References llvm::Block.
|
inline |
Definition at line 196 of file InstrRefBasedImpl.h.
References llvm::concat(), llvm::Twine::concat(), and llvm::Twine::str().
Referenced by LiveDebugValues::MLocTracker::IDAsString().
|
inline |
Definition at line 178 of file InstrRefBasedImpl.h.
Referenced by llvm::DenseMapInfo< ValueIDNum >::getHashValue(), llvm::SSAUpdaterTraits< LDVSSAUpdater >::GetPoisonVal(), and operator<().
|
inlinestatic |
Definition at line 180 of file InstrRefBasedImpl.h.
References Value, and ValueIDNum().
|
inline |
Definition at line 173 of file InstrRefBasedImpl.h.
Referenced by TransferTracker::isEntryValueValue(), and TransferTracker::loadVarInloc().
|
inline |
Definition at line 174 of file InstrRefBasedImpl.h.
Referenced by TransferTracker::loadVarInloc().
|
inline |
Definition at line 175 of file InstrRefBasedImpl.h.
Referenced by LiveDebugValues::MLocTracker::IDAsString(), TransferTracker::isEntryValueValue(), and TransferTracker::recoverAsEntryValue().
|
inline |
Definition at line 176 of file InstrRefBasedImpl.h.
Referenced by TransferTracker::isEntryValueValue(), and TransferTracker::loadVarInloc().
|
inline |
Definition at line 194 of file InstrRefBasedImpl.h.
References llvm::Other, and ValueIDNum().
|
inline |
Definition at line 186 of file InstrRefBasedImpl.h.
References asU64(), llvm::Other, and ValueIDNum().
|
inline |
Definition at line 190 of file InstrRefBasedImpl.h.
References llvm::Other, and ValueIDNum().
uint64_t LiveDebugValues::ValueIDNum::BlockNo |
Definition at line 149 of file InstrRefBasedImpl.h.
|
static |
Definition at line 208 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 150 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 152 of file InstrRefBasedImpl.h.
struct { ... } LiveDebugValues::ValueIDNum::s |
|
static |
Definition at line 209 of file InstrRefBasedImpl.h.
Referenced by llvm::DenseMapInfo< ValueIDNum >::getTombstoneKey().
uint64_t LiveDebugValues::ValueIDNum::Value |
Definition at line 155 of file InstrRefBasedImpl.h.
Referenced by TransferTracker::checkInstForNewValues(), and fromU64().