LLVM: llvm::LazyValueInfo Class Reference (original) (raw)

This pass computes, caches, and vends lazy value constraint information. More...

#include "[llvm/Analysis/LazyValueInfo.h](LazyValueInfo%5F8h%5Fsource.html)"

Public Member Functions
~LazyValueInfo ()
LazyValueInfo ()=default
LazyValueInfo (AssumptionCache *AC_, const DataLayout *DL_)
LazyValueInfo (LazyValueInfo &&Arg)
LazyValueInfo & operator= (LazyValueInfo &&Arg)
Constant * getPredicateOnEdge (CmpInst::Predicate Pred, Value *V, Constant *C, BasicBlock *FromBB, BasicBlock *ToBB, Instruction *CxtI=nullptr)
Determine whether the specified value comparison with a constant is known to be true or false on the specified CFG edge.
Constant * getPredicateAt (CmpInst::Predicate Pred, Value *V, Constant *C, Instruction *CxtI, bool UseBlockValue)
Determine whether the specified value comparison with a constant is known to be true or false at the specified instruction.
Constant * getPredicateAt (CmpInst::Predicate Pred, Value *LHS, Value *RHS, Instruction *CxtI, bool UseBlockValue)
Determine whether the specified value comparison is known to be true or false at the specified instruction.
Constant * getConstant (Value *V, Instruction *CxtI)
Determine whether the specified value is known to be a constant at the specified instruction.
ConstantRange getConstantRange (Value *V, Instruction *CxtI, bool UndefAllowed)
Return the ConstantRange constraint that is known to hold for the specified value at the specified instruction.
ConstantRange getConstantRangeAtUse (const Use &U, bool UndefAllowed)
Return the ConstantRange constraint that is known to hold for the value at a specific use-site.
Constant * getConstantOnEdge (Value *V, BasicBlock *FromBB, BasicBlock *ToBB, Instruction *CxtI=nullptr)
Determine whether the specified value is known to be a constant on the specified edge.
ConstantRange getConstantRangeOnEdge (Value *V, BasicBlock *FromBB, BasicBlock *ToBB, Instruction *CxtI=nullptr)
Return the ConstantRage constraint that is known to hold for the specified value on the specified edge.
void threadEdge (BasicBlock *PredBB, BasicBlock *OldSucc, BasicBlock *NewSucc)
Inform the analysis cache that we have threaded an edge from PredBB to OldSucc to be from PredBB to NewSucc instead.
void forgetValue (Value *V)
Remove information related to this value from the cache.
void eraseBlock (BasicBlock *BB)
Inform the analysis cache that we have erased a block.
void clear ()
Complete flush all previously computed values.
void printLVI (Function &F, DominatorTree &DTree, raw_ostream &OS)
Print the \LazyValueInfo Analysis.
void releaseMemory ()
bool invalidate (Function &F, const PreservedAnalyses &PA, FunctionAnalysisManager::Invalidator &Inv)
Handle invalidation events in the new pass manager.

This pass computes, caches, and vends lazy value constraint information.

Definition at line 32 of file LazyValueInfo.h.

LazyValueInfo::~LazyValueInfo ( )

LazyValueInfo() [1/3]

llvm::LazyValueInfo::LazyValueInfo ( ) default

LazyValueInfo() [2/3]

LazyValueInfo() [3/3]

llvm::LazyValueInfo::LazyValueInfo ( LazyValueInfo && Arg) inline

clear()

void LazyValueInfo::clear ( )

eraseBlock()

forgetValue()

void LazyValueInfo::forgetValue ( Value * V )

getConstant()

getConstantOnEdge()

getConstantRange()

getConstantRangeAtUse()

Return the ConstantRange constraint that is known to hold for the value at a specific use-site.

Definition at line 1791 of file LazyValueInfo.cpp.

References llvm::LazyValueInfoImpl::getValueAtUse().

Referenced by processAbsIntrinsic(), processAnd(), processAShr(), processBinOp(), processCmpIntrinsic(), processICmp(), processMinMaxIntrinsic(), processPossibleNonNeg(), processSDivOrSRem(), processSExt(), processSIToFP(), processSwitch(), processUDivOrURem(), and willNotOverflow().

getConstantRangeOnEdge()

getPredicateAt() [1/2]

Determine whether the specified value comparison is known to be true or false at the specified instruction.

While this takes two Value's, it still requires that one of them is a constant. Pred is a CmpInst predicate. If UseBlockValue is true, the block value is also taken into account.

Definition at line 1989 of file LazyValueInfo.cpp.

References llvm::CallingConv::C, llvm::Instruction::getModule(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), getPredicateAt(), llvm::CmpInst::getSwappedPredicate(), llvm::Value::getType(), llvm::LazyValueInfoImpl::getValueInBlock(), LHS, llvm::CmpInst::makeCmpResultType(), and RHS.

getPredicateAt() [2/2]

Determine whether the specified value comparison with a constant is known to be true or false at the specified instruction.

Pred is a CmpInst predicate. If UseBlockValue is true, the block value is also taken into account.

Definition at line 1882 of file LazyValueInfo.cpp.

References llvm::CallingConv::C, DL, llvm::ConstantInt::getFalse(), llvm::Instruction::getModule(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), getPredicateOnEdge(), getPredicateResult(), llvm::ConstantInt::getTrue(), llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_NE, llvm::isKnownNonZero(), llvm::CmpInst::makeCmpResultType(), PHI, llvm::pred_begin(), and llvm::pred_end().

Referenced by constantFoldCmp(), getConstantAt(), getPredicateAt(), llvm::JumpThreadingPass::processBlock(), processCallSite(), and processSwitch().

getPredicateOnEdge()

invalidate()

operator=()

printLVI()

Print the \LazyValueInfo Analysis.

We pass in the DTree that is required for identifying which basic blocks we can solve/print for, in the LVIPrinter.

Definition at line 2037 of file LazyValueInfo.cpp.

References F, and OS.

releaseMemory()

void LazyValueInfo::releaseMemory ( )

threadEdge()

LazyValueInfoWrapperPass


The documentation for this class was generated from the following files: