LLVM  mainline
Namespaces | Enumerations | Functions
ValueTracking.h File Reference
#include "llvm/ADT/ArrayRef.h"
#include "llvm/Support/DataTypes.h"
Include dependency graph for ValueTracking.h:

Go to the source code of this file.

Namespaces

namespace  llvm
 

Compute iterated dominance frontiers using a linear time algorithm.


Enumerations

enum  llvm::OverflowResult { llvm::AlwaysOverflows, llvm::MayOverflow, llvm::NeverOverflows }

Functions

void llvm::computeKnownBits (Value *V, APInt &KnownZero, APInt &KnownOne, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr)
void llvm::computeKnownBitsFromRangeMetadata (const MDNode &Ranges, APInt &KnownZero)
void llvm::ComputeSignBit (Value *V, bool &KnownZero, bool &KnownOne, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr)
bool llvm::isKnownToBeAPowerOfTwo (Value *V, const DataLayout &DL, bool OrZero=false, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr)
bool llvm::isKnownNonZero (Value *V, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr)
bool llvm::MaskedValueIsZero (Value *V, const APInt &Mask, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr)
unsigned llvm::ComputeNumSignBits (Value *Op, const DataLayout &DL, unsigned Depth=0, AssumptionCache *AC=nullptr, const Instruction *CxtI=nullptr, const DominatorTree *DT=nullptr)
bool llvm::ComputeMultiple (Value *V, unsigned Base, Value *&Multiple, bool LookThroughSExt=false, unsigned Depth=0)
bool llvm::CannotBeNegativeZero (const Value *V, unsigned Depth=0)
bool llvm::CannotBeOrderedLessThanZero (const Value *V, unsigned Depth=0)
Valuellvm::isBytewiseValue (Value *V)
Valuellvm::FindInsertedValue (Value *V, ArrayRef< unsigned > idx_range, Instruction *InsertBefore=nullptr)
Valuellvm::GetPointerBaseWithConstantOffset (Value *Ptr, int64_t &Offset, const DataLayout &DL)
static const Value * llvm::GetPointerBaseWithConstantOffset (const Value *Ptr, int64_t &Offset, const DataLayout &DL)
bool llvm::getConstantStringInfo (const Value *V, StringRef &Str, uint64_t Offset=0, bool TrimAtNul=true)
uint64_t llvm::GetStringLength (Value *V)
Valuellvm::GetUnderlyingObject (Value *V, const DataLayout &DL, unsigned MaxLookup=6)
static const Value * llvm::GetUnderlyingObject (const Value *V, const DataLayout &DL, unsigned MaxLookup=6)
void llvm::GetUnderlyingObjects (Value *V, SmallVectorImpl< Value * > &Objects, const DataLayout &DL, LoopInfo *LI=nullptr, unsigned MaxLookup=6)
 This method is similar to GetUnderlyingObject except that it can look through phi and select instructions and return multiple objects.
bool llvm::onlyUsedByLifetimeMarkers (const Value *V)
 Return true if the only users of this pointer are lifetime markers.
bool llvm::isDereferenceablePointer (const Value *V, const DataLayout &DL)
bool llvm::isSafeToSpeculativelyExecute (const Value *V)
bool llvm::isKnownNonNull (const Value *V, const TargetLibraryInfo *TLI=nullptr)
 Return true if we know that the specified value is never null.
bool llvm::isValidAssumeForContext (const Instruction *I, const Instruction *CxtI, const DominatorTree *DT=nullptr)
OverflowResult llvm::computeOverflowForUnsignedMul (Value *LHS, Value *RHS, const DataLayout &DL, AssumptionCache *AC, const Instruction *CxtI, const DominatorTree *DT)
OverflowResult llvm::computeOverflowForUnsignedAdd (Value *LHS, Value *RHS, const DataLayout &DL, AssumptionCache *AC, const Instruction *CxtI, const DominatorTree *DT)