LLVM
8.0.1
|
Represents a particular available value that we know how to materialize. More...
Public Types | |
enum | ValType { SimpleVal, LoadVal, MemIntrin, UndefVal } |
Public Member Functions | |
bool | isSimpleValue () const |
bool | isCoercedLoadValue () const |
bool | isMemIntrinValue () const |
bool | isUndefValue () const |
Value * | getSimpleValue () const |
LoadInst * | getCoercedLoadValue () const |
MemIntrinsic * | getMemIntrinValue () const |
Value * | MaterializeAdjustedValue (LoadInst *LI, Instruction *InsertPt, GVN &gvn) const |
Emit code at the specified insertion point to adjust the value defined here to the specified type. More... | |
Static Public Member Functions | |
static AvailableValue | get (Value *V, unsigned Offset=0) |
static AvailableValue | getMI (MemIntrinsic *MI, unsigned Offset=0) |
static AvailableValue | getLoad (LoadInst *LI, unsigned Offset=0) |
static AvailableValue | getUndef () |
Public Attributes | |
PointerIntPair< Value *, 2, ValType > | Val |
V - The value that is live out of the block. More... | |
unsigned | Offset |
Offset - The byte offset in Val that is interesting for the load query. More... | |
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.
|
inlinestatic |
Definition at line 177 of file GVN.cpp.
Referenced by llvm::gvn::AvailableValueInBlock::get(), and reportMayClobberedLoad().
|
inline |
Definition at line 219 of file GVN.cpp.
References assert(), and llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::getPointer().
|
inlinestatic |
Definition at line 193 of file GVN.cpp.
Referenced by reportMayClobberedLoad().
|
inline |
Definition at line 224 of file GVN.cpp.
References assert(), and llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::getPointer().
|
inlinestatic |
Definition at line 185 of file GVN.cpp.
Referenced by reportMayClobberedLoad().
|
inline |
Definition at line 214 of file GVN.cpp.
References assert(), and llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::getPointer().
|
inlinestatic |
Definition at line 201 of file GVN.cpp.
Referenced by llvm::gvn::AvailableValueInBlock::getUndef().
|
inline |
Definition at line 210 of file GVN.cpp.
References llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::getInt().
|
inline |
Definition at line 211 of file GVN.cpp.
References llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::getInt().
|
inline |
Definition at line 209 of file GVN.cpp.
References llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::getInt().
|
inline |
Definition at line 212 of file GVN.cpp.
References llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits, Info >::getInt().
Value * AvailableValue::MaterializeAdjustedValue | ( | LoadInst * | LI, |
Instruction * | InsertPt, | ||
GVN & | 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 786 of file GVN.cpp.
References assert(), llvm::dbgs(), llvm::UndefValue::get(), llvm::Module::getDataLayout(), llvm::VNCoercion::getLoadValueForLoad(), llvm::GVN::getMemDep(), llvm::VNCoercion::getMemInstValueForLoad(), llvm::Instruction::getModule(), llvm::VNCoercion::getStoreValueForLoad(), llvm::Value::getType(), LLVM_DEBUG, llvm::SPII::Load, and llvm::MemoryDependenceResults::removeInstruction().
Referenced by llvm::gvn::AvailableValueInBlock::MaterializeAdjustedValue(), and patchAndReplaceAllUsesWith().
unsigned llvm::gvn::AvailableValue::Offset |
PointerIntPair<Value *, 2, ValType> llvm::gvn::AvailableValue::Val |