LLVM 20.0.0git
|
Represents a particular available value that we know how to materialize. More...
Public Types | |
enum class | ValType { SimpleVal , LoadVal , MemIntrin , UndefVal , SelectVal } |
Public Member Functions | |
bool | isSimpleValue () const |
bool | isCoercedLoadValue () const |
bool | isMemIntrinValue () const |
bool | isUndefValue () const |
bool | isSelectValue () const |
Value * | getSimpleValue () const |
LoadInst * | getCoercedLoadValue () const |
MemIntrinsic * | getMemIntrinValue () const |
SelectInst * | getSelectValue () const |
Value * | MaterializeAdjustedValue (LoadInst *Load, Instruction *InsertPt, GVNPass &gvn) const |
Emit code at the specified insertion point to adjust the value defined here to the specified type. | |
Static Public Member Functions | |
static AvailableValue | get (Value *V, unsigned Offset=0) |
static AvailableValue | getMI (MemIntrinsic *MI, unsigned Offset=0) |
static AvailableValue | getLoad (LoadInst *Load, unsigned Offset=0) |
static AvailableValue | getUndef () |
static AvailableValue | getSelect (SelectInst *Sel, Value *V1, Value *V2) |
Public Attributes | |
Value * | Val |
Val - The value that is live out of the block. | |
ValType | Kind |
Kind of the live-out value. | |
unsigned | Offset = 0 |
Offset - The byte offset in Val that is interesting for the load query. | |
Value * | V1 = nullptr |
V1, V2 - The dominating non-clobbered values of SelectVal. | |
Value * | V2 = nullptr |
Represents a particular available value that we know how to materialize.
Materialization of an AvailableValue never fails. An AvailableValue is implicitly associated with a rematerialization point which is the location of the instruction from which it was formed.
|
strong |
|
inlinestatic |
|
inline |
Definition at line 270 of file GVN.cpp.
References assert(), isCoercedLoadValue(), and Val.
|
inlinestatic |
|
inline |
Definition at line 275 of file GVN.cpp.
References assert(), isMemIntrinValue(), and Val.
|
inlinestatic |
|
inlinestatic |
|
inline |
Definition at line 280 of file GVN.cpp.
References assert(), isSelectValue(), and Val.
|
inline |
Definition at line 265 of file GVN.cpp.
References assert(), isSimpleValue(), and Val.
|
inlinestatic |
|
inline |
Definition at line 260 of file GVN.cpp.
Referenced by getCoercedLoadValue().
|
inline |
Definition at line 261 of file GVN.cpp.
References Kind, and MemIntrin.
Referenced by getMemIntrinValue().
|
inline |
Definition at line 263 of file GVN.cpp.
References Kind, and SelectVal.
Referenced by getSelectValue().
|
inline |
Definition at line 259 of file GVN.cpp.
References Kind, and SimpleVal.
Referenced by getSimpleValue().
|
inline |
Value * AvailableValue::MaterializeAdjustedValue | ( | LoadInst * | Load, |
Instruction * | InsertPt, | ||
GVNPass & | gvn | ||
) | const |
Emit code at the specified insertion point to adjust the value defined here to the specified type.
This handles various coercion cases.
Definition at line 1077 of file GVN.cpp.
References assert(), llvm::combineMetadataForCSE(), llvm::SelectInst::Create(), llvm::dbgs(), DL, llvm::Instruction::dropUnknownNonDebugMetadata(), llvm::SelectInst::getCondition(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::VNCoercion::getMemInstValueForLoad(), llvm::Value::getType(), llvm::VNCoercion::getValueForLoad(), llvm::Instruction::hasMetadata(), LLVM_DEBUG, llvm_unreachable, and llvm::Offset.
Referenced by llvm::gvn::AvailableValueInBlock::MaterializeAdjustedValue().
ValType llvm::gvn::AvailableValue::Kind |
Kind of the live-out value.
Definition at line 210 of file GVN.cpp.
Referenced by get(), getLoad(), getMI(), getSelect(), getUndef(), isCoercedLoadValue(), isMemIntrinValue(), isSelectValue(), isSimpleValue(), and isUndefValue().
unsigned llvm::gvn::AvailableValue::Offset = 0 |
Offset - The byte offset in Val that is interesting for the load query.
Definition at line 213 of file GVN.cpp.
Referenced by get(), getLoad(), getMI(), getSelect(), and getUndef().
Value* llvm::gvn::AvailableValue::V1 = nullptr |
V1, V2 - The dominating non-clobbered values of SelectVal.
Definition at line 215 of file GVN.cpp.
Referenced by getSelect().
Value * llvm::gvn::AvailableValue::V2 = nullptr |
Definition at line 215 of file GVN.cpp.
Referenced by getSelect().
Value* llvm::gvn::AvailableValue::Val |
Val - The value that is live out of the block.
Definition at line 208 of file GVN.cpp.
Referenced by get(), getCoercedLoadValue(), getLoad(), getMemIntrinValue(), getMI(), getSelect(), getSelectValue(), getSimpleValue(), and getUndef().