13 #ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_CONSTRAINTMANAGER_H 14 #define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_CONSTRAINTMANAGER_H 20 #include "llvm/ADT/Optional.h" 21 #include "llvm/Support/SaveAndRestore.h" 34 class ProgramStateManager;
57 return Val.hasValue() && Val.getValue();
62 return Val.hasValue() && !Val.getValue();
67 return Val.hasValue();
73 return !Val.hasValue();
104 assert(assume(State, Cond,
false) &&
"System is over constrained.");
131 assumeInclusiveRange(State, Value, From, To,
true);
139 assumeInclusiveRange(State, Value, From, To,
false);
166 const char *NL,
unsigned int Space,
167 bool IsDot)
const = 0;
174 return checkNull(State, Sym);
184 bool NotifyAssumeClients =
true;
191 virtual bool canReasonAbout(
SVal X)
const = 0;
198 std::unique_ptr<ConstraintManager>
202 std::unique_ptr<ConstraintManager>
208 #endif // LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_CONSTRAINTMANAGER_H
bool isConstrainedFalse() const
Return true if the constraint is perfectly constrained to 'false'.
bool isUnderconstrained() const
Return true if the constrained is underconstrained and we do not know if the constraint is true of va...
Specialize PointerLikeTypeTraits to allow LazyGenerationalUpdatePtr to be placed into a PointerUnion...
std::unique_ptr< ConstraintManager > CreateRangeConstraintManager(ProgramStateManager &statemgr, SubEngine *subengine)
virtual ProgramStatePair assumeInclusiveRangeDual(ProgramStateRef State, NonLoc Value, const llvm::APSInt &From, const llvm::APSInt &To)
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 assumptio...
i32 captured_struct **param SharedsTy A type which contains references the shared variables *param Shareds Context with the list of shared variables from the p *TaskFunction *param Data Additional data for task generation like final * state
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified...
std::unique_ptr< ConstraintManager > CreateZ3ConstraintManager(ProgramStateManager &statemgr, SubEngine *subengine)
bool isConstrainedTrue() const
Return true if the constraint is perfectly constrained to 'true'.
ProgramStatePair assumeDual(ProgramStateRef State, DefinedSVal Cond)
Returns a pair of states (StTrue, StFalse) where the given condition is assumed to be true or false...
SVal - This represents a symbolic expression, which can be either an L-value or an R-value...
A class responsible for cleaning up unused symbols.
Dataflow Directional Tag Classes.
ConditionTruthVal(bool constraint)
Construct a ConditionTruthVal indicating the constraint is constrained to either true or false...
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...
bool isConstrained() const
Return true if the constrained is perfectly constrained.
X
Add a minimal nested name specifier fixit hint to allow lookup of a tag name from an outer enclosing ...
std::pair< ProgramStateRef, ProgramStateRef > ProgramStatePair