|
LLVM 22.0.0git
|
This pass computes, caches, and vends lazy value constraint information. More...
#include "llvm/Analysis/LazyValueInfo.h"
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. | |
Friends | |
| class | LazyValueInfoWrapperPass |
This pass computes, caches, and vends lazy value constraint information.
Definition at line 32 of file LazyValueInfo.h.
| LazyValueInfo::~LazyValueInfo | ( | ) |
Definition at line 1914 of file LazyValueInfo.cpp.
References releaseMemory().
|
default |
|
inline |
Definition at line 46 of file LazyValueInfo.h.
|
inline |
Definition at line 48 of file LazyValueInfo.h.
| void LazyValueInfo::clear | ( | ) |
Complete flush all previously computed values.
Definition at line 2226 of file LazyValueInfo.cpp.
| void LazyValueInfo::eraseBlock | ( | BasicBlock * | BB | ) |
Inform the analysis cache that we have erased a block.
Definition at line 2221 of file LazyValueInfo.cpp.
| void LazyValueInfo::forgetValue | ( | Value * | V | ) |
Remove information related to this value from the cache.
Definition at line 2216 of file LazyValueInfo.cpp.
| Constant * LazyValueInfo::getConstant | ( | Value * | V, |
| Instruction * | CxtI ) |
Determine whether the specified value is known to be a constant at the specified instruction.
Return null if not.
Definition at line 1958 of file LazyValueInfo.cpp.
References llvm::BasicBlock::getModule(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), llvm::ConstantRange::getSingleElement(), and isKnownNonConstant().
Referenced by getConstantAt(), and processCallSite().
| Constant * LazyValueInfo::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.
Return null if not.
Definition at line 1995 of file LazyValueInfo.cpp.
References llvm::BasicBlock::getModule(), and llvm::ConstantRange::getSingleElement().
Referenced by getValueOnEdge(), processSelect(), and simplifyCommonValuePhi().
| ConstantRange LazyValueInfo::getConstantRange | ( | Value * | V, |
| Instruction * | CxtI, | ||
| bool | UndefAllowed ) |
Return the ConstantRange constraint that is known to hold for the specified value at the specified instruction.
This may only be called on integer-typed Values.
Definition at line 1977 of file LazyValueInfo.cpp.
References llvm::BasicBlock::getModule(), and llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent().
Referenced by runImpl().
| ConstantRange LazyValueInfo::getConstantRangeAtUse | ( | const Use & | U, |
| bool | UndefAllowed ) |
Return the ConstantRange constraint that is known to hold for the value at a specific use-site.
Definition at line 1985 of file LazyValueInfo.cpp.
References llvm::cast().
Referenced by processAbsIntrinsic(), processAnd(), processAShr(), processBinOp(), processCmpIntrinsic(), processICmp(), processMinMaxIntrinsic(), processPossibleNonNeg(), processSDivOrSRem(), processSExt(), processSIToFP(), processSwitch(), processTrunc(), processUDivOrURem(), and willNotOverflow().
| ConstantRange LazyValueInfo::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.
This may be only be called on integer-typed Values.
Definition at line 2012 of file LazyValueInfo.cpp.
References llvm::BasicBlock::getModule().
| Constant * LazyValueInfo::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.
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 2183 of file LazyValueInfo.cpp.
References llvm::CallingConv::C, llvm::dyn_cast(), llvm::Instruction::getModule(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), getPredicateAt(), llvm::CmpInst::getSwappedPredicate(), and llvm::CmpInst::makeCmpResultType().
| Constant * LazyValueInfo::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.
Pred is a CmpInst predicate. If UseBlockValue is true, the block value is also taken into account.
Definition at line 2076 of file LazyValueInfo.cpp.
References llvm::CallingConv::C, llvm::cast(), llvm::dyn_cast(), llvm::ConstantInt::getFalse(), llvm::Instruction::getModule(), getParent(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), getPredicateOnEdge(), getPredicateResult(), llvm::ConstantInt::getTrue(), llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_NE, llvm::isa(), llvm::isKnownNonZero(), llvm::CmpInst::makeCmpResultType(), PHI, llvm::pred_begin(), and llvm::pred_end().
Referenced by constantFoldCmp(), getConstantAt(), getPredicateAt(), processCallSite(), and processSwitch().
| Constant * LazyValueInfo::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.
Pred is a CmpInst predicate.
Definition at line 2065 of file LazyValueInfo.cpp.
References llvm::CallingConv::C, llvm::BasicBlock::getModule(), and getPredicateResult().
Referenced by getPredicateAt(), and getValueOnEdge().
| bool LazyValueInfo::invalidate | ( | Function & | F, |
| const PreservedAnalyses & | PA, | ||
| FunctionAnalysisManager::Invalidator & | Inv ) |
Handle invalidation events in the new pass manager.
Definition at line 1924 of file LazyValueInfo.cpp.
References F, and llvm::PreservedAnalyses::getChecker().
|
inline |
Definition at line 52 of file LazyValueInfo.h.
References releaseMemory().
| void LazyValueInfo::printLVI | ( | Function & | F, |
| DominatorTree & | DTree, | ||
| raw_ostream & | OS ) |
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 2231 of file LazyValueInfo.cpp.
References F.
| void LazyValueInfo::releaseMemory | ( | ) |
Definition at line 1916 of file LazyValueInfo.cpp.
Referenced by operator=(), and ~LazyValueInfo().
| void LazyValueInfo::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.
Definition at line 2210 of file LazyValueInfo.cpp.
|
friend |
Definition at line 33 of file LazyValueInfo.h.
References LazyValueInfoWrapperPass.
Referenced by LazyValueInfoWrapperPass.