14 #ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SYMEXPR_H 15 #define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SYMEXPR_H 18 #include "llvm/ADT/FoldingSet.h" 19 #include "llvm/ADT/SmallVector.h" 20 #include "llvm/Support/raw_ostream.h" 29 class SymExpr :
public llvm::FoldingSetNode {
30 virtual void anchor();
34 #define SYMBOL(Id, Parent) Id##Kind, 35 #define SYMBOL_RANGE(Id, First, Last) BEGIN_##Id = First, END_##Id = Last, 36 #include "clang/StaticAnalyzer/Core/PathSensitive/Symbols.def" 56 virtual void dump()
const;
61 virtual void Profile(llvm::FoldingSetNodeID &profile) = 0;
114 void anchor()
override;
130 return k >= BEGIN_SYMBOLS && k <= END_SYMBOLS;
SmallVector< SymbolRef, 2 > SymbolRefSmallVectorTy
A (possibly-)qualified type.
MemRegion - The root abstract class for all memory regions.
const SymExpr * SymbolRef
C Language Family Type Representation.
symbol_iterator & operator++()
bool operator!=(const symbol_iterator &X) const
virtual void dump() const
virtual const MemRegion * getOriginRegion() const
Find the region from which this symbol originates.
symbol_iterator symbol_begin() const
virtual void dumpToStream(raw_ostream &os) const
virtual QualType getType() const =0
SymbolID getSymbolID() const
const FunctionProtoType * T
static bool classof(const SymExpr *SE)
bool isNull() const
Return true if this QualType doesn't point to a type yet.
virtual void Profile(llvm::FoldingSetNodeID &profile)=0
static bool isValidTypeForSymbol(QualType T)
Dataflow Directional Tag Classes.
raw_ostream & operator<<(raw_ostream &Out, const CheckerBase &Checker)
Dump checker name to stream.
static symbol_iterator symbol_end()
SymbolData(Kind k, SymbolID sym)
unsigned computeComplexity() const
static bool classof(const OMPClause *T)
X
Add a minimal nested name specifier fixit hint to allow lookup of a tag name from an outer enclosing ...
bool operator==(const symbol_iterator &X) const
const SymExpr * operator*()
A symbol representing data which can be stored in a memory location (region).
Iterator over symbols that the current symbol depends on.