clang API Documentation

Public Member Functions | Static Public Member Functions
clang::ento::SymbolManager Class Reference

#include <SymbolManager.h>

List of all members.

Public Member Functions

 SymbolManager (ASTContext &ctx, BasicValueFactory &bv, llvm::BumpPtrAllocator &bpalloc)
 ~SymbolManager ()
const SymbolRegionValue * getRegionValueSymbol (const TypedValueRegion *R)
 Make a unique symbol for MemRegion R according to its kind.
const SymbolConjured * conjureSymbol (const Stmt *E, const LocationContext *LCtx, QualType T, unsigned VisitCount, const void *SymbolTag=nullptr)
const SymbolConjured * conjureSymbol (const Expr *E, const LocationContext *LCtx, unsigned VisitCount, const void *SymbolTag=nullptr)
const SymbolDerived * getDerivedSymbol (SymbolRef parentSymbol, const TypedValueRegion *R)
const SymbolExtent * getExtentSymbol (const SubRegion *R)
const SymbolMetadata * getMetadataSymbol (const MemRegion *R, const Stmt *S, QualType T, unsigned VisitCount, const void *SymbolTag=nullptr)
 Creates a metadata symbol associated with a specific region.
const SymbolCast * getCastSymbol (const SymExpr *Operand, QualType From, QualType To)
const SymIntExpr * getSymIntExpr (const SymExpr *lhs, BinaryOperator::Opcode op, const llvm::APSInt &rhs, QualType t)
const SymIntExpr * getSymIntExpr (const SymExpr &lhs, BinaryOperator::Opcode op, const llvm::APSInt &rhs, QualType t)
const IntSymExpr * getIntSymExpr (const llvm::APSInt &lhs, BinaryOperator::Opcode op, const SymExpr *rhs, QualType t)
const SymSymExpr * getSymSymExpr (const SymExpr *lhs, BinaryOperator::Opcode op, const SymExpr *rhs, QualType t)
QualType getType (const SymExpr *SE) const
void addSymbolDependency (const SymbolRef Primary, const SymbolRef Dependent)
 Add artificial symbol dependency.
const SymbolRefSmallVectorTy * getDependentSymbols (const SymbolRef Primary)
ASTContext & getContext ()
BasicValueFactory & getBasicVals ()

Static Public Member Functions

static bool canSymbolicate (QualType T)

Detailed Description

Definition at line 471 of file SymbolManager.h.


Constructor & Destructor Documentation

clang::ento::SymbolManager::SymbolManager ( ASTContext &  ctx,
BasicValueFactory &  bv,
llvm::BumpPtrAllocator &  bpalloc 
) [inline]

Definition at line 485 of file SymbolManager.h.

Definition at line 328 of file SymbolManager.cpp.


Member Function Documentation

void SymbolManager::addSymbolDependency ( const SymbolRef  Primary,
const SymbolRef  Dependent 
)

Add artificial symbol dependency.

The dependent symbol should stay alive as long as the primary is alive.

Definition at line 347 of file SymbolManager.cpp.

const SymbolConjured * SymbolManager::conjureSymbol ( const Stmt *  E,
const LocationContext *  LCtx,
QualType  T,
unsigned  VisitCount,
const void *  SymbolTag = nullptr 
)
const SymbolConjured* clang::ento::SymbolManager::conjureSymbol ( const Expr *  E,
const LocationContext *  LCtx,
unsigned  VisitCount,
const void *  SymbolTag = nullptr 
) [inline]

Definition at line 503 of file SymbolManager.h.

References conjureSymbol(), and clang::Expr::getType().

Definition at line 553 of file SymbolManager.h.

const SymbolCast * SymbolManager::getCastSymbol ( const SymExpr *  Operand,
QualType  From,
QualType  To 
)

Definition at line 238 of file SymbolManager.cpp.

References data(), and clang::ento::SymExpr::Profile().

Referenced by clang::ento::SValBuilder::makeNonLoc().

Definition at line 552 of file SymbolManager.h.

Referenced by clang::ento::SimpleConstraintManager::assumeAux().

Definition at line 360 of file SymbolManager.cpp.

const SymbolDerived * SymbolManager::getDerivedSymbol ( SymbolRef  parentSymbol,
const TypedValueRegion *  R 
)
const IntSymExpr * SymbolManager::getIntSymExpr ( const llvm::APSInt &  lhs,
BinaryOperator::Opcode  op,
const SymExpr *  rhs,
QualType  t 
)

Definition at line 271 of file SymbolManager.cpp.

References data(), and clang::ento::SymExpr::Profile().

Referenced by clang::ento::SValBuilder::makeNonLoc().

const SymbolMetadata * SymbolManager::getMetadataSymbol ( const MemRegion *  R,
const Stmt *  S,
QualType  T,
unsigned  VisitCount,
const void *  SymbolTag = nullptr 
)

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.

Definition at line 220 of file SymbolManager.cpp.

References clang::ento::SymExpr::Profile().

Referenced by clang::ento::SValBuilder::getMetadataSymbolVal().

Make a unique symbol for MemRegion R according to its kind.

Definition at line 151 of file SymbolManager.cpp.

References clang::ento::SymExpr::Profile().

Referenced by clang::ento::SValBuilder::getRegionValueSymbolVal().

const SymIntExpr * SymbolManager::getSymIntExpr ( const SymExpr *  lhs,
BinaryOperator::Opcode  op,
const llvm::APSInt &  rhs,
QualType  t 
)
const SymIntExpr* clang::ento::SymbolManager::getSymIntExpr ( const SymExpr &  lhs,
BinaryOperator::Opcode  op,
const llvm::APSInt &  rhs,
QualType  t 
) [inline]

Definition at line 529 of file SymbolManager.h.

References getSymIntExpr().

const SymSymExpr * SymbolManager::getSymSymExpr ( const SymExpr *  lhs,
BinaryOperator::Opcode  op,
const SymExpr *  rhs,
QualType  t 
)
QualType clang::ento::SymbolManager::getType ( const SymExpr *  SE) const [inline]

Definition at line 541 of file SymbolManager.h.

References clang::ento::SymExpr::getType().


The documentation for this class was generated from the following files: