14 #ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_CONSTRAINTMANAGER_H
15 #define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_CONSTRAINTMANAGER_H
19 #include "llvm/Support/SaveAndRestore.h"
42 return Val.hasValue() && Val.getValue();
47 return Val.hasValue() && !Val.getValue();
52 return Val.hasValue();
58 return !Val.hasValue();
86 assert(
assume(State, Cond,
false) &&
"System is over constrained.");
118 const char *sep) = 0;
151 std::unique_ptr<ConstraintManager>
virtual ProgramStateRef assume(ProgramStateRef state, DefinedSVal Cond, bool Assumption)=0
bool isConstrainedFalse() const
Return true if the constraint is perfectly constrained to 'false'.
std::unique_ptr< ConstraintManager > CreateRangeConstraintManager(ProgramStateManager &statemgr, SubEngine *subengine)
virtual void EndPath(ProgramStateRef state)
virtual ConditionTruthVal checkNull(ProgramStateRef State, SymbolRef Sym)
Symbolic value. These values used to capture symbolic execution of the program.
virtual ~ConstraintManager()
ConditionTruthVal isNull(ProgramStateRef State, SymbolRef Sym)
virtual void print(ProgramStateRef state, raw_ostream &Out, const char *nl, const char *sep)=0
ProgramStatePair assumeDual(ProgramStateRef State, DefinedSVal Cond)
virtual ProgramStateRef removeDeadBindings(ProgramStateRef state, SymbolReaper &SymReaper)=0
std::pair< ProgramStateRef, ProgramStateRef > ProgramStatePair
A class responsible for cleaning up unused symbols.
virtual bool canReasonAbout(SVal X) const =0
ConditionTruthVal(bool constraint)
bool isConstrainedTrue() const
Return true if the constraint is perfectly constrained to 'true'.
ConditionTruthVal()
Construct a ConstraintVal indicating the constraint is underconstrained.
bool isUnderconstrained() const
bool isConstrained() const
Return true if the constrained is perfectly constrained.
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...