14 #ifndef LLVM_CLANG_LIB_STATICANALYZER_CORE_RANGEDCONSTRAINTMANAGER_H 15 #define LLVM_CLANG_LIB_STATICANALYZER_CORE_RANGEDCONSTRAINTMANAGER_H 36 bool Assumption)
override;
39 const llvm::APSInt &From,
40 const llvm::APSInt &To,
41 bool InRange)
override;
44 bool Assumption)
override;
50 const llvm::APSInt &Int);
60 const llvm::APSInt &V,
61 const llvm::APSInt &Adjustment) = 0;
64 const llvm::APSInt &V,
65 const llvm::APSInt &Adjustment) = 0;
68 const llvm::APSInt &V,
69 const llvm::APSInt &Adjustment) = 0;
72 const llvm::APSInt &V,
73 const llvm::APSInt &Adjustment) = 0;
76 const llvm::APSInt &V,
77 const llvm::APSInt &Adjustment) = 0;
80 const llvm::APSInt &V,
81 const llvm::APSInt &Adjustment) = 0;
85 const llvm::APSInt &To,
const llvm::APSInt &Adjustment) = 0;
89 const llvm::APSInt &To,
const llvm::APSInt &Adjustment) = 0;
95 static void computeAdjustment(
SymbolRef &Sym, llvm::APSInt &Adjustment);
ProgramStateRef assumeSym(ProgramStateRef State, SymbolRef Sym, bool Assumption) override
Given a symbolic expression that can be reasoned about, assume that it is true/false and generate the...
virtual ProgramStateRef assumeSymEQ(ProgramStateRef State, SymbolRef Sym, const llvm::APSInt &V, const llvm::APSInt &Adjustment)=0
virtual ProgramStateRef assumeSymLE(ProgramStateRef State, SymbolRef Sym, const llvm::APSInt &V, const llvm::APSInt &Adjustment)=0
virtual ProgramStateRef assumeSymLT(ProgramStateRef State, SymbolRef Sym, const llvm::APSInt &V, const llvm::APSInt &Adjustment)=0
ProgramStateRef assumeSymUnsupported(ProgramStateRef State, SymbolRef Sym, bool Assumption) override
Given a symbolic expression that cannot be reasoned about, assume that it is zero/nonzero and add it ...
virtual ProgramStateRef assumeSymRel(ProgramStateRef State, SymbolRef Sym, BinaryOperator::Opcode op, const llvm::APSInt &Int)
Assume a constraint between a symbolic expression and a concrete integer.
virtual ProgramStateRef assumeSymOutsideInclusiveRange(ProgramStateRef State, SymbolRef Sym, const llvm::APSInt &From, const llvm::APSInt &To, const llvm::APSInt &Adjustment)=0
Dataflow Directional Tag Classes.
virtual ProgramStateRef assumeSymGT(ProgramStateRef State, SymbolRef Sym, const llvm::APSInt &V, const llvm::APSInt &Adjustment)=0
~RangedConstraintManager() override
virtual ProgramStateRef assumeSymNE(ProgramStateRef State, SymbolRef Sym, const llvm::APSInt &V, const llvm::APSInt &Adjustment)=0
ProgramStateRef assumeSymInclusiveRange(ProgramStateRef State, SymbolRef Sym, const llvm::APSInt &From, const llvm::APSInt &To, bool InRange) override
Given a symbolic expression within the range [From, To], assume that it is true/false and generate th...
virtual ProgramStateRef assumeSymWithinInclusiveRange(ProgramStateRef State, SymbolRef Sym, const llvm::APSInt &From, const llvm::APSInt &To, const llvm::APSInt &Adjustment)=0
RangedConstraintManager(SubEngine *SE, SValBuilder &SB)
virtual ProgramStateRef assumeSymGE(ProgramStateRef State, SymbolRef Sym, const llvm::APSInt &V, const llvm::APSInt &Adjustment)=0