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.");
99 return ProgramStatePair(StTrue, StFalse);
104 const llvm::APSInt &From,
105 const llvm::APSInt &To,
110 const llvm::APSInt &From,
111 const llvm::APSInt &To) {
113 assumeInclusiveRange(State, Value, From, To,
true);
121 assumeInclusiveRange(State, Value, From, To,
false);
129 return ProgramStatePair(StInRange, StOutOfRange);
150 const char *sep) = 0;
159 return checkNull(State, Sym);
176 virtual bool canReasonAbout(
SVal X)
const = 0;
183 std::unique_ptr<ConstraintManager>
187 std::unique_ptr<ConstraintManager>
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...
DominatorTree GraphTraits specialization so the DominatorTree can be iterable by generic graph iterat...
std::unique_ptr< ConstraintManager > CreateRangeConstraintManager(ProgramStateManager &statemgr, SubEngine *subengine)
virtual void EndPath(ProgramStateRef state)
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
bool NotifyAssumeClients
A flag to indicate that clients should be notified of assumptions.
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...
std::pair< ProgramStateRef, ProgramStateRef > ProgramStatePair
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...
ConditionTruthVal()
Construct a ConstraintVal indicating the constraint is underconstrained.
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 ...