|
LLVM
4.0.0
|
This pass computes, caches, and vends lazy value constraint information. More...
#include <LazyValueInfo.h>
Public Types | |
| enum | Tristate { Unknown = -1, False = 0, True = 1 } |
| This is used to return true/false/dunno results. More... | |
Public Member Functions | |
| ~LazyValueInfo () | |
| LazyValueInfo () | |
| LazyValueInfo (AssumptionCache *AC_, TargetLibraryInfo *TLI_, DominatorTree *DT_) | |
| LazyValueInfo (LazyValueInfo &&Arg) | |
| LazyValueInfo & | operator= (LazyValueInfo &&Arg) |
| Tristate | getPredicateOnEdge (unsigned 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. More... | |
| Tristate | getPredicateAt (unsigned Pred, Value *V, Constant *C, Instruction *CxtI) |
| Determine whether the specified value comparison with a constant is known to be true or false at the specified instruction (from an assume intrinsic). More... | |
| Constant * | getConstant (Value *V, BasicBlock *BB, Instruction *CxtI=nullptr) |
| Determine whether the specified value is known to be a constant at the end of the specified block. More... | |
| ConstantRange | getConstantRange (Value *V, BasicBlock *BB, Instruction *CxtI=nullptr) |
| Return the ConstantRange constraint that is known to hold for the specified value at the end of the specified block. More... | |
| 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. More... | |
| 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. More... | |
| void | eraseBlock (BasicBlock *BB) |
| Inform the analysis cache that we have erased a block. More... | |
| void | releaseMemory () |
Friends | |
| class | LazyValueInfoWrapperPass |
This pass computes, caches, and vends lazy value constraint information.
Definition at line 32 of file LazyValueInfo.h.
This is used to return true/false/dunno results.
| Enumerator | |
|---|---|
| Unknown | |
| False | |
| True | |
Definition at line 61 of file LazyValueInfo.h.
| LazyValueInfo::~LazyValueInfo | ( | ) |
Definition at line 1496 of file LazyValueInfo.cpp.
|
inline |
Definition at line 42 of file LazyValueInfo.h.
|
inline |
Definition at line 43 of file LazyValueInfo.h.
|
inline |
Definition at line 46 of file LazyValueInfo.h.
| void LazyValueInfo::eraseBlock | ( | BasicBlock * | BB | ) |
Inform the analysis cache that we have erased a block.
Definition at line 1777 of file LazyValueInfo.cpp.
References llvm::Module::getDataLayout(), getImpl(), and llvm::BasicBlock::getModule().
Referenced by llvm::removeUnreachableBlocks().
| Constant * LazyValueInfo::getConstant | ( | Value * | V, |
| BasicBlock * | BB, | ||
| Instruction * | CxtI = nullptr |
||
| ) |
Determine whether the specified value is known to be a constant at the end of the specified block.
Return null if not.
Definition at line 1530 of file LazyValueInfo.cpp.
References llvm::ConstantInt::get(), llvm::Value::getContext(), llvm::Module::getDataLayout(), getImpl(), llvm::BasicBlock::getModule(), llvm::ConstantRange::getSingleElement(), and isKnownNonConstant().
Referenced by getConstantAt(), processMemAccess(), and processSelect().
| 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 1570 of file LazyValueInfo.cpp.
References llvm::ConstantInt::get(), llvm::Value::getContext(), llvm::Module::getDataLayout(), getImpl(), llvm::BasicBlock::getModule(), and llvm::ConstantRange::getSingleElement().
Referenced by processPHI().
| ConstantRange LazyValueInfo::getConstantRange | ( | Value * | V, |
| BasicBlock * | BB, | ||
| Instruction * | CxtI = nullptr |
||
| ) |
Return the ConstantRange constraint that is known to hold for the specified value at the end of the specified block.
This may only be called on integer-typed Values.
Definition at line 1550 of file LazyValueInfo.cpp.
References assert(), llvm::Module::getDataLayout(), getImpl(), llvm::Type::getIntegerBitWidth(), llvm::BasicBlock::getModule(), llvm::Value::getType(), and llvm::Type::isIntegerTy().
Referenced by processAdd().
| LazyValueInfo::Tristate LazyValueInfo::getPredicateAt | ( | unsigned | Pred, |
| Value * | V, | ||
| Constant * | C, | ||
| Instruction * | CxtI | ||
| ) |
Determine whether the specified value comparison with a constant is known to be true or false at the specified instruction (from an assume intrinsic).
Pred is a CmpInst predicate.
Definition at line 1669 of file LazyValueInfo.cpp.
References False, llvm::Module::getDataLayout(), getImpl(), llvm::Instruction::getModule(), llvm::Instruction::getParent(), getParent(), getPredicateResult(), llvm::Value::getType(), i, llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_NE, llvm::isKnownNonNull(), llvm::Constant::isNullValue(), llvm::Type::isPointerTy(), llvm::pred_begin(), llvm::pred_end(), llvm::MipsISD::Ret, llvm::Value::stripPointerCasts(), True, and llvm::Unknown.
Referenced by getConstantAt(), hasPositiveOperands(), processAShr(), processCallSite(), and processCmp().
| LazyValueInfo::Tristate LazyValueInfo::getPredicateOnEdge | ( | unsigned | 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 1658 of file LazyValueInfo.cpp.
References llvm::Module::getDataLayout(), getImpl(), llvm::BasicBlock::getModule(), and getPredicateResult().
Referenced by processPHI(), and processSwitch().
|
inline |
Definition at line 50 of file LazyValueInfo.h.
References releaseMemory().
| void LazyValueInfo::releaseMemory | ( | ) |
| 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 1769 of file LazyValueInfo.cpp.
References llvm::Module::getDataLayout(), getImpl(), and llvm::BasicBlock::getModule().
|
friend |
Definition at line 33 of file LazyValueInfo.h.
1.8.6