clang: clang::ento::ConstraintManager Class Reference (original) (raw)

#include "[clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h](ConstraintManager%5F8h%5Fsource.html)"

Classes
class AssumeStackTy
A helper class to simulate the call stack of nested assume calls. More...
Public Member Functions
ConstraintManager ()=default
virtual ~ConstraintManager ()
virtual bool haveEqualConstraints (ProgramStateRef S1, ProgramStateRef S2) const =0
ProgramStateRef assume (ProgramStateRef state, DefinedSVal Cond, bool Assumption)
ProgramStatePair assumeDual (ProgramStateRef State, DefinedSVal Cond)
Returns a pair of states (StTrue, StFalse) where the given condition is assumed to be true or false, respectively.
ProgramStateRef assumeInclusiveRange (ProgramStateRef State, NonLoc Value, const llvm::APSInt &From, const llvm::APSInt &To, bool InBound)
ProgramStatePair assumeInclusiveRangeDual (ProgramStateRef State, NonLoc Value, const llvm::APSInt &From, const llvm::APSInt &To)
Returns a pair of states (StInRange, StOutOfRange) where the given value is assumed to be in the range or out of the range, respectively.
virtual const llvm::APSInt * getSymVal (ProgramStateRef state, SymbolRef sym) const
If a symbol is perfectly constrained to a constant, attempt to return the concrete value.
virtual const llvm::APSInt * getSymMinVal (ProgramStateRef state, SymbolRef sym) const
Attempt to return the minimal possible value for a given symbol.
virtual const llvm::APSInt * getSymMaxVal (ProgramStateRef state, SymbolRef sym) const
Attempt to return the minimal possible value for a given symbol.
virtual ProgramStateRef removeDeadBindings (ProgramStateRef state, SymbolReaper &SymReaper)=0
Scan all symbols referenced by the constraints.
virtual void printJson (raw_ostream &Out, ProgramStateRef State, const char *NL, unsigned int Space, bool IsDot) const =0
virtual void printValue (raw_ostream &Out, ProgramStateRef State, SymbolRef Sym)
ConditionTruthVal isNull (ProgramStateRef State, SymbolRef Sym)
Convenience method to query the state to see if a symbol is null or not null, or if neither assumption can be made.
Protected Member Functions
virtual ProgramStateRef assumeInternal (ProgramStateRef state, DefinedSVal Cond, bool Assumption)=0
virtual ProgramStateRef assumeInclusiveRangeInternal (ProgramStateRef State, NonLoc Value, const llvm::APSInt &From, const llvm::APSInt &To, bool InBound)=0
virtual bool canReasonAbout (SVal X) const =0
canReasonAbout - Not all ConstraintManagers can accurately reason about all SVal values.
virtual ConditionTruthVal checkNull (ProgramStateRef State, SymbolRef Sym)
Returns whether or not a symbol is known to be null ("true"), known to be non-null ("false"), or may be either ("underconstrained").
template
ProgramStatePair assumeDualImpl (ProgramStateRef &State, AssumeFunction &Assume)

Definition at line 69 of file ConstraintManager.h.

ProgramStatePair

clang::ento::ConstraintManager::ConstraintManager ( ) default

~ConstraintManager()

ConstraintManager::~ConstraintManager ( ) virtualdefault

assume()

assumeDual()

assumeDualImpl()

template

assumeInclusiveRange()

assumeInclusiveRangeDual()

Returns a pair of states (StInRange, StOutOfRange) where the given value is assumed to be in the range or out of the range, respectively.

(Note that these two states might be equal if the parent state turns out to be infeasible. This may happen if the underlying constraint solver is not perfectly precise and this may happen very rarely.)

Definition at line 101 of file ConstraintManager.cpp.

References assumeDualImpl(), and assumeInclusiveRangeInternal().

Referenced by assumeInclusiveRange().

assumeInclusiveRangeInternal()

virtual ProgramStateRef clang::ento::ConstraintManager::assumeInclusiveRangeInternal ( ProgramStateRef State, NonLoc Value, const llvm::APSInt & From, const llvm::APSInt & To, bool InBound ) protectedpure virtual

assumeInternal()

canReasonAbout()

virtual bool clang::ento::ConstraintManager::canReasonAbout ( SVal X) const protectedpure virtual

checkNull()

getSymMaxVal()

virtual const llvm::APSInt * clang::ento::ConstraintManager::getSymMaxVal ( ProgramStateRef state, SymbolRef sym ) const inlinevirtual

Attempt to return the minimal possible value for a given symbol.

Note that a ConstraintManager is not obligated to return a lower bound, it may also return nullptr.

Definition at line 124 of file ConstraintManager.h.

getSymMinVal()

virtual const llvm::APSInt * clang::ento::ConstraintManager::getSymMinVal ( ProgramStateRef state, SymbolRef sym ) const inlinevirtual

Attempt to return the minimal possible value for a given symbol.

Note that a ConstraintManager is not obligated to return a lower bound, it may also return nullptr.

Definition at line 116 of file ConstraintManager.h.

getSymVal()

virtual const llvm::APSInt * clang::ento::ConstraintManager::getSymVal ( ProgramStateRef state, SymbolRef sym ) const inlinevirtual

haveEqualConstraints()

isNull()

printJson()

virtual void clang::ento::ConstraintManager::printJson ( raw_ostream & Out, ProgramStateRef State, const char * NL, unsigned int Space, bool IsDot ) const pure virtual

printValue()

virtual void clang::ento::ConstraintManager::printValue ( raw_ostream & Out, ProgramStateRef State, SymbolRef Sym ) inlinevirtual

removeDeadBindings()

AssumeStack


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