|
clang 23.0.0git
|
ProgramState - This class encapsulates: More...
#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h"
Public Types | |
| typedef llvm::ImmutableMap< const void *, void * > | GenericDataMap |
| using | region_iterator = const MemRegion ** |
Public Member Functions | |
| ProgramState (ProgramStateManager *mgr, const Environment &env, StoreRef st, GenericDataMap gdm) | |
| This ctor is used when creating the first ProgramState object. | |
| ProgramState (const ProgramState &RHS) | |
| Copy ctor - We must explicitly define this or else the "Next" ptr in FoldingSetNode will also get copied. | |
| ~ProgramState () | |
| int64_t | getID () const |
| ProgramStateManager & | getStateManager () const |
| Return the ProgramStateManager associated with this state. | |
| AnalysisManager & | getAnalysisManager () const |
| ConstraintManager & | getConstraintManager () const |
| Return the ConstraintManager. | |
| const Environment & | getEnvironment () const |
| getEnvironment - Return the environment associated with this state. | |
| Store | getStore () const |
| Return the store associated with this state. | |
| GenericDataMap | getGDM () const |
| getGDM - Return the generic data map associated with this state. | |
| void | setGDM (GenericDataMap gdm) |
| void | Profile (llvm::FoldingSetNodeID &ID) const |
| Profile - Used to profile the contents of this object for inclusion in a FoldingSet. | |
| BasicValueFactory & | getBasicVals () const |
| SymbolManager & | getSymbolManager () const |
| ProgramStateRef | assume (DefinedOrUnknownSVal cond, bool assumption) const |
Assumes that the value of cond is zero (if assumption is "false") or non-zero (if assumption is "true"). | |
| std::pair< ProgramStateRef, ProgramStateRef > | assume (DefinedOrUnknownSVal cond) const |
Assumes both "true" and "false" for cond, and returns both corresponding states (respectively). | |
| std::pair< ProgramStateRef, ProgramStateRef > | assumeInBoundDual (DefinedOrUnknownSVal idx, DefinedOrUnknownSVal upperBound, QualType IndexType=QualType()) const |
| ProgramStateRef | assumeInBound (DefinedOrUnknownSVal idx, DefinedOrUnknownSVal upperBound, bool assumption, QualType IndexType=QualType()) const |
| ProgramStateRef | assumeInclusiveRange (DefinedOrUnknownSVal Val, const llvm::APSInt &From, const llvm::APSInt &To, bool assumption) const |
Assumes that the value of Val is bounded with [From; To] (if assumption is "true") or it is fully out of this range (if assumption is "false"). | |
| std::pair< ProgramStateRef, ProgramStateRef > | assumeInclusiveRange (DefinedOrUnknownSVal Val, const llvm::APSInt &From, const llvm::APSInt &To) const |
Assumes given range both "true" and "false" for Val, and returns both corresponding states (respectively). | |
| ConditionTruthVal | isNonNull (SVal V) const |
| Check if the given SVal is not constrained to zero and is not a zero constant. | |
| ConditionTruthVal | isNull (SVal V) const |
| Check if the given SVal is constrained to zero or is a zero constant. | |
| ConditionTruthVal | areEqual (SVal Lhs, SVal Rhs) const |
| LLVM_ATTRIBUTE_RETURNS_NONNULL const VarRegion * | getRegion (const VarDecl *D, const LocationContext *LC) const |
| Utility method for getting regions. | |
| ProgramStateRef | BindExpr (const Stmt *S, const LocationContext *LCtx, SVal V, bool Invalidate=true) const |
| Create a new state by binding the value 'V' to the statement 'S' in the state's environment. | |
| ProgramStateRef | bindLoc (Loc location, SVal V, const LocationContext *LCtx, bool notifyChanges=true) const |
| ProgramStateRef | bindLoc (SVal location, SVal V, const LocationContext *LCtx) const |
| ProgramStateRef | bindDefaultInitial (SVal loc, SVal V, const LocationContext *LCtx) const |
Initializes the region of memory represented by loc with an initial value. | |
| ProgramStateRef | bindDefaultZero (SVal loc, const LocationContext *LCtx) const |
Performs C++ zero-initialization procedure on the region of memory represented by loc. | |
| ProgramStateRef | killBinding (Loc LV) const |
| ProgramStateRef | invalidateRegions (ArrayRef< const MemRegion * > Regions, ConstCFGElementRef Elem, unsigned BlockCount, const LocationContext *LCtx, bool CausesPointerEscape, InvalidatedSymbols *IS=nullptr, const CallEvent *Call=nullptr, RegionAndSymbolInvalidationTraits *ITraits=nullptr) const |
| Returns the state with bindings for the given regions cleared from the store. | |
| ProgramStateRef | invalidateRegions (ArrayRef< SVal > Values, ConstCFGElementRef Elem, unsigned BlockCount, const LocationContext *LCtx, bool CausesPointerEscape, InvalidatedSymbols *IS=nullptr, const CallEvent *Call=nullptr, RegionAndSymbolInvalidationTraits *ITraits=nullptr) const |
| ProgramStateRef | enterStackFrame (const CallEvent &Call, const StackFrameContext *CalleeCtx) const |
| enterStackFrame - Returns the state for entry to the given stack frame, preserving the current state. | |
| SVal | getSelfSVal (const LocationContext *LC) const |
| Return the value of 'self' if available in the given context. | |
| Loc | getLValue (const CXXBaseSpecifier &BaseSpec, const SubRegion *Super) const |
| Get the lvalue for a base class object reference. | |
| Loc | getLValue (const CXXRecordDecl *BaseClass, const SubRegion *Super, bool IsVirtual) const |
| Get the lvalue for a base class object reference. | |
| Loc | getLValue (const VarDecl *D, const LocationContext *LC) const |
| Get the lvalue for a variable reference. | |
| Loc | getLValue (const CompoundLiteralExpr *literal, const LocationContext *LC) const |
| SVal | getLValue (const ObjCIvarDecl *decl, SVal base) const |
| Get the lvalue for an ivar reference. | |
| SVal | getLValue (const FieldDecl *decl, SVal Base) const |
| Get the lvalue for a field reference. | |
| SVal | getLValue (const IndirectFieldDecl *decl, SVal Base) const |
| Get the lvalue for an indirect field reference. | |
| SVal | getLValue (QualType ElementType, SVal Idx, SVal Base) const |
| Get the lvalue for an array index. | |
| SVal | getSVal (const Stmt *S, const LocationContext *LCtx) const |
| Returns the SVal bound to the statement 'S' in the state's environment. | |
| SVal | getSValAsScalarOrLoc (const Stmt *Ex, const LocationContext *LCtx) const |
| SVal | getSVal (Loc LV, QualType T=QualType()) const |
| Return the value bound to the specified location. | |
| SVal | getRawSVal (Loc LV, QualType T=QualType()) const |
| Returns the "raw" SVal bound to LV before any value simplification. | |
| SVal | getSVal (const MemRegion *R, QualType T=QualType()) const |
| Return the value bound to the specified location. | |
| SVal | getSValAsScalarOrLoc (const MemRegion *R) const |
| Return the value bound to the specified location, assuming that the value is a scalar integer or an enumeration or a pointer. | |
| bool | scanReachableSymbols (SVal val, SymbolVisitor &visitor) const |
| Visits the symbols reachable from the given SVal using the provided SymbolVisitor. | |
| bool | scanReachableSymbols (llvm::iterator_range< region_iterator > Reachable, SymbolVisitor &visitor) const |
| Visits the symbols reachable from the regions in the given MemRegions range using the provided SymbolVisitor. | |
| template<typename CB> | |
| CB | scanReachableSymbols (SVal val) const |
| template<typename CB> | |
| CB | scanReachableSymbols (llvm::iterator_range< region_iterator > Reachable) const |
| void *const * | FindGDM (const void *K) const |
| template<typename T> | |
| ProgramStateRef | add (typename ProgramStateTrait< T >::key_type K) const |
| template<typename T> | |
| ProgramStateTrait< T >::data_type | get () const |
| template<typename T> | |
| ProgramStateTrait< T >::lookup_type | get (typename ProgramStateTrait< T >::key_type key) const |
| template<typename T> | |
| ProgramStateTrait< T >::context_type | get_context () const |
| template<typename T> | |
| ProgramStateRef | remove (typename ProgramStateTrait< T >::key_type K) const |
| template<typename T> | |
| ProgramStateRef | remove (typename ProgramStateTrait< T >::key_type K, typename ProgramStateTrait< T >::context_type C) const |
| template<typename T> | |
| ProgramStateRef | remove () const |
| template<typename T> | |
| ProgramStateRef | set (typename ProgramStateTrait< T >::data_type D) const |
| template<typename T> | |
| ProgramStateRef | set (typename ProgramStateTrait< T >::key_type K, typename ProgramStateTrait< T >::value_type E) const |
| template<typename T> | |
| ProgramStateRef | set (typename ProgramStateTrait< T >::key_type K, typename ProgramStateTrait< T >::value_type E, typename ProgramStateTrait< T >::context_type C) const |
| template<typename T> | |
| bool | contains (typename ProgramStateTrait< T >::key_type key) const |
| void | printJson (raw_ostream &Out, const LocationContext *LCtx=nullptr, const char *NL="\n", unsigned int Space=0, bool IsDot=false) const |
| void | printDOT (raw_ostream &Out, const LocationContext *LCtx=nullptr, unsigned int Space=0) const |
| void | dump () const |
Static Public Member Functions | |
| static void | Profile (llvm::FoldingSetNodeID &ID, const ProgramState *V) |
| Profile - Profile the contents of a ProgramState object for use in a FoldingSet. | |
Friends | |
| class | ProgramStateManager |
| class | ExplodedGraph |
| class | ExplodedNode |
| class | ConstraintManager |
| class | CoreEngine |
| void | ProgramStateRetain (const ProgramState *state) |
| Increments the number of times this state is referenced. | |
| void | ProgramStateRelease (const ProgramState *state) |
| Decrement the number of times this state is referenced. | |
ProgramState - This class encapsulates:
Together these represent the "abstract state" of a program.
ProgramState is intended to be used as a functional object; that is, once it is created and made "persistent" in a FoldingSet, its values will never change.
Definition at line 71 of file ProgramState.h.
| typedef llvm::ImmutableMap<const void *, void *> clang::ento::ProgramState::GenericDataMap |
Definition at line 73 of file ProgramState.h.
| using clang::ento::ProgramState::region_iterator = const MemRegion ** |
Definition at line 402 of file ProgramState.h.
| ProgramState::ProgramState | ( | ProgramStateManager * | mgr, |
| const Environment & | env, | ||
| StoreRef | st, | ||
| GenericDataMap | gdm ) |
This ctor is used when creating the first ProgramState object.
Definition at line 46 of file ProgramState.cpp.
References getStore(), and ProgramStateManager.
Referenced by BindExpr(), getID(), Profile(), ProgramState(), ProgramStateRelease, and ProgramStateRetain.
| ProgramState::ProgramState | ( | const ProgramState & | RHS | ) |
Copy ctor - We must explicitly define this or else the "Next" ptr in FoldingSetNode will also get copied.
Definition at line 56 of file ProgramState.cpp.
References ProgramState().
| ProgramState::~ProgramState | ( | ) |
Definition at line 62 of file ProgramState.cpp.
|
nodiscard |
Definition at line 833 of file ProgramState.h.
References clang::ento::ProgramStateManager::add(), get_context(), and getStateManager().
| ConditionTruthVal ProgramState::areEqual | ( | SVal | Lhs, |
| SVal | Rhs ) const |
Lhs and Rhs are equal. Definition at line 376 of file ProgramState.cpp.
|
inlinenodiscard |
Assumes both "true" and "false" for cond, and returns both corresponding states (respectively).
This is more efficient than calling assume() twice. Note that one (but not both) of the returned states may be NULL.
Definition at line 720 of file ProgramState.h.
References clang::Cond, and getStateManager().
|
inlinenodiscard |
Assumes that the value of cond is zero (if assumption is "false") or non-zero (if assumption is "true").
This returns a new state with the added constraint on cond. If no new state is feasible, NULL is returned.
Definition at line 710 of file ProgramState.h.
References clang::Cond, and getStateManager().
|
nodiscard |
Definition at line 360 of file ProgramState.cpp.
References assumeInBoundDual().
|
nodiscard |
Definition at line 316 of file ProgramState.cpp.
References clang::ento::ConstraintManager::assumeDual(), clang::ento::SVal::castAs(), ConstraintManager, clang::ento::SValBuilder::evalBinOpNN(), clang::ento::SValBuilder::getArrayIndexType(), clang::ento::SValBuilder::getBasicValueFactory(), clang::ento::SValBuilder::getContext(), clang::ento::BasicValueFactory::getMinValue(), getStateManager(), clang::ASTContext::IntTy, clang::QualType::isNull(), clang::ento::SVal::isUnknown(), clang::ento::SVal::isUnknownOrUndef(), clang::Min, ProgramStateManager, and SM.
Referenced by assumeInBound().
|
inlinenodiscard |
Assumes given range both "true" and "false" for Val, and returns both corresponding states (respectively).
This is more efficient than calling assume() twice. Note that one (but not both) of the returned states may be NULL.
Definition at line 741 of file ProgramState.h.
References clang::ento::SVal::castAs(), getStateManager(), clang::isa(), and clang::ento::SVal::isUnknown().
|
inlinenodiscard |
Assumes that the value of Val is bounded with [From; To] (if assumption is "true") or it is fully out of this range (if assumption is "false").
This returns a new state with the added constraint on cond. If no new state is feasible, NULL is returned.
Definition at line 728 of file ProgramState.h.
References clang::ento::SVal::castAs(), getStateManager(), clang::isa(), and clang::ento::SVal::isUnknown().
|
nodiscard |
Initializes the region of memory represented by loc with an initial value.
Once initialized, all values loaded from any sub-regions of that region will be equal to V, unless overwritten later by the program. This method should not be used on regions that are already initialized. If you need to indicate that memory contents have suddenly become unknown within a certain region of memory, consider invalidateRegions().
Definition at line 129 of file ProgramState.cpp.
References clang::ento::ProgramStateManager::getOwningEngine(), getRegion(), getStateManager(), getStore(), clang::ento::ExprEngine::processRegionChange(), ProgramStateManager, and V.
|
nodiscard |
Performs C++ zero-initialization procedure on the region of memory represented by loc.
Definition at line 139 of file ProgramState.cpp.
References clang::ento::ProgramStateManager::getOwningEngine(), getRegion(), getStateManager(), getStore(), clang::ento::ExprEngine::processRegionChange(), and ProgramStateManager.
|
nodiscard |
Create a new state by binding the value 'V' to the statement 'S' in the state's environment.
Definition at line 301 of file ProgramState.cpp.
References clang::ento::EnvironmentManager::bindExpr(), clang::ento::ProgramStateManager::getPersistentState(), getStateManager(), ProgramState(), and V.
|
nodiscard |
Definition at line 113 of file ProgramState.cpp.
References clang::ento::SVal::getAsRegion(), clang::ento::ProgramStateManager::getOwningEngine(), getStateManager(), getStore(), clang::ento::ExprEngine::processRegionChange(), ProgramStateManager, and V.
Referenced by bindLoc().
|
inlinenodiscard |
Definition at line 753 of file ProgramState.h.
References bindLoc(), clang::ento::SVal::getAs(), and V.
|
inline |
Definition at line 475 of file ProgramState.h.
References FindGDM(), and clang::ento::ProgramStateTrait< T >::MakeData().
| LLVM_DUMP_METHOD void ProgramState::dump | ( | ) | const |
Definition at line 522 of file ProgramState.cpp.
References printJson().
|
nodiscard |
enterStackFrame - Returns the state for entry to the given stack frame, preserving the current state.
Definition at line 233 of file ProgramState.cpp.
References clang::Call, getStateManager(), and getStore().
| void *const * ProgramState::FindGDM | ( | const void * | K | ) | const |
Definition at line 534 of file ProgramState.cpp.
Referenced by contains(), get(), and get().
|
inline |
Definition at line 434 of file ProgramState.h.
References FindGDM(), and clang::ento::ProgramStateTrait< T >::MakeData().
Referenced by clang::ento::ConstraintManager::assumeDualImpl().
|
inline |
Definition at line 440 of file ProgramState.h.
References FindGDM(), and clang::ento::ProgramStateTrait< T >::MakeData().
| ProgramStateTrait< T >::context_type clang::ento::ProgramState::get_context | ( | ) | const |
Definition at line 838 of file ProgramState.h.
References clang::ento::ProgramStateManager::get_context(), and getStateManager().
| AnalysisManager & ProgramState::getAnalysisManager | ( | ) | const |
Definition at line 526 of file ProgramState.cpp.
|
inline |
Definition at line 824 of file ProgramState.h.
References clang::ento::ProgramStateManager::getBasicVals(), and getStateManager().
Referenced by getSVal().
|
inline |
Return the ConstraintManager.
Definition at line 700 of file ProgramState.h.
References ConstraintManager.
Referenced by getSVal().
|
inline |
getEnvironment - Return the environment associated with this state.
The environment is the mapping from expressions to values.
Definition at line 162 of file ProgramState.h.
|
inline |
getGDM - Return the generic data map associated with this state.
Definition at line 169 of file ProgramState.h.
| int64_t ProgramState::getID | ( | ) | const |
Definition at line 67 of file ProgramState.cpp.
References getStateManager(), and ProgramState().
|
inline |
Definition at line 780 of file ProgramState.h.
References getStateManager().
|
inline |
Get the lvalue for a base class object reference.
Definition at line 759 of file ProgramState.h.
References clang::Type::getAsCXXRecordDecl(), getStateManager(), clang::CXXBaseSpecifier::getType(), and clang::CXXBaseSpecifier::isVirtual().
Referenced by clang::ento::ConditionBRVisitor::patternMatch().
|
inline |
Get the lvalue for a base class object reference.
Definition at line 767 of file ProgramState.h.
References getStateManager().
Get the lvalue for a field reference.
Definition at line 466 of file ProgramState.cpp.
References getStateManager().
| SVal ProgramState::getLValue | ( | const IndirectFieldDecl * | decl, |
| SVal | Base ) const |
Get the lvalue for an indirect field reference.
Definition at line 472 of file ProgramState.cpp.
References clang::cast(), clang::IndirectFieldDecl::chain(), getStateManager(), and SM.
|
inline |
Get the lvalue for an ivar reference.
Definition at line 785 of file ProgramState.h.
References getStateManager().
|
inline |
Get the lvalue for a variable reference.
Definition at line 775 of file ProgramState.h.
References getStateManager().
|
inline |
Get the lvalue for an array index.
Definition at line 789 of file ProgramState.h.
References clang::ento::SVal::getAs(), and getStateManager().
Returns the "raw" SVal bound to LV before any value simplification.
Definition at line 814 of file ProgramState.h.
References getStateManager(), and getStore().
Referenced by getSVal().
|
inline |
Utility method for getting regions.
Definition at line 704 of file ProgramState.h.
References clang::ento::ProgramStateManager::getRegionManager(), getStateManager(), and clang::ento::MemRegionManager::getVarRegion().
Referenced by bindDefaultInitial(), bindDefaultZero(), and getSelfSVal().
| SVal ProgramState::getSelfSVal | ( | const LocationContext * | LC | ) | const |
Return the value of 'self' if available in the given context.
Definition at line 239 of file ProgramState.cpp.
References getRegion(), clang::LocationContext::getSelfDecl(), and getSVal().
|
inline |
Return the ProgramStateManager associated with this state.
Definition at line 151 of file ProgramState.h.
References ProgramStateManager.
Referenced by add(), assume(), assume(), assumeInBoundDual(), assumeInclusiveRange(), assumeInclusiveRange(), bindDefaultInitial(), bindDefaultZero(), BindExpr(), bindLoc(), enterStackFrame(), get_context(), getBasicVals(), getID(), getLValue(), getLValue(), getLValue(), getLValue(), getLValue(), getLValue(), getLValue(), getLValue(), getRawSVal(), getRegion(), getSVal(), getSVal(), getSVal(), getSymbolManager(), isNull(), killBinding(), printJson(), remove(), remove(), remove(), set(), set(), and set().
|
inline |
Return the store associated with this state.
The store is a mapping from locations to values.
Definition at line 166 of file ProgramState.h.
Referenced by bindDefaultInitial(), bindDefaultZero(), bindLoc(), enterStackFrame(), getRawSVal(), getSVal(), killBinding(), printJson(), ProgramState(), and clang::ento::ProgramStateManager::removeDeadBindingsFromEnvironmentAndStore().
|
inline |
Return the value bound to the specified location.
Returns UnknownVal() if none found.
Definition at line 818 of file ProgramState.h.
References getStateManager(), and getStore().
|
inline |
Returns the SVal bound to the statement 'S' in the state's environment.
Definition at line 795 of file ProgramState.h.
References getStateManager().
Referenced by getSelfSVal(), getSValAsScalarOrLoc(), getSValAsScalarOrLoc(), and clang::ento::ConditionBRVisitor::patternMatch().
Return the value bound to the specified location.
Returns UnknownVal() if none found.
Definition at line 262 of file ProgramState.cpp.
References clang::ento::BasicValueFactory::Convert(), getBasicVals(), getConstraintManager(), getRawSVal(), getStateManager(), clang::ento::Loc::isLocType(), and V.
Return the value bound to the specified location, assuming that the value is a scalar integer or an enumeration or a pointer.
Returns UnknownVal() if none found or the region is not known to hold a value of such type.
Definition at line 246 of file ProgramState.cpp.
References getSVal(), clang::ento::MemRegion::isBoundable(), and clang::ento::Loc::isLocType().
|
inline |
Definition at line 802 of file ProgramState.h.
References getSVal(), and clang::ento::Loc::isLocType().
|
inline |
Definition at line 828 of file ProgramState.h.
References getStateManager(), and clang::ento::ProgramStateManager::getSymbolManager().
|
nodiscard |
Returns the state with bindings for the given regions cleared from the store.
If Call is non-null, also invalidates global regions (but if Call is from a system header, then this is limited to globals declared in system headers).
This calls the lower-level method StoreManager::invalidateRegions to do the actual invalidation, then calls the checker callbacks which should be triggered by this event.
| Regions | the set of regions to be invalidated. |
| Elem | The CFG Element that caused the invalidation. |
| BlockCount | The number of times the current basic block has been visited. |
| CausesPointerEscape | the flag is set to true when the invalidation entails escape of a symbol (representing a pointer). For example, due to it being passed as an argument in a call. |
| IS | the set of invalidated symbols. |
| Call | if non-null, the invalidated regions represent parameters to the call and should be considered directly invalidated. |
| ITraits | information about special handling for particular regions or symbols. |
References clang::Call.
|
nodiscard |
References clang::Call, and clang::ast_matchers::decl.
| ConditionTruthVal ProgramState::isNonNull | ( | SVal | V | ) | const |
| ConditionTruthVal ProgramState::isNull | ( | SVal | V | ) | const |
Check if the given SVal is constrained to zero or is a zero constant.
Definition at line 380 of file ProgramState.cpp.
References getStateManager(), and V.
Referenced by isNonNull().
|
nodiscard |
Definition at line 197 of file ProgramState.cpp.
References getStateManager(), getStore(), and clang::ento::StoreRef::getStore().
| void ProgramState::printDOT | ( | raw_ostream & | Out, |
| const LocationContext * | LCtx = nullptr, | ||
| unsigned int | Space = 0 ) const |
Definition at line 517 of file ProgramState.cpp.
References printJson().
| void ProgramState::printJson | ( | raw_ostream & | Out, |
| const LocationContext * | LCtx = nullptr, | ||
| const char * | NL = "\n", | ||
| unsigned int | Space = 0, | ||
| bool | IsDot = false ) const |
Definition at line 490 of file ProgramState.cpp.
References clang::ento::ProgramStateManager::getConstraintManager(), clang::ento::ProgramStateManager::getContext(), clang::ento::ProgramStateManager::getOwningEngine(), getStateManager(), getStore(), clang::ento::ProgramStateManager::getStoreManager(), clang::Indent(), clang::ento::printDynamicTypeInfoJson(), clang::ento::ConstraintManager::printJson(), clang::ento::ExprEngine::printJson(), clang::ento::StoreManager::printJson(), and ProgramStateManager.
Referenced by dump(), and printDOT().
|
inline |
Profile - Used to profile the contents of this object for inclusion in a FoldingSet.
Definition at line 185 of file ProgramState.h.
References Profile().
|
inlinestatic |
Profile - Profile the contents of a ProgramState object for use in a FoldingSet.
Two ProgramState objects are considered equal if they have the same Environment, Store, and GenericDataMap.
Definition at line 176 of file ProgramState.h.
References ProgramState(), and V.
Referenced by Profile().
|
nodiscard |
Definition at line 854 of file ProgramState.h.
References getStateManager(), and clang::ento::ProgramStateManager::remove().
|
nodiscard |
Definition at line 843 of file ProgramState.h.
References get_context(), getStateManager(), and clang::ento::ProgramStateManager::remove().
|
nodiscard |
Definition at line 848 of file ProgramState.h.
References clang::C, getStateManager(), and clang::ento::ProgramStateManager::remove().
| CB clang::ento::ProgramState::scanReachableSymbols | ( | llvm::iterator_range< region_iterator > | Reachable | ) | const |
Definition at line 884 of file ProgramState.h.
References scanReachableSymbols().
| bool ProgramState::scanReachableSymbols | ( | llvm::iterator_range< region_iterator > | Reachable, |
| SymbolVisitor & | visitor ) const |
Visits the symbols reachable from the regions in the given MemRegions range using the provided SymbolVisitor.
Definition at line 677 of file ProgramState.cpp.
References clang::ento::ScanReachableSymbols::scan().
| CB clang::ento::ProgramState::scanReachableSymbols | ( | SVal | val | ) | const |
Definition at line 877 of file ProgramState.h.
References scanReachableSymbols().
| bool ProgramState::scanReachableSymbols | ( | SVal | val, |
| SymbolVisitor & | visitor ) const |
Visits the symbols reachable from the given SVal using the provided SymbolVisitor.
This is a convenience API. Consider using ScanReachableSymbols class directly when making multiple scans on the same state with the same visitor to avoid repeated initialization cost.
Definition at line 672 of file ProgramState.cpp.
References clang::ento::ScanReachableSymbols::scan().
Referenced by scanReachableSymbols(), and scanReachableSymbols().
|
nodiscard |
Definition at line 859 of file ProgramState.h.
References getStateManager(), and clang::ento::ProgramStateManager::set().
|
nodiscard |
Definition at line 864 of file ProgramState.h.
References get_context(), getStateManager(), and clang::ento::ProgramStateManager::set().
|
nodiscard |
Definition at line 870 of file ProgramState.h.
References clang::C, getStateManager(), and clang::ento::ProgramStateManager::set().
|
inline |
Definition at line 171 of file ProgramState.h.
|
friend |
Definition at line 117 of file ProgramState.h.
References ConstraintManager.
Referenced by assumeInBoundDual(), ConstraintManager, and getConstraintManager().
|
friend |
|
friend |
Definition at line 79 of file ProgramState.h.
References ExplodedGraph.
Referenced by ExplodedGraph.
|
friend |
Definition at line 80 of file ProgramState.h.
References ExplodedNode, and ProgramStateManager.
Referenced by ExplodedNode.
|
friend |
Definition at line 78 of file ProgramState.h.
References ProgramStateManager.
Referenced by assumeInBoundDual(), bindDefaultInitial(), bindDefaultZero(), bindLoc(), ExplodedNode, getStateManager(), printJson(), ProgramState(), ProgramStateManager, and ProgramStateRelease.
|
friend |
Decrement the number of times this state is referenced.
Definition at line 34 of file ProgramState.cpp.
References ProgramState(), ProgramStateManager, and s.
|
friend |
Increments the number of times this state is referenced.
Definition at line 29 of file ProgramState.cpp.
References ProgramState().