clang 20.0.0git
|
#include "clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h"
Public Member Functions | |
SymbolManager (ASTContext &ctx, BasicValueFactory &bv, llvm::BumpPtrAllocator &bpalloc) | |
template<typename SymExprT , typename... Args> | |
const SymExprT * | acquire (Args &&...args) |
Create or retrieve a SymExpr of type SymExprT for the given arguments. | |
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) |
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 () |
template<typename T , typename... Args> | |
const T * | acquire (Args &&...args) |
Static Public Member Functions | |
static bool | canSymbolicate (QualType T) |
Definition at line 508 of file SymbolManager.h.
|
inline |
Definition at line 524 of file SymbolManager.h.
const SymExprT * clang::ento::SymbolManager::acquire | ( | Args &&... | args | ) |
Create or retrieve a SymExpr of type SymExprT
for the given arguments.
Use the arguments to check for an existing SymExpr and return it, otherwise, create a new one and keep a pointer to it to avoid duplicates.
Referenced by clang::ento::RangedConstraintManager::assumeSym(), doRearrangeUnchecked(), clang::ento::SValBuilder::getDerivedRegionValueSymbolVal(), clang::ento::SValBuilder::getMetadataSymbolVal(), clang::ento::SValBuilder::getRegionValueSymbolVal(), clang::ento::MemRegionManager::getStaticSize(), and clang::ento::SValBuilder::makeNonLoc().
const T * clang::ento::SymbolManager::acquire | ( | Args &&... | args | ) |
Definition at line 682 of file SymbolManager.h.
References clang::ento::SymExprAllocator::make(), and clang::T.
Add artificial symbol dependency.
The dependent symbol should stay alive as long as the primary is alive.
Definition at line 202 of file SymbolManager.cpp.
References clang::Dependent.
Definition at line 187 of file SymbolManager.cpp.
References clang::Type::isIntegralOrEnumerationType(), clang::ento::Loc::isLocType(), clang::Type::isRecordType(), clang::Type::isUnionType(), and clang::T.
Referenced by clang::ento::SValBuilder::conjureSymbolVal(), clang::ento::SValBuilder::getConjuredHeapSymbolVal(), clang::ento::SValBuilder::getDerivedRegionValueSymbolVal(), clang::ento::SValBuilder::getMetadataSymbolVal(), and clang::ento::SValBuilder::getRegionValueSymbolVal().
|
inline |
Definition at line 543 of file SymbolManager.h.
References conjureSymbol(), E, and VisitCount.
|
inline |
Definition at line 536 of file SymbolManager.h.
References E, clang::T, and VisitCount.
Referenced by conjureSymbol(), clang::ento::SValBuilder::conjureSymbol(), clang::ento::SValBuilder::conjureSymbolVal(), clang::ento::SValBuilder::getConjuredHeapSymbolVal(), and populateObjCForDestinationSet().
|
inline |
Definition at line 562 of file SymbolManager.h.
|
inline |
Definition at line 561 of file SymbolManager.h.
Referenced by clang::ento::RangedConstraintManager::assumeSym().
const SymbolRefSmallVectorTy * SymbolManager::getDependentSymbols | ( | const SymbolRef | Primary | ) |
Definition at line 211 of file SymbolManager.cpp.
Definition at line 550 of file SymbolManager.h.
References clang::ento::SymExpr::getType().