clang
3.7.0
|
#include <SymbolManager.h>
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. More... | |
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. More... | |
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. More... | |
const SymbolRefSmallVectorTy * | getDependentSymbols (const SymbolRef Primary) |
ASTContext & | getContext () |
BasicValueFactory & | getBasicVals () |
Static Public Member Functions | |
static bool | canSymbolicate (QualType T) |
Definition at line 471 of file SymbolManager.h.
|
inline |
Definition at line 485 of file SymbolManager.h.
SymbolManager::~SymbolManager | ( | ) |
Definition at line 328 of file SymbolManager.cpp.
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.
Definition at line 332 of file SymbolManager.cpp.
References clang::QualType::getCanonicalType(), clang::Type::isIntegralOrEnumerationType(), clang::ento::Loc::isLocType(), clang::Type::isRecordType(), and clang::Type::isUnionType().
Referenced by clang::ento::SValBuilder::conjureSymbolVal(), clang::ento::SValBuilder::getConjuredHeapSymbolVal(), clang::ento::SValBuilder::getDerivedRegionValueSymbolVal(), clang::ento::SValBuilder::getMetadataSymbolVal(), and clang::ento::SValBuilder::getRegionValueSymbolVal().
const SymbolConjured * SymbolManager::conjureSymbol | ( | const Stmt * | E, |
const LocationContext * | LCtx, | ||
QualType | T, | ||
unsigned | VisitCount, | ||
const void * | SymbolTag = nullptr |
||
) |
Definition at line 166 of file SymbolManager.cpp.
References clang::ento::SymbolConjured::Profile().
Referenced by clang::ento::SValBuilder::conjureSymbol(), conjureSymbol(), clang::ento::SValBuilder::conjureSymbolVal(), clang::ento::SValBuilder::getConjuredHeapSymbolVal(), and clang::ento::ExprEngine::VisitObjCForCollectionStmt().
|
inline |
Definition at line 503 of file SymbolManager.h.
References conjureSymbol(), and clang::Expr::getType().
|
inline |
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 clang::ento::SymbolCast::Profile().
Referenced by clang::ento::SValBuilder::makeNonLoc().
|
inline |
Definition at line 552 of file SymbolManager.h.
Referenced by clang::ento::SimpleConstraintManager::assumeAux().
const SymbolRefSmallVectorTy * SymbolManager::getDependentSymbols | ( | const SymbolRef | Primary | ) |
Definition at line 360 of file SymbolManager.cpp.
const SymbolDerived * SymbolManager::getDerivedSymbol | ( | SymbolRef | parentSymbol, |
const TypedValueRegion * | R | ||
) |
Definition at line 186 of file SymbolManager.cpp.
References clang::ento::SymbolDerived::Profile().
Referenced by clang::ento::SValBuilder::getDerivedRegionValueSymbolVal().
const SymbolExtent * SymbolManager::getExtentSymbol | ( | const SubRegion * | R | ) |
Definition at line 204 of file SymbolManager.cpp.
References clang::ento::SymbolExtent::Profile().
Referenced by clang::ento::AllocaRegion::getExtent(), clang::ento::TypedValueRegion::getExtent(), and clang::ento::SymbolicRegion::getExtent().
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 clang::ento::IntSymExpr::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::SymbolMetadata::Profile().
Referenced by clang::ento::SValBuilder::getMetadataSymbolVal().
const SymbolRegionValue * SymbolManager::getRegionValueSymbol | ( | const TypedValueRegion * | R | ) |
Make a unique symbol for MemRegion R according to its kind.
Definition at line 151 of file SymbolManager.cpp.
References clang::ento::SymbolRegionValue::Profile().
Referenced by clang::ento::SValBuilder::getRegionValueSymbolVal().
const SymIntExpr * SymbolManager::getSymIntExpr | ( | const SymExpr * | lhs, |
BinaryOperator::Opcode | op, | ||
const llvm::APSInt & | rhs, | ||
QualType | t | ||
) |
Definition at line 253 of file SymbolManager.cpp.
References clang::ento::SymIntExpr::Profile().
Referenced by getSymIntExpr(), and clang::ento::SValBuilder::makeNonLoc().
|
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 | ||
) |
Definition at line 289 of file SymbolManager.cpp.
References clang::ento::SymSymExpr::Profile().
Referenced by clang::ento::SimpleConstraintManager::assumeAux(), and clang::ento::SValBuilder::makeNonLoc().
Definition at line 541 of file SymbolManager.h.
References clang::ento::SymExpr::getType().