15 #ifndef LLVM_ANALYSIS_VALUETRACKING_H
16 #define LLVM_ANALYSIS_VALUETRACKING_H
19 #include "llvm/Support/DataTypes.h"
28 class TargetLibraryInfo;
41 const DataLayout *
TD = 0,
unsigned Depth = 0);
47 const DataLayout *
TD = 0,
unsigned Depth = 0);
72 const DataLayout *
TD = 0,
unsigned Depth = 0);
92 bool LookThroughSExt =
false,
114 ArrayRef<unsigned> idx_range,
115 Instruction *InsertBefore = 0);
121 const DataLayout *
TD);
122 static inline const Value *
135 uint64_t Offset = 0,
bool TrimAtNul =
true);
147 unsigned MaxLookup = 6);
148 static inline const Value *
150 unsigned MaxLookup = 6) {
158 SmallVectorImpl<Value *> &
Objects,
159 const DataLayout *
TD = 0,
160 unsigned MaxLookup = 6);
185 const DataLayout *
TD = 0);
190 bool isKnownNonNull(
const Value *V,
const TargetLibraryInfo *TLI = 0);
uint64_t GetStringLength(Value *V)
void GetUnderlyingObjects(Value *V, SmallVectorImpl< Value * > &Objects, const DataLayout *TD=0, unsigned MaxLookup=6)
Value * isBytewiseValue(Value *V)
bool MaskedValueIsZero(Value *V, const APInt &Mask, const DataLayout *TD=0, unsigned Depth=0)
Value * GetPointerBaseWithConstantOffset(Value *Ptr, int64_t &Offset, const DataLayout *TD)
bool isKnownNonNull(const Value *V, const TargetLibraryInfo *TLI=0)
Value * GetUnderlyingObject(Value *V, const DataLayout *TD=0, unsigned MaxLookup=6)
Value * FindInsertedValue(Value *V, ArrayRef< unsigned > idx_range, Instruction *InsertBefore=0)
void computeMaskedBitsLoad(const MDNode &Ranges, APInt &KnownZero)
void ComputeMaskedBits(Value *V, APInt &KnownZero, APInt &KnownOne, const DataLayout *TD=0, unsigned Depth=0)
bool onlyUsedByLifetimeMarkers(const Value *V)
bool isSafeToSpeculativelyExecute(const Value *V, const DataLayout *TD=0)
static ManagedStatic< LeakDetectorImpl< void > > Objects
bool isKnownToBeAPowerOfTwo(Value *V, bool OrZero=false, unsigned Depth=0)
void ComputeSignBit(Value *V, bool &KnownZero, bool &KnownOne, const DataLayout *TD=0, unsigned Depth=0)
bool ComputeMultiple(Value *V, unsigned Base, Value *&Multiple, bool LookThroughSExt=false, unsigned Depth=0)
unsigned ComputeNumSignBits(Value *Op, const DataLayout *TD=0, unsigned Depth=0)
bool getConstantStringInfo(const Value *V, StringRef &Str, uint64_t Offset=0, bool TrimAtNul=true)
bool CannotBeNegativeZero(const Value *V, unsigned Depth=0)
LLVM Value Representation.
bool isKnownNonZero(Value *V, const DataLayout *TD=0, unsigned Depth=0)
INITIALIZE_PASS(GlobalMerge,"global-merge","Global Merge", false, false) bool GlobalMerge const DataLayout * TD