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)

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)

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)

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)

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)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:593

Parameters

clang::ento::ProgramStateRef St
void* Key
void* Data

llvm::BumpPtrAllocator& getAllocator()

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:566

clang::ento::BasicValueFactory& getBasicVals()

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:547

clang::ento::CallEventManager&
getCallEventManager()

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:575

clang::ento::ConstraintManager&
getConstraintManager()

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:578

const clang::ASTContext& getContext() const

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:545

clang::ASTContext& getContext()

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:544

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()

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:579

clang::ento::ProgramStateRef getPersistentState(
    clang::ento::ProgramState& Impl)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:602

Parameters

clang::ento::ProgramState& Impl

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()

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:568

const clang::ento::MemRegionManager&
getRegionManager() const

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:571

const clang::ento::SValBuilder& getSValBuilder()
    const

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:555

clang::ento::SValBuilder& getSValBuilder()

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:551

clang::ento::StoreManager& getStoreManager()

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:577

clang::ento::SymbolManager& getSymbolManager()

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:559

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()

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:680

Templates

T

bool haveEqualConstraints(
    clang::ento::ProgramStateRef S1,
    clang::ento::ProgramStateRef S2) const

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:606

Parameters

clang::ento::ProgramStateRef S1
clang::ento::ProgramStateRef S2

bool haveEqualEnvironments(
    clang::ento::ProgramStateRef S1,
    clang::ento::ProgramStateRef S2) const

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:610

Parameters

clang::ento::ProgramStateRef S1
clang::ento::ProgramStateRef S2

bool haveEqualStores(
    clang::ento::ProgramStateRef S1,
    clang::ento::ProgramStateRef S2) const

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:614

Parameters

clang::ento::ProgramStateRef S1
clang::ento::ProgramStateRef S2

void iterBindings(
    clang::ento::ProgramStateRef state,
    StoreManager::BindingsHandler& F)

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:598

Parameters

clang::ento::ProgramStateRef state
StoreManager::BindingsHandler& F

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

clang::ento::ProgramStateRef st

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)

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)

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)

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)

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()

Declared at: clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h:540