clang 20.0.0git
Public Member Functions | List of all members
clang::ento::SymbolReaper Class Reference

A class responsible for cleaning up unused symbols. More...

#include "clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h"

Public Member Functions

 SymbolReaper (const StackFrameContext *Ctx, const Stmt *s, SymbolManager &symmgr, StoreManager &storeMgr)
 Construct a reaper object, which removes everything which is not live before we execute statement s in the given location context.
 
const LocationContextgetLocationContext () const
 It might return null.
 
bool isLive (SymbolRef sym)
 
bool isLiveRegion (const MemRegion *region)
 
bool isLive (const Expr *ExprVal, const LocationContext *LCtx) const
 
bool isLive (const VarRegion *VR, bool includeStoreBindings=false) const
 
void markLive (SymbolRef sym)
 Unconditionally marks a symbol as live.
 
void markInUse (SymbolRef sym)
 Marks a symbol as important to a checker.
 
llvm::iterator_range< RegionSetTy::const_iterator > regions () const
 
bool isDead (SymbolRef sym)
 Returns whether or not a symbol has been confirmed dead.
 
void markLive (const MemRegion *region)
 
void markLazilyCopied (const MemRegion *region)
 
void markElementIndicesLive (const MemRegion *region)
 
void setReapedStore (StoreRef st)
 Set to the value of the symbolic store after StoreManager::removeDeadBindings has been called.
 

Detailed Description

A class responsible for cleaning up unused symbols.

Definition at line 573 of file SymbolManager.h.

Constructor & Destructor Documentation

◆ SymbolReaper()

clang::ento::SymbolReaper::SymbolReaper ( const StackFrameContext Ctx,
const Stmt s,
SymbolManager symmgr,
StoreManager storeMgr 
)
inline

Construct a reaper object, which removes everything which is not live before we execute statement s in the given location context.

If the statement is NULL, everything is this and parent contexts is considered live. If the stack frame context is NULL, everything on stack is considered dead.

Definition at line 607 of file SymbolManager.h.

Member Function Documentation

◆ getLocationContext()

const LocationContext * clang::ento::SymbolReaper::getLocationContext ( ) const
inline

It might return null.

Definition at line 612 of file SymbolManager.h.

◆ isDead()

bool clang::ento::SymbolReaper::isDead ( SymbolRef  sym)
inline

Returns whether or not a symbol has been confirmed dead.

This should only be called once all marking of dead symbols has completed. (For checkers, this means only in the checkDeadSymbols callback.)

Definition at line 643 of file SymbolManager.h.

References isLive().

Referenced by clang::ento::retaincountchecker::RetainCountChecker::checkDeadSymbols(), and clang::ento::SMTConstraintManager::removeDeadBindings().

◆ isLive() [1/3]

bool SymbolReaper::isLive ( const Expr ExprVal,
const LocationContext LCtx 
) const

Definition at line 511 of file SymbolManager.cpp.

◆ isLive() [2/3]

bool SymbolReaper::isLive ( const VarRegion VR,
bool  includeStoreBindings = false 
) const

◆ isLive() [3/3]

bool SymbolReaper::isLive ( SymbolRef  sym)

◆ isLiveRegion()

bool SymbolReaper::isLiveRegion ( const MemRegion region)

◆ markElementIndicesLive()

void SymbolReaper::markElementIndicesLive ( const MemRegion region)

Definition at line 412 of file SymbolManager.cpp.

References clang::ento::SVal::symbols().

◆ markInUse()

void SymbolReaper::markInUse ( SymbolRef  sym)

Marks a symbol as important to a checker.

For metadata symbols, this will keep the symbol alive as long as its associated region is also live. For other symbols, this has no effect; checkers are not permitted to influence the life of other symbols. This should be used before any symbol marking has occurred, i.e. in the MarkLiveSymbols callback.

Definition at line 423 of file SymbolManager.cpp.

◆ markLazilyCopied()

void SymbolReaper::markLazilyCopied ( const MemRegion region)

Definition at line 408 of file SymbolManager.cpp.

References clang::ento::MemRegion::getBaseRegion().

◆ markLive() [1/2]

void SymbolReaper::markLive ( const MemRegion region)

Definition at line 403 of file SymbolManager.cpp.

References clang::ento::MemRegion::getBaseRegion().

◆ markLive() [2/2]

void SymbolReaper::markLive ( SymbolRef  sym)

Unconditionally marks a symbol as live.

This should never be used by checkers, only by the state infrastructure such as the store and environment. Checkers should instead use metadata symbols and markInUse.

Definition at line 398 of file SymbolManager.cpp.

Referenced by clang::ento::ExprEngine::removeDead().

◆ regions()

llvm::iterator_range< RegionSetTy::const_iterator > clang::ento::SymbolReaper::regions ( ) const
inline

Definition at line 635 of file SymbolManager.h.

◆ setReapedStore()

void clang::ento::SymbolReaper::setReapedStore ( StoreRef  st)
inline

Set to the value of the symbolic store after StoreManager::removeDeadBindings has been called.

Definition at line 653 of file SymbolManager.h.

Referenced by clang::ento::ProgramStateManager::removeDeadBindingsFromEnvironmentAndStore().


The documentation for this class was generated from the following files: