LLVM
8.0.1
|
#include "llvm/Analysis/ValueLattice.h"
Public Member Functions | |
ValueLatticeElement () | |
~ValueLatticeElement () | |
Custom destructor to ensure Range is properly destroyed, when the object is deallocated. More... | |
ValueLatticeElement (const ValueLatticeElement &Other) | |
Custom copy constructor, to ensure Range gets initialized when copying a constant range lattice element. More... | |
ValueLatticeElement & | operator= (const ValueLatticeElement &Other) |
Custom assignment operator, to ensure Range gets initialized when assigning a constant range lattice element. More... | |
bool | isUndefined () const |
bool | isConstant () const |
bool | isNotConstant () const |
bool | isConstantRange () const |
bool | isOverdefined () const |
Constant * | getConstant () const |
Constant * | getNotConstant () const |
const ConstantRange & | getConstantRange () const |
Optional< APInt > | asConstantInteger () const |
bool | mergeIn (const ValueLatticeElement &RHS, const DataLayout &DL) |
Updates this object to approximate both this object and RHS. More... | |
ConstantInt * | getConstantInt () const |
Constant * | getCompare (CmpInst::Predicate Pred, Type *Ty, const ValueLatticeElement &Other) const |
Compares this symbolic value with Other using Pred and returns either true, false or undef constants, or nullptr if the comparison cannot be evaluated. More... | |
Static Public Member Functions | |
static ValueLatticeElement | get (Constant *C) |
static ValueLatticeElement | getNot (Constant *C) |
static ValueLatticeElement | getRange (ConstantRange CR) |
static ValueLatticeElement | getOverdefined () |
Definition at line 27 of file ValueLattice.h.
|
inline |
Definition at line 64 of file ValueLattice.h.
|
inline |
Custom destructor to ensure Range is properly destroyed, when the object is deallocated.
Definition at line 68 of file ValueLattice.h.
References Range.
|
inline |
Custom copy constructor, to ensure Range gets initialized when copying a constant range lattice element.
Definition at line 83 of file ValueLattice.h.
Definition at line 165 of file ValueLattice.h.
References assert(), ConstVal, getConstant(), getConstantRange(), getNotConstant(), llvm::ConstantRange::getSingleElement(), isConstant(), isConstantRange(), llvm::ConstantRange::isEmptySet(), isNotConstant(), isOverdefined(), isUndefined(), llvm::None, and Range.
Referenced by getEdgeValueLocal().
|
inlinestatic |
Definition at line 120 of file ValueLattice.h.
References C.
Referenced by getEdgeValueLocal(), getValueFromICmpCondition(), and intersect().
|
inline |
Compares this symbolic value with Other using Pred and returns either true, false or undef constants, or nullptr if the comparison cannot be evaluated.
Definition at line 294 of file ValueLattice.h.
References contains(), llvm::UndefValue::get(), llvm::ConstantExpr::getCompare(), getConstant(), getConstantRange(), llvm::ConstantInt::getFalse(), llvm::CmpInst::getInversePredicate(), llvm::ConstantInt::getTrue(), isConstant(), isConstantRange(), isUndefined(), llvm::ConstantRange::makeSatisfyingICmpRegion(), and llvm::operator<<().
|
inline |
Definition at line 149 of file ValueLattice.h.
References assert(), ConstVal, and isConstant().
Referenced by asConstantInteger(), getCompare(), llvm::LazyValueInfo::getConstant(), getConstantInt(), llvm::LazyValueInfo::getConstantOnEdge(), llvm::LazyValueInfo::getConstantRange(), llvm::LazyValueInfo::getConstantRangeOnEdge(), getPredicateResult(), mergeIn(), and llvm::operator<<().
|
inline |
Definition at line 285 of file ValueLattice.h.
References assert(), getConstant(), and isConstant().
|
inline |
Definition at line 159 of file ValueLattice.h.
References assert(), isConstantRange(), and Range.
Referenced by asConstantInteger(), getCompare(), llvm::LazyValueInfo::getConstant(), llvm::LazyValueInfo::getConstantOnEdge(), llvm::LazyValueInfo::getConstantRange(), llvm::LazyValueInfo::getConstantRangeOnEdge(), getEdgeValueLocal(), getPredicateResult(), hasSingleValue(), intersect(), isObjectDereferencedInBlock(), mergeIn(), and llvm::operator<<().
|
inlinestatic |
Definition at line 126 of file ValueLattice.h.
Referenced by getFromRangeMetadata(), getValueFromICmpCondition(), and isObjectDereferencedInBlock().
|
inline |
Definition at line 154 of file ValueLattice.h.
References assert(), ConstVal, and isNotConstant().
Referenced by asConstantInteger(), getPredicateResult(), mergeIn(), and llvm::operator<<().
|
inlinestatic |
Definition at line 137 of file ValueLattice.h.
Referenced by constantFoldUser(), getEdgeValueLocal(), getFromRangeMetadata(), getValueFromConditionImpl(), getValueFromICmpCondition(), intersect(), and isObjectDereferencedInBlock().
|
inlinestatic |
Definition at line 132 of file ValueLattice.h.
Referenced by constantFoldUser(), getEdgeValueLocal(), getFromRangeMetadata(), getValueFromICmpCondition(), intersect(), and isObjectDereferencedInBlock().
|
inline |
Definition at line 144 of file ValueLattice.h.
Referenced by asConstantInteger(), getCompare(), llvm::LazyValueInfo::getConstant(), getConstant(), getConstantInt(), llvm::LazyValueInfo::getConstantOnEdge(), llvm::LazyValueInfo::getConstantRange(), llvm::LazyValueInfo::getConstantRangeOnEdge(), getPredicateResult(), hasSingleValue(), mergeIn(), and operator=().
|
inline |
Definition at line 146 of file ValueLattice.h.
Referenced by asConstantInteger(), getCompare(), llvm::LazyValueInfo::getConstant(), llvm::LazyValueInfo::getConstantOnEdge(), llvm::LazyValueInfo::getConstantRange(), getConstantRange(), llvm::LazyValueInfo::getConstantRangeOnEdge(), getPredicateResult(), hasSingleValue(), intersect(), isObjectDereferencedInBlock(), mergeIn(), llvm::operator<<(), and operator=().
|
inline |
Definition at line 145 of file ValueLattice.h.
Referenced by asConstantInteger(), getNotConstant(), getPredicateResult(), mergeIn(), llvm::operator<<(), and operator=().
|
inline |
Definition at line 147 of file ValueLattice.h.
Referenced by asConstantInteger(), getEdgeValueLocal(), intersect(), isObjectDereferencedInBlock(), mergeIn(), and llvm::operator<<().
|
inline |
Definition at line 143 of file ValueLattice.h.
Referenced by asConstantInteger(), llvm::LazyValueInfo::enableDT(), getCompare(), llvm::LazyValueInfo::getConstantRange(), llvm::LazyValueInfo::getConstantRangeOnEdge(), intersect(), mergeIn(), and llvm::operator<<().
|
inline |
Updates this object to approximate both this object and RHS.
Returns true if this object has been changed.
Definition at line 241 of file ValueLattice.h.
References assert(), getConstant(), getConstantRange(), getNotConstant(), isConstant(), isConstantRange(), llvm::ConstantRange::isFullSet(), isNotConstant(), isOverdefined(), isUndefined(), and llvm::ConstantRange::unionWith().
Referenced by isObjectDereferencedInBlock().
|
inline |
Custom assignment operator, to ensure Range gets initialized when assigning a constant range lattice element.
Definition at line 89 of file ValueLattice.h.
References ConstVal, isConstant(), isConstantRange(), isNotConstant(), and Range.
Constant* llvm::ValueLatticeElement::ConstVal |
Definition at line 58 of file ValueLattice.h.
Referenced by asConstantInteger(), getConstant(), getNotConstant(), and operator=().
ConstantRange llvm::ValueLatticeElement::Range |
Definition at line 59 of file ValueLattice.h.
Referenced by asConstantInteger(), getConstantRange(), operator=(), and ~ValueLatticeElement().