class ProgramStateManager
Declaration
class ProgramStateManager { /* full declaration omitted */ };
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:501
Member Variables
- private clang::ento::ExprEngine* Eng
- Eng - The ExprEngine that owns this state manager.
- private clang::ento::EnvironmentManager EnvMgr
- private std::unique_ptr<StoreManager> StoreMgr
- private std::unique_ptr<ConstraintManager> ConstraintMgr
- private ProgramState::GenericDataMap::Factory GDMFactory
- private clang::ento::ProgramStateManager::GDMContextsTy GDMContexts
- private llvm::FoldingSet<ProgramState> StateSet
- StateSet - FoldingSet containing all the states created for analyzing a particular function. This is used to unique states.
- private std::unique_ptr<SValBuilder> svalBuilder
- Object that manages the data for all created SVals.
- private std::unique_ptr<CallEventManager> CallEventMgr
- Manages memory for created CallEvents.
- private llvm::BumpPtrAllocator& Alloc
- A BumpPtrAllocator to allocate states.
- private std::vector<ProgramState*> freeStates
- A vector of ProgramStates that we can reuse.
Method Overview
- public clang::ento::SVal ArrayToPointer(clang::ento::Loc Array, clang::QualType ElementTy)
- public void * FindGDMContext(void * index, void *(*)(llvm::BumpPtrAllocator &) CreateContext, void (*)(void *) DeleteContext)
- public ProgramStateManager(clang::ASTContext & Ctx, clang::ento::StoreManagerCreator CreateStoreManager, clang::ento::ConstraintManagerCreator CreateConstraintManager, llvm::BumpPtrAllocator & alloc, clang::ento::ExprEngine * expreng)
- public template <typename T>clang::ento::ProgramStateRef add(clang::ento::ProgramStateRef st, typename ProgramStateTrait<T>::key_type K, typename ProgramStateTrait<T>::context_type C)
- public clang::ento::ProgramStateRef addGDM(clang::ento::ProgramStateRef St, void * Key, void * Data)
- public llvm::BumpPtrAllocator & getAllocator()
- public clang::ento::BasicValueFactory & getBasicVals()
- public clang::ento::CallEventManager & getCallEventManager()
- public clang::ento::ConstraintManager & getConstraintManager()
- public const clang::ASTContext & getContext() const
- public clang::ASTContext & getContext()
- public clang::ento::ProgramStateRef getInitialState(const clang::LocationContext * InitLoc)
- public clang::ento::ExprEngine & getOwningEngine()
- public clang::ento::ProgramStateRef getPersistentState(clang::ento::ProgramState & Impl)
- public clang::ento::ProgramStateRef getPersistentStateWithGDM(clang::ento::ProgramStateRef FromState, clang::ento::ProgramStateRef GDMState)
- public clang::ento::MemRegionManager & getRegionManager()
- public const clang::ento::MemRegionManager & getRegionManager() const
- public const clang::ento::SValBuilder & getSValBuilder() const
- public clang::ento::SValBuilder & getSValBuilder()
- public clang::ento::StoreManager & getStoreManager()
- public clang::ento::SymbolManager & getSymbolManager()
- public const clang::ento::SymbolManager & getSymbolManager() const
- public template <typename T>typename ProgramStateTrait<T>::context_type get_context()
- public bool haveEqualConstraints(clang::ento::ProgramStateRef S1, clang::ento::ProgramStateRef S2) const
- public bool haveEqualEnvironments(clang::ento::ProgramStateRef S1, clang::ento::ProgramStateRef S2) const
- public bool haveEqualStores(clang::ento::ProgramStateRef S1, clang::ento::ProgramStateRef S2) const
- public void iterBindings(clang::ento::ProgramStateRef state, StoreManager::BindingsHandler & F)
- public template <typename T>clang::ento::ProgramStateRef remove(clang::ento::ProgramStateRef st)
- public template <typename T>clang::ento::ProgramStateRef remove(clang::ento::ProgramStateRef st, typename ProgramStateTrait<T>::key_type K, typename ProgramStateTrait<T>::context_type C)
- public clang::ento::ProgramStateRef removeDeadBindingsFromEnvironmentAndStore(clang::ento::ProgramStateRef St, const clang::StackFrameContext * LCtx, clang::ento::SymbolReaper & SymReaper)
- public clang::ento::ProgramStateRef removeGDM(clang::ento::ProgramStateRef state, void * Key)
- public template <typename T>clang::ento::ProgramStateRef set(clang::ento::ProgramStateRef st, typename ProgramStateTrait<T>::key_type K, typename ProgramStateTrait<T>::value_type V, typename ProgramStateTrait<T>::context_type C)
- public template <typename T>clang::ento::ProgramStateRef set(clang::ento::ProgramStateRef st, typename ProgramStateTrait<T>::data_type D)
- public ~ProgramStateManager()
Methods
¶clang::ento::SVal ArrayToPointer(
clang::ento::Loc Array,
clang::QualType ElementTy)
clang::ento::SVal ArrayToPointer(
clang::ento::Loc Array,
clang::QualType ElementTy)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:588
Parameters
- clang::ento::Loc Array
- clang::QualType ElementTy
¶void* FindGDMContext(
void* index,
void* (*)(llvm::BumpPtrAllocator&)
CreateContext,
void (*)(void*) DeleteContext)
void* FindGDMContext(
void* index,
void* (*)(llvm::BumpPtrAllocator&)
CreateContext,
void (*)(void*) DeleteContext)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:675
Parameters
- void* index
- void* (*)(llvm::BumpPtrAllocator&) CreateContext
- void (*)(void*) DeleteContext
¶ProgramStateManager(
clang::ASTContext& Ctx,
clang::ento::StoreManagerCreator
CreateStoreManager,
clang::ento::ConstraintManagerCreator
CreateConstraintManager,
llvm::BumpPtrAllocator& alloc,
clang::ento::ExprEngine* expreng)
ProgramStateManager(
clang::ASTContext& Ctx,
clang::ento::StoreManagerCreator
CreateStoreManager,
clang::ento::ConstraintManagerCreator
CreateConstraintManager,
llvm::BumpPtrAllocator& alloc,
clang::ento::ExprEngine* expreng)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:534
Parameters
- clang::ASTContext& Ctx
- clang::ento::StoreManagerCreator CreateStoreManager
- clang::ento::ConstraintManagerCreator CreateConstraintManager
- llvm::BumpPtrAllocator& alloc
- clang::ento::ExprEngine* expreng
¶template <typename T>
clang::ento::ProgramStateRef add(
clang::ento::ProgramStateRef st,
typename ProgramStateTrait<T>::key_type K,
typename ProgramStateTrait<T>::context_type C)
template <typename T>
clang::ento::ProgramStateRef add(
clang::ento::ProgramStateRef st,
typename ProgramStateTrait<T>::key_type K,
typename ProgramStateTrait<T>::context_type C)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:654
Templates
- T
Parameters
- clang::ento::ProgramStateRef st
- typename ProgramStateTrait<T>::key_type K
- typename ProgramStateTrait<T>::context_type C
¶clang::ento::ProgramStateRef addGDM(
clang::ento::ProgramStateRef St,
void* Key,
void* Data)
clang::ento::ProgramStateRef addGDM(
clang::ento::ProgramStateRef St,
void* Key,
void* Data)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:593
Parameters
- clang::ento::ProgramStateRef St
- void* Key
- void* Data
¶llvm::BumpPtrAllocator& getAllocator()
llvm::BumpPtrAllocator& getAllocator()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:566
¶clang::ento::BasicValueFactory& getBasicVals()
clang::ento::BasicValueFactory& getBasicVals()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:547
¶clang::ento::CallEventManager&
getCallEventManager()
clang::ento::CallEventManager&
getCallEventManager()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:575
¶clang::ento::ConstraintManager&
getConstraintManager()
clang::ento::ConstraintManager&
getConstraintManager()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:578
¶const clang::ASTContext& getContext() const
const clang::ASTContext& getContext() const
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:545
¶clang::ASTContext& getContext()
clang::ASTContext& getContext()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:544
¶clang::ento::ProgramStateRef getInitialState(
const clang::LocationContext* InitLoc)
clang::ento::ProgramStateRef getInitialState(
const clang::LocationContext* InitLoc)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:542
Parameters
- const clang::LocationContext* InitLoc
¶clang::ento::ExprEngine& getOwningEngine()
clang::ento::ExprEngine& getOwningEngine()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:579
¶clang::ento::ProgramStateRef getPersistentState(
clang::ento::ProgramState& Impl)
clang::ento::ProgramStateRef getPersistentState(
clang::ento::ProgramState& Impl)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:602
Parameters
¶clang::ento::ProgramStateRef
getPersistentStateWithGDM(
clang::ento::ProgramStateRef FromState,
clang::ento::ProgramStateRef GDMState)
clang::ento::ProgramStateRef
getPersistentStateWithGDM(
clang::ento::ProgramStateRef FromState,
clang::ento::ProgramStateRef GDMState)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:603
Parameters
- clang::ento::ProgramStateRef FromState
- clang::ento::ProgramStateRef GDMState
¶clang::ento::MemRegionManager& getRegionManager()
clang::ento::MemRegionManager& getRegionManager()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:568
¶const clang::ento::MemRegionManager&
getRegionManager() const
const clang::ento::MemRegionManager&
getRegionManager() const
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:571
¶const clang::ento::SValBuilder& getSValBuilder()
const
const clang::ento::SValBuilder& getSValBuilder()
const
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:555
¶clang::ento::SValBuilder& getSValBuilder()
clang::ento::SValBuilder& getSValBuilder()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:551
¶clang::ento::StoreManager& getStoreManager()
clang::ento::StoreManager& getStoreManager()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:577
¶clang::ento::SymbolManager& getSymbolManager()
clang::ento::SymbolManager& getSymbolManager()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:559
¶const clang::ento::SymbolManager&
getSymbolManager() const
const clang::ento::SymbolManager&
getSymbolManager() const
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:562
¶template <typename T>
typename ProgramStateTrait<T>::context_type
get_context()
template <typename T>
typename ProgramStateTrait<T>::context_type
get_context()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:680
Templates
- T
¶bool haveEqualConstraints(
clang::ento::ProgramStateRef S1,
clang::ento::ProgramStateRef S2) const
bool haveEqualConstraints(
clang::ento::ProgramStateRef S1,
clang::ento::ProgramStateRef S2) const
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:606
Parameters
¶bool haveEqualEnvironments(
clang::ento::ProgramStateRef S1,
clang::ento::ProgramStateRef S2) const
bool haveEqualEnvironments(
clang::ento::ProgramStateRef S1,
clang::ento::ProgramStateRef S2) const
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:610
Parameters
¶bool haveEqualStores(
clang::ento::ProgramStateRef S1,
clang::ento::ProgramStateRef S2) const
bool haveEqualStores(
clang::ento::ProgramStateRef S1,
clang::ento::ProgramStateRef S2) const
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:614
Parameters
¶void iterBindings(
clang::ento::ProgramStateRef state,
StoreManager::BindingsHandler& F)
void iterBindings(
clang::ento::ProgramStateRef state,
StoreManager::BindingsHandler& F)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:598
Parameters
¶template <typename T>
clang::ento::ProgramStateRef remove(
clang::ento::ProgramStateRef st)
template <typename T>
clang::ento::ProgramStateRef remove(
clang::ento::ProgramStateRef st)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:671
Templates
- T
Parameters
¶template <typename T>
clang::ento::ProgramStateRef remove(
clang::ento::ProgramStateRef st,
typename ProgramStateTrait<T>::key_type K,
typename ProgramStateTrait<T>::context_type C)
template <typename T>
clang::ento::ProgramStateRef remove(
clang::ento::ProgramStateRef st,
typename ProgramStateTrait<T>::key_type K,
typename ProgramStateTrait<T>::context_type C)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:662
Templates
- T
Parameters
- clang::ento::ProgramStateRef st
- typename ProgramStateTrait<T>::key_type K
- typename ProgramStateTrait<T>::context_type C
¶clang::ento::ProgramStateRef
removeDeadBindingsFromEnvironmentAndStore(
clang::ento::ProgramStateRef St,
const clang::StackFrameContext* LCtx,
clang::ento::SymbolReaper& SymReaper)
clang::ento::ProgramStateRef
removeDeadBindingsFromEnvironmentAndStore(
clang::ento::ProgramStateRef St,
const clang::StackFrameContext* LCtx,
clang::ento::SymbolReaper& SymReaper)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:582
Parameters
- clang::ento::ProgramStateRef St
- const clang::StackFrameContext* LCtx
- clang::ento::SymbolReaper& SymReaper
¶clang::ento::ProgramStateRef removeGDM(
clang::ento::ProgramStateRef state,
void* Key)
clang::ento::ProgramStateRef removeGDM(
clang::ento::ProgramStateRef state,
void* Key)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:594
Parameters
- clang::ento::ProgramStateRef state
- void* Key
¶template <typename T>
clang::ento::ProgramStateRef set(
clang::ento::ProgramStateRef st,
typename ProgramStateTrait<T>::key_type K,
typename ProgramStateTrait<T>::value_type V,
typename ProgramStateTrait<T>::context_type C)
template <typename T>
clang::ento::ProgramStateRef set(
clang::ento::ProgramStateRef st,
typename ProgramStateTrait<T>::key_type K,
typename ProgramStateTrait<T>::value_type V,
typename ProgramStateTrait<T>::context_type C)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:644
Templates
- T
Parameters
- clang::ento::ProgramStateRef st
- typename ProgramStateTrait<T>::key_type K
- typename ProgramStateTrait<T>::value_type V
- typename ProgramStateTrait<T>::context_type C
¶template <typename T>
clang::ento::ProgramStateRef set(
clang::ento::ProgramStateRef st,
typename ProgramStateTrait<T>::data_type D)
template <typename T>
clang::ento::ProgramStateRef set(
clang::ento::ProgramStateRef st,
typename ProgramStateTrait<T>::data_type D)
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:638
Templates
- T
Parameters
- clang::ento::ProgramStateRef st
- typename ProgramStateTrait<T>::data_type D
¶~ProgramStateManager()
~ProgramStateManager()
Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:540