#include "clang/Basic/JsonSupport.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/RangedConstraintManager.h"
#include "clang/StaticAnalyzer/Core/PathSensitive/SValVisitor.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/ImmutableSet.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <iterator>
#include <optional>
#include "clang/StaticAnalyzer/Core/PathSensitive/Symbols.def"
Go to the source code of this file.
◆ ABSTRACT_SYMBOL
#define ABSTRACT_SYMBOL |
( |
| Id, |
|
|
| Parent ) |
◆ ASSIGN
#define ASSIGN |
( |
| CLASS, |
|
|
| TO, |
|
|
| SYM, |
|
|
| CONSTRAINT ) |
Value: if (!static_cast<Derived *>(this)->assign##CLASS##To##TO(SYM, CONSTRAINT)) \
return false
Definition at line 2004 of file RangeConstraintManager.cpp.
◆ CONSTRAINT_DISPATCH
#define CONSTRAINT_DISPATCH |
( |
| Id | ) |
|
Value: if (const llvm::APSInt *Const = Constraint.getConcreteValue()) { \
ASSIGN(Id, Const, Sym, *Const); \
} \
if (Constraint.size() == 1) { \
ASSIGN(Id,
Range, Sym, *Constraint.begin()); \
} \
ASSIGN(Id, RangeSet, Sym, Constraint)
A Range represents the closed range [from, to].
Definition at line 2033 of file RangeConstraintManager.cpp.
◆ DEFAULT_ASSIGN
#define DEFAULT_ASSIGN |
( |
| Id | ) |
|
Value:
return true; \
} \
bool assign##Id##To##
Range(
const Id *Sym,
Range Constraint) {
return true; } \
bool assign##Id##To##
Const(
const Id *Sym, Const Constraint) {
return true; }
persistent set of non-overlapping ranges.
bool Const(InterpState &S, CodePtr OpPC, const T &Arg)
Definition at line 2022 of file RangeConstraintManager.cpp.
◆ DISPATCH
#define DISPATCH |
( |
| CLASS | ) |
|
◆ SYMBOL [1/2]
#define SYMBOL |
( |
| Id, |
|
|
| Parent ) |
◆ SYMBOL [2/2]
#define SYMBOL |
( |
| Id, |
|
|
| Parent ) |
Value: bool assign##Id##Impl(
const Id *Sym,
RangeSet Constraint) { \
CONSTRAINT_DISPATCH(Id); \
DISPATCH(Parent); \
} \
DEFAULT_ASSIGN(Id)
Definition at line 2045 of file RangeConstraintManager.cpp.
◆ reAssume()
◆ swapIterators()
template<typename T>
void swapIterators |
( |
T & | First, |
|
|
T & | FirstEnd, |
|
|
T & | Second, |
|
|
T & | SecondEnd ) |
|
static |
◆ toString() [1/2]
std::string toString |
( |
const SymbolRef & | Sym | ) |
|
|
static |
◆ toString() [2/2]