class ConstraintManager
Declaration
class ConstraintManager { /* full declaration omitted */ };
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:69
Member Variables
- protected clang::ento::ConstraintManager::AssumeStackTy AssumeStack
Method Overview
- public ConstraintManager()
- public clang::ento::ProgramStateRef assume(clang::ento::ProgramStateRef state, clang::ento::DefinedSVal Cond, bool Assumption)
- public clang::ento::ConstraintManager::ProgramStatePair assumeDual(clang::ento::ProgramStateRef State, clang::ento::DefinedSVal Cond)
- protected template <typename AssumeFunction>clang::ento::ConstraintManager::ProgramStatePair assumeDualImpl(clang::ento::ProgramStateRef & State, AssumeFunction & Assume)
- public clang::ento::ProgramStateRef assumeInclusiveRange(clang::ento::ProgramStateRef State, clang::ento::NonLoc Value, const llvm::APSInt & From, const llvm::APSInt & To, bool InBound)
- public clang::ento::ConstraintManager::ProgramStatePair assumeInclusiveRangeDual(clang::ento::ProgramStateRef State, clang::ento::NonLoc Value, const llvm::APSInt & From, const llvm::APSInt & To)
- protected virtual clang::ento::ProgramStateRef assumeInclusiveRangeInternal(clang::ento::ProgramStateRef State, clang::ento::NonLoc Value, const llvm::APSInt & From, const llvm::APSInt & To, bool InBound)
- protected virtual clang::ento::ProgramStateRef assumeInternal(clang::ento::ProgramStateRef state, clang::ento::DefinedSVal Cond, bool Assumption)
- protected virtual bool canReasonAbout(clang::ento::SVal X) const
- protected virtual clang::ento::ConditionTruthVal checkNull(clang::ento::ProgramStateRef State, clang::ento::SymbolRef Sym)
- public virtual const llvm::APSInt * getSymVal(clang::ento::ProgramStateRef state, clang::ento::SymbolRef sym) const
- public virtual bool haveEqualConstraints(clang::ento::ProgramStateRef S1, clang::ento::ProgramStateRef S2) const
- public clang::ento::ConditionTruthVal isNull(clang::ento::ProgramStateRef State, clang::ento::SymbolRef Sym)
- public virtual void printJson(llvm::raw_ostream & Out, clang::ento::ProgramStateRef State, const char * NL, unsigned int Space, bool IsDot) const
- public virtual void printValue(llvm::raw_ostream & Out, clang::ento::ProgramStateRef State, clang::ento::SymbolRef Sym)
- public virtual clang::ento::ProgramStateRef removeDeadBindings(clang::ento::ProgramStateRef state, clang::ento::SymbolReaper & SymReaper)
- public virtual ~ConstraintManager()
Methods
¶ConstraintManager()
ConstraintManager()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:71
¶clang::ento::ProgramStateRef assume(
clang::ento::ProgramStateRef state,
clang::ento::DefinedSVal Cond,
bool Assumption)
clang::ento::ProgramStateRef assume(
clang::ento::ProgramStateRef state,
clang::ento::DefinedSVal Cond,
bool Assumption)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:77
Parameters
- clang::ento::ProgramStateRef state
- clang::ento::DefinedSVal Cond
- bool Assumption
¶clang::ento::ConstraintManager::ProgramStatePair
assumeDual(clang::ento::ProgramStateRef State,
clang::ento::DefinedSVal Cond)
clang::ento::ConstraintManager::ProgramStatePair
assumeDual(clang::ento::ProgramStateRef State,
clang::ento::DefinedSVal Cond)
Description
Returns a pair of states (StTrue, StFalse) where the given condition is assumed to be true or false, 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.)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:87
Parameters
¶template <typename AssumeFunction>
clang::ento::ConstraintManager::ProgramStatePair
assumeDualImpl(
clang::ento::ProgramStateRef& State,
AssumeFunction& Assume)
template <typename AssumeFunction>
clang::ento::ConstraintManager::ProgramStatePair
assumeDualImpl(
clang::ento::ProgramStateRef& State,
AssumeFunction& Assume)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:167
Templates
- AssumeFunction
Parameters
- clang::ento::ProgramStateRef& State
- AssumeFunction& Assume
¶clang::ento::ProgramStateRef assumeInclusiveRange(
clang::ento::ProgramStateRef State,
clang::ento::NonLoc Value,
const llvm::APSInt& From,
const llvm::APSInt& To,
bool InBound)
clang::ento::ProgramStateRef assumeInclusiveRange(
clang::ento::ProgramStateRef State,
clang::ento::NonLoc Value,
const llvm::APSInt& From,
const llvm::APSInt& To,
bool InBound)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:89
Parameters
- clang::ento::ProgramStateRef State
- clang::ento::NonLoc Value
- const llvm::APSInt& From
- const llvm::APSInt& To
- bool InBound
¶clang::ento::ConstraintManager::ProgramStatePair
assumeInclusiveRangeDual(
clang::ento::ProgramStateRef State,
clang::ento::NonLoc Value,
const llvm::APSInt& From,
const llvm::APSInt& To)
clang::ento::ConstraintManager::ProgramStatePair
assumeInclusiveRangeDual(
clang::ento::ProgramStateRef State,
clang::ento::NonLoc Value,
const llvm::APSInt& From,
const llvm::APSInt& To)
Description
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.)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:98
Parameters
- clang::ento::ProgramStateRef State
- clang::ento::NonLoc Value
- const llvm::APSInt& From
- const llvm::APSInt& To
¶virtual clang::ento::ProgramStateRef
assumeInclusiveRangeInternal(
clang::ento::ProgramStateRef State,
clang::ento::NonLoc Value,
const llvm::APSInt& From,
const llvm::APSInt& To,
bool InBound)
virtual clang::ento::ProgramStateRef
assumeInclusiveRangeInternal(
clang::ento::ProgramStateRef State,
clang::ento::NonLoc Value,
const llvm::APSInt& From,
const llvm::APSInt& To,
bool InBound)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:149
Parameters
- clang::ento::ProgramStateRef State
- clang::ento::NonLoc Value
- const llvm::APSInt& From
- const llvm::APSInt& To
- bool InBound
¶virtual clang::ento::ProgramStateRef
assumeInternal(clang::ento::ProgramStateRef state,
clang::ento::DefinedSVal Cond,
bool Assumption)
virtual clang::ento::ProgramStateRef
assumeInternal(clang::ento::ProgramStateRef state,
clang::ento::DefinedSVal Cond,
bool Assumption)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:146
Parameters
- clang::ento::ProgramStateRef state
- clang::ento::DefinedSVal Cond
- bool Assumption
¶virtual bool canReasonAbout(
clang::ento::SVal X) const
virtual bool canReasonAbout(
clang::ento::SVal X) const
Description
canReasonAbout - Not all ConstraintManagers can accurately reason about all SVal values. This method returns true if the ConstraintManager can reasonably handle a given SVal value. This is typically queried by ExprEngine to determine if the value should be replaced with a conjured symbolic value in order to recover some precision.
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:160
Parameters
¶virtual clang::ento::ConditionTruthVal checkNull(
clang::ento::ProgramStateRef State,
clang::ento::SymbolRef Sym)
virtual clang::ento::ConditionTruthVal checkNull(
clang::ento::ProgramStateRef State,
clang::ento::SymbolRef Sym)
Description
Returns whether or not a symbol is known to be null ("true"), known to be non-null ("false"), or may be either ("underconstrained").
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:164
Parameters
¶virtual const llvm::APSInt* getSymVal(
clang::ento::ProgramStateRef state,
clang::ento::SymbolRef sym) const
virtual const llvm::APSInt* getSymVal(
clang::ento::ProgramStateRef state,
clang::ento::SymbolRef sym) const
Description
If a symbol is perfectly constrained to a constant, attempt to return the concrete value. Note that a ConstraintManager is not obligated to return a concretized value for a symbol, even if it is perfectly constrained. It might return null.
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:108
Parameters
¶virtual bool haveEqualConstraints(
clang::ento::ProgramStateRef S1,
clang::ento::ProgramStateRef S2) const
virtual bool haveEqualConstraints(
clang::ento::ProgramStateRef S1,
clang::ento::ProgramStateRef S2) const
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:74
Parameters
¶clang::ento::ConditionTruthVal isNull(
clang::ento::ProgramStateRef State,
clang::ento::SymbolRef Sym)
clang::ento::ConditionTruthVal isNull(
clang::ento::ProgramStateRef State,
clang::ento::SymbolRef Sym)
Description
Convenience method to query the state to see if a symbol is null or not null, or if neither assumption can be made.
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:127
Parameters
¶virtual void printJson(
llvm::raw_ostream& Out,
clang::ento::ProgramStateRef State,
const char* NL,
unsigned int Space,
bool IsDot) const
virtual void printJson(
llvm::raw_ostream& Out,
clang::ento::ProgramStateRef State,
const char* NL,
unsigned int Space,
bool IsDot) const
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:118
Parameters
- llvm::raw_ostream& Out
- clang::ento::ProgramStateRef State
- const char* NL
- unsigned int Space
- bool IsDot
¶virtual void printValue(
llvm::raw_ostream& Out,
clang::ento::ProgramStateRef State,
clang::ento::SymbolRef Sym)
virtual void printValue(
llvm::raw_ostream& Out,
clang::ento::ProgramStateRef State,
clang::ento::SymbolRef Sym)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:122
Parameters
¶virtual clang::ento::ProgramStateRef
removeDeadBindings(
clang::ento::ProgramStateRef state,
clang::ento::SymbolReaper& SymReaper)
virtual clang::ento::ProgramStateRef
removeDeadBindings(
clang::ento::ProgramStateRef state,
clang::ento::SymbolReaper& SymReaper)
Description
Scan all symbols referenced by the constraints. If the symbol is not alive, remove it.
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:115
Parameters
- clang::ento::ProgramStateRef state
- clang::ento::SymbolReaper& SymReaper
¶virtual ~ConstraintManager()
virtual ~ConstraintManager()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h:72