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.
◆ releaseMemory()
void LazyValueInfo::releaseMemory | ( | ) |
---|
◆ threadEdge()
◆ LazyValueInfoWrapperPass
The documentation for this class was generated from the following files:
- include/llvm/Analysis/LazyValueInfo.h
- lib/Analysis/LazyValueInfo.cpp