14 #ifndef LLVM_IR_VALUE_H
15 #define LLVM_IR_VALUE_H
27 class AssemblyAnnotationWriter;
42 class ValueHandleBase;
43 class ValueSymbolTable;
67 const unsigned char SubclassID;
68 unsigned char HasValueHandle : 1;
80 unsigned short SubclassData;
163 if (I == E)
return false;
304 APInt &Offset)
const {
305 return const_cast<Value *
>(
this)
357 if (Val) removeFromList();
417 return isa<GlobalVariable>(Val) || isa<Function>(Val) ||
418 isa<GlobalAlias>(Val);
435 return static_cast<PT
>(
P);
437 enum { NumLowBitsAvailable = 2 };
446 return reinterpret_cast<Value**
>(Vals);
456 return reinterpret_cast<T**
>(Vals);
COFF::RelocationTypeX86 Type
Value * stripInBoundsConstantOffsets()
Strips off unneeded pointer casts and all-constant GEPs from the specified value, returning the origi...
LLVM Argument representation.
const Value * stripInBoundsConstantOffsets() const
const Value * stripPointerCastsNoFollowAliases() const
bool hasNUses(unsigned N) const
static bool doit(const Value &Val)
static void * getAsVoidPointer(PT P)
MDNode - a tuple of other values.
LLVMContext ** unwrap(LLVMContextRef *Tys)
static PT getFromVoidPointer(void *P)
const_use_iterator use_begin() const
const Value * DoPHITranslation(const BasicBlock *CurBB, const BasicBlock *PredBB) const
StringRef getName() const
void dump() const
dump - Support for debugging, callable in GDB: V->dump()
void setName(const Twine &Name)
static bool doit(const Value &Val)
Value * stripAndAccumulateInBoundsConstantOffsets(const DataLayout &DL, APInt &Offset)
Strips like stripInBoundsConstantOffsets but also accumulates the constant offset stripped...
const User * use_back() const
#define DEFINE_ISA_CONVERSION_FUNCTIONS(ty, ref)
static bool doit(const Value &Val)
static bool doit(const Value &Val)
ValueName * getValueName() const
void replaceAllUsesWith(Value *V)
Value * stripPointerCastsNoFollowAliases()
Strips off any unneeded pointer casts and all-zero GEPs from the specified value, returning the origi...
void intersectOptionalDataWith(const Value *V)
value_use_iterator< User > use_iterator
LLVM Basic Block Representation.
LLVM Constant Representation.
Value * stripInBoundsOffsets()
Strips off unneeded pointer casts and any in-bounds offsets from the specified value, returning the original pointer value.
unsigned getValueID() const
bool hasValueHandle() const
void setValueName(ValueName *VN)
LLVMContext & getContext() const
All values hold a context through their type.
bool isUsedInBasicBlock(const BasicBlock *BB) const
bool hasSameSubclassOptionalData(const Value *V) const
struct LLVMOpaqueValue * LLVMValueRef
unsigned char SubclassOptionalData
virtual void printCustom(raw_ostream &O) const
Value * DoPHITranslation(const BasicBlock *CurBB, const BasicBlock *PredBB)
LLVMContextRef * wrap(const LLVMContext **Tys)
Value * stripPointerCasts()
Strips off any unneeded pointer casts, all-zero GEPs and aliases from the specified value...
void setValueSubclassData(unsigned short D)
const Value * stripInBoundsOffsets() const
#define LLVM_DELETED_FUNCTION
Class for arbitrary precision integers.
const Value * stripPointerCasts() const
bool isDereferenceablePointer() const
unsigned short getSubclassDataFromValue() const
static bool doit(const Value &Val)
unsigned getRawSubclassOptionalData() const
value_use_iterator< const User > const_use_iterator
static bool doit(const Value &Val)
raw_ostream & operator<<(raw_ostream &OS, const APInt &I)
void mutateType(Type *Ty)
bool hasNUsesOrMore(unsigned N) const
StringMapEntry< Value * > ValueName
LLVM Value Representation.
void clearSubclassOptionalData()
static bool doit(const Value &Val)
void print(raw_ostream &O, AssemblyAnnotationWriter *AAW=0) const
static bool doit(const Value &Val)
const_use_iterator use_end() const
static bool doit(const Value &Val)
unsigned getNumUses() const
static bool doit(const Value &Val)
const Value * stripAndAccumulateInBoundsConstantOffsets(const DataLayout &DL, APInt &Offset) const