clang API Documentation

Public Types | Public Member Functions
clang::ento::SymbolReaper Class Reference

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

#include <SymbolManager.h>

List of all members.

Public Types

typedef SymbolSetTy::const_iterator dead_iterator
typedef RegionSetTy::const_iterator region_iterator

Public Member Functions

 SymbolReaper (const LocationContext *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.
 ~SymbolReaper ()
const LocationContextgetLocationContext () const
bool isLive (SymbolRef sym)
bool isLiveRegion (const MemRegion *region)
bool isLive (const Stmt *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.
bool maybeDead (SymbolRef sym)
 If a symbol is known to be live, marks the symbol as live.
dead_iterator dead_begin () const
dead_iterator dead_end () const
bool hasDeadSymbols () const
region_iterator region_begin () const
region_iterator region_end () const
bool isDead (SymbolRef sym) const
 Returns whether or not a symbol has been confirmed dead.
void markLive (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 559 of file SymbolManager.h.


Member Typedef Documentation

typedef SymbolSetTy::const_iterator clang::ento::SymbolReaper::dead_iterator

Definition at line 622 of file SymbolManager.h.

typedef RegionSetTy::const_iterator clang::ento::SymbolReaper::region_iterator

Definition at line 630 of file SymbolManager.h.


Constructor & Destructor Documentation

clang::ento::SymbolReaper::SymbolReaper ( const LocationContext 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.

Definition at line 587 of file SymbolManager.h.

clang::ento::SymbolReaper::~SymbolReaper ( ) [inline]

Definition at line 591 of file SymbolManager.h.


Member Function Documentation

dead_iterator clang::ento::SymbolReaper::dead_begin ( ) const [inline]

Definition at line 623 of file SymbolManager.h.

dead_iterator clang::ento::SymbolReaper::dead_end ( ) const [inline]

Definition at line 624 of file SymbolManager.h.

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

Definition at line 593 of file SymbolManager.h.

bool clang::ento::SymbolReaper::hasDeadSymbols ( ) const [inline]

Definition at line 626 of file SymbolManager.h.

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

bool clang::ento::SymbolReaper::isDead ( SymbolRef  sym) const [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 evalDeadSymbols callback.)

Definition at line 638 of file SymbolManager.h.

bool SymbolReaper::isLive ( SymbolRef  sym)

Definition at line 464 of file SymbolManager.cpp.

Referenced by clang::ento::StoreManager::removeDeadBindings().

bool clang::ento::SymbolReaper::isLive ( const Stmt ExprVal,
const LocationContext LCtx 
) const
bool clang::ento::SymbolReaper::isLive ( const VarRegion VR,
bool  includeStoreBindings = false 
) const
bool SymbolReaper::isLiveRegion ( const MemRegion region)

Definition at line 436 of file SymbolManager.cpp.

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.

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 413 of file SymbolManager.cpp.

Referenced by clang::ento::StoreManager::removeDeadBindings().

void SymbolReaper::markLive ( const MemRegion region)

Definition at line 419 of file SymbolManager.cpp.

bool SymbolReaper::maybeDead ( SymbolRef  sym)

If a symbol is known to be live, marks the symbol as live.

Otherwise, if the symbol cannot be proven live, it is marked as dead. Returns true if the symbol is dead, false if live.

Definition at line 428 of file SymbolManager.cpp.

region_iterator clang::ento::SymbolReaper::region_begin ( ) const [inline]

Definition at line 631 of file SymbolManager.h.

region_iterator clang::ento::SymbolReaper::region_end ( ) const [inline]

Definition at line 632 of file SymbolManager.h.

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 646 of file SymbolManager.h.


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