class SymbolManager
Declaration
class SymbolManager { /* full declaration omitted */ };
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:481
Member Variables
- private clang::ento::SymbolManager::DataSetTy DataSet
- private clang::ento::SymbolManager::SymbolDependTy SymbolDependencies
- Stores the extra dependencies between symbols: the data should be kept alive as long as the key is live.
- private unsigned int SymbolCounter = 0
- private llvm::BumpPtrAllocator& BPAlloc
- private clang::ento::BasicValueFactory& BV
- private clang::ASTContext& Ctx
Method Overview
- public SymbolManager(clang::ASTContext & ctx, clang::ento::BasicValueFactory & bv, llvm::BumpPtrAllocator & bpalloc)
- public void addSymbolDependency(const clang::ento::SymbolRef Primary, const clang::ento::SymbolRef Dependent)
- public static bool canSymbolicate(clang::QualType T)
- public const clang::ento::SymbolConjured * conjureSymbol(const clang::Stmt * E, const clang::LocationContext * LCtx, clang::QualType T, unsigned int VisitCount, const void * SymbolTag = nullptr)
- public const clang::ento::SymbolConjured * conjureSymbol(const clang::Expr * E, const clang::LocationContext * LCtx, unsigned int VisitCount, const void * SymbolTag = nullptr)
- public clang::ento::BasicValueFactory & getBasicVals()
- public const clang::ento::SymbolCast * getCastSymbol(const clang::ento::SymExpr * Operand, clang::QualType From, clang::QualType To)
- public clang::ASTContext & getContext()
- public const clang::ento::SymbolRefSmallVectorTy * getDependentSymbols(const clang::ento::SymbolRef Primary)
- public const clang::ento::SymbolDerived * getDerivedSymbol(clang::ento::SymbolRef parentSymbol, const clang::ento::TypedValueRegion * R)
- public const clang::ento::SymbolExtent * getExtentSymbol(const clang::ento::SubRegion * R)
- public const clang::ento::IntSymExpr * getIntSymExpr(const llvm::APSInt & lhs, BinaryOperator::Opcode op, const clang::ento::SymExpr * rhs, clang::QualType t)
- public const clang::ento::SymbolMetadata * getMetadataSymbol(const clang::ento::MemRegion * R, const clang::Stmt * S, clang::QualType T, const clang::LocationContext * LCtx, unsigned int VisitCount, const void * SymbolTag = nullptr)
- public const clang::ento::SymbolRegionValue * getRegionValueSymbol(const clang::ento::TypedValueRegion * R)
- public const clang::ento::SymIntExpr * getSymIntExpr(const clang::ento::SymExpr * lhs, BinaryOperator::Opcode op, const llvm::APSInt & rhs, clang::QualType t)
- public const clang::ento::SymIntExpr * getSymIntExpr(const clang::ento::SymExpr & lhs, BinaryOperator::Opcode op, const llvm::APSInt & rhs, clang::QualType t)
- public const clang::ento::SymSymExpr * getSymSymExpr(const clang::ento::SymExpr * lhs, BinaryOperator::Opcode op, const clang::ento::SymExpr * rhs, clang::QualType t)
- public clang::QualType getType(const clang::ento::SymExpr * SE) const
- public const clang::ento::UnarySymExpr * getUnarySymExpr(const clang::ento::SymExpr * operand, UnaryOperator::Opcode op, clang::QualType t)
Methods
¶SymbolManager(clang::ASTContext& ctx,
clang::ento::BasicValueFactory& bv,
llvm::BumpPtrAllocator& bpalloc)
SymbolManager(clang::ASTContext& ctx,
clang::ento::BasicValueFactory& bv,
llvm::BumpPtrAllocator& bpalloc)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:498
Parameters
- clang::ASTContext& ctx
- clang::ento::BasicValueFactory& bv
- llvm::BumpPtrAllocator& bpalloc
¶void addSymbolDependency(
const clang::ento::SymbolRef Primary,
const clang::ento::SymbolRef Dependent)
void addSymbolDependency(
const clang::ento::SymbolRef Primary,
const clang::ento::SymbolRef Dependent)
Description
Add artificial symbol dependency. The dependent symbol should stay alive as long as the primary is alive.
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:563
Parameters
- const clang::ento::SymbolRef Primary
- const clang::ento::SymbolRef Dependent
¶static bool canSymbolicate(clang::QualType T)
static bool canSymbolicate(clang::QualType T)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:502
Parameters
¶const clang::ento::SymbolConjured* conjureSymbol(
const clang::Stmt* E,
const clang::LocationContext* LCtx,
clang::QualType T,
unsigned int VisitCount,
const void* SymbolTag = nullptr)
const clang::ento::SymbolConjured* conjureSymbol(
const clang::Stmt* E,
const clang::LocationContext* LCtx,
clang::QualType T,
unsigned int VisitCount,
const void* SymbolTag = nullptr)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:507
Parameters
- const clang::Stmt* E
- const clang::LocationContext* LCtx
- clang::QualType T
- unsigned int VisitCount
- const void* SymbolTag = nullptr
¶const clang::ento::SymbolConjured* conjureSymbol(
const clang::Expr* E,
const clang::LocationContext* LCtx,
unsigned int VisitCount,
const void* SymbolTag = nullptr)
const clang::ento::SymbolConjured* conjureSymbol(
const clang::Expr* E,
const clang::LocationContext* LCtx,
unsigned int VisitCount,
const void* SymbolTag = nullptr)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:513
Parameters
- const clang::Expr* E
- const clang::LocationContext* LCtx
- unsigned int VisitCount
- const void* SymbolTag = nullptr
¶clang::ento::BasicValueFactory& getBasicVals()
clang::ento::BasicValueFactory& getBasicVals()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:568
¶const clang::ento::SymbolCast* getCastSymbol(
const clang::ento::SymExpr* Operand,
clang::QualType From,
clang::QualType To)
const clang::ento::SymbolCast* getCastSymbol(
const clang::ento::SymExpr* Operand,
clang::QualType From,
clang::QualType To)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:535
Parameters
- const clang::ento::SymExpr* Operand
- clang::QualType From
- clang::QualType To
¶clang::ASTContext& getContext()
clang::ASTContext& getContext()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:567
¶const clang::ento::SymbolRefSmallVectorTy*
getDependentSymbols(
const clang::ento::SymbolRef Primary)
const clang::ento::SymbolRefSmallVectorTy*
getDependentSymbols(
const clang::ento::SymbolRef Primary)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:565
Parameters
- const clang::ento::SymbolRef Primary
¶const clang::ento::SymbolDerived*
getDerivedSymbol(
clang::ento::SymbolRef parentSymbol,
const clang::ento::TypedValueRegion* R)
const clang::ento::SymbolDerived*
getDerivedSymbol(
clang::ento::SymbolRef parentSymbol,
const clang::ento::TypedValueRegion* R)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:520
Parameters
- clang::ento::SymbolRef parentSymbol
- const clang::ento::TypedValueRegion* R
¶const clang::ento::SymbolExtent* getExtentSymbol(
const clang::ento::SubRegion* R)
const clang::ento::SymbolExtent* getExtentSymbol(
const clang::ento::SubRegion* R)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:523
Parameters
- const clang::ento::SubRegion* R
¶const clang::ento::IntSymExpr* getIntSymExpr(
const llvm::APSInt& lhs,
BinaryOperator::Opcode op,
const clang::ento::SymExpr* rhs,
clang::QualType t)
const clang::ento::IntSymExpr* getIntSymExpr(
const llvm::APSInt& lhs,
BinaryOperator::Opcode op,
const clang::ento::SymExpr* rhs,
clang::QualType t)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:546
Parameters
- const llvm::APSInt& lhs
- BinaryOperator::Opcode op
- const clang::ento::SymExpr* rhs
- clang::QualType t
¶const clang::ento::SymbolMetadata*
getMetadataSymbol(
const clang::ento::MemRegion* R,
const clang::Stmt* S,
clang::QualType T,
const clang::LocationContext* LCtx,
unsigned int VisitCount,
const void* SymbolTag = nullptr)
const clang::ento::SymbolMetadata*
getMetadataSymbol(
const clang::ento::MemRegion* R,
const clang::Stmt* S,
clang::QualType T,
const clang::LocationContext* LCtx,
unsigned int VisitCount,
const void* SymbolTag = nullptr)
Description
Creates a metadata symbol associated with a specific region. VisitCount can be used to differentiate regions corresponding to different loop iterations, thus, making the symbol path-dependent.
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:529
Parameters
- const clang::ento::MemRegion* R
- const clang::Stmt* S
- clang::QualType T
- const clang::LocationContext* LCtx
- unsigned int VisitCount
- const void* SymbolTag = nullptr
¶const clang::ento::SymbolRegionValue*
getRegionValueSymbol(
const clang::ento::TypedValueRegion* R)
const clang::ento::SymbolRegionValue*
getRegionValueSymbol(
const clang::ento::TypedValueRegion* R)
Description
Make a unique symbol for MemRegion R according to its kind.
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:505
Parameters
- const clang::ento::TypedValueRegion* R
¶const clang::ento::SymIntExpr* getSymIntExpr(
const clang::ento::SymExpr* lhs,
BinaryOperator::Opcode op,
const llvm::APSInt& rhs,
clang::QualType t)
const clang::ento::SymIntExpr* getSymIntExpr(
const clang::ento::SymExpr* lhs,
BinaryOperator::Opcode op,
const llvm::APSInt& rhs,
clang::QualType t)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:538
Parameters
- const clang::ento::SymExpr* lhs
- BinaryOperator::Opcode op
- const llvm::APSInt& rhs
- clang::QualType t
¶const clang::ento::SymIntExpr* getSymIntExpr(
const clang::ento::SymExpr& lhs,
BinaryOperator::Opcode op,
const llvm::APSInt& rhs,
clang::QualType t)
const clang::ento::SymIntExpr* getSymIntExpr(
const clang::ento::SymExpr& lhs,
BinaryOperator::Opcode op,
const llvm::APSInt& rhs,
clang::QualType t)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:541
Parameters
- const clang::ento::SymExpr& lhs
- BinaryOperator::Opcode op
- const llvm::APSInt& rhs
- clang::QualType t
¶const clang::ento::SymSymExpr* getSymSymExpr(
const clang::ento::SymExpr* lhs,
BinaryOperator::Opcode op,
const clang::ento::SymExpr* rhs,
clang::QualType t)
const clang::ento::SymSymExpr* getSymSymExpr(
const clang::ento::SymExpr* lhs,
BinaryOperator::Opcode op,
const clang::ento::SymExpr* rhs,
clang::QualType t)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:550
Parameters
- const clang::ento::SymExpr* lhs
- BinaryOperator::Opcode op
- const clang::ento::SymExpr* rhs
- clang::QualType t
¶clang::QualType getType(
const clang::ento::SymExpr* SE) const
clang::QualType getType(
const clang::ento::SymExpr* SE) const
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:556
Parameters
- const clang::ento::SymExpr* SE
¶const clang::ento::UnarySymExpr* getUnarySymExpr(
const clang::ento::SymExpr* operand,
UnaryOperator::Opcode op,
clang::QualType t)
const clang::ento::UnarySymExpr* getUnarySymExpr(
const clang::ento::SymExpr* operand,
UnaryOperator::Opcode op,
clang::QualType t)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h:553
Parameters
- const clang::ento::SymExpr* operand
- UnaryOperator::Opcode op
- clang::QualType t