13#ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SYMEXPR_H
14#define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_SYMEXPR_H
18#include "llvm/ADT/FoldingSet.h"
19#include "llvm/ADT/SmallVector.h"
20#include "llvm/ADT/iterator_range.h"
30class SymExpr :
public llvm::FoldingSetNode {
31 virtual void anchor();
35#define SYMBOL(Id, Parent) Id##Kind,
36#define SYMBOL_RANGE(Id, First, Last) BEGIN_##Id = First, END_##Id = Last,
37#include "clang/StaticAnalyzer/Core/PathSensitive/Symbols.def"
59 virtual void dump()
const;
64 virtual void Profile(llvm::FoldingSetNodeID &profile) = 0;
87 llvm::iterator_range<symbol_iterator>
symbols()
const {
122 void anchor()
override;
144 return k >= BEGIN_SYMBOLS && k <= END_SYMBOLS;
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.
C Language Family Type Representation.
A (possibly-)qualified type.
MemRegion - The root abstract class for all memory regions.
Iterator over symbols that the current symbol depends on.
symbol_iterator()=default
bool operator!=(const symbol_iterator &X) const
symbol_iterator & operator++()
bool operator==(const symbol_iterator &X) const
const SymExpr * operator*()
virtual void dumpToStream(raw_ostream &os) const
static bool isValidTypeForSymbol(QualType T)
virtual void Profile(llvm::FoldingSetNodeID &profile)=0
virtual const MemRegion * getOriginRegion() const
Find the region from which this symbol originates.
llvm::iterator_range< symbol_iterator > symbols() const
virtual QualType getType() const =0
virtual unsigned computeComplexity() const =0
virtual ~SymExpr()=default
virtual void dump() const
A symbol representing data which can be stored in a memory location (region).
SymbolID getSymbolID() const
virtual StringRef getKindStr() const =0
Get a string representation of the kind of the region.
unsigned computeComplexity() const override
~SymbolData() override=default
static bool classof(const SymExpr *SE)
SymbolData(Kind k, SymbolID sym)
raw_ostream & operator<<(raw_ostream &Out, const CheckerBase &Checker)
Dump checker name to stream.
The JSON file list parser is used to communicate input to InstallAPI.
const FunctionProtoType * T