clang API Documentation

Public Types | Public Member Functions | Friends
clang::ento::CoreEngine Class Reference

#include <CoreEngine.h>

List of all members.

Public Types

typedef std::vector< std::pair
< BlockEdge, const
ExplodedNode * > > 
BlocksExhausted
typedef std::vector< std::pair
< const CFGBlock *, const
ExplodedNode * > > 
BlocksAborted

Public Member Functions

 CoreEngine (SubEngine &subengine, FunctionSummariesTy *FS)
 Construct a CoreEngine object to analyze the provided CFG.
ExplodedGraphgetGraph ()
 getGraph - Returns the exploded graph.
bool ExecuteWorkList (const LocationContext *L, unsigned Steps, ProgramStateRef InitState)
 ExecuteWorkList - Run the worklist algorithm for a maximum number of steps.
bool ExecuteWorkListWithInitialState (const LocationContext *L, unsigned Steps, ProgramStateRef InitState, ExplodedNodeSet &Dst)
 Returns true if there is still simulation state on the worklist.
void dispatchWorkItem (ExplodedNode *Pred, ProgramPoint Loc, const WorkListUnit &WU)
bool wasBlockAborted () const
bool wasBlocksExhausted () const
bool hasWorkRemaining () const
void addAbortedBlock (const ExplodedNode *node, const CFGBlock *block)
WorkListgetWorkList () const
BlocksExhausted::const_iterator blocks_exhausted_begin () const
BlocksExhausted::const_iterator blocks_exhausted_end () const
BlocksAborted::const_iterator blocks_aborted_begin () const
BlocksAborted::const_iterator blocks_aborted_end () const
void enqueue (ExplodedNodeSet &Set)
 Enqueue the given set of nodes onto the work list.
void enqueue (ExplodedNodeSet &Set, const CFGBlock *Block, unsigned Idx)
 Enqueue nodes that were created as a result of processing a statement onto the work list.
void enqueueEndOfFunction (ExplodedNodeSet &Set)
 enqueue the nodes corresponding to the end of function onto the end of path / work list.
void enqueueStmtNode (ExplodedNode *N, const CFGBlock *Block, unsigned Idx)
 Enqueue a single node created as a result of statement processing.

Friends

struct NodeBuilderContext
class NodeBuilder
class ExprEngine
class CommonNodeBuilder
class IndirectGotoNodeBuilder
class SwitchNodeBuilder
class EndOfFunctionNodeBuilder

Detailed Description

CoreEngine - Implements the core logic of the graph-reachability analysis. It traverses the CFG and generates the ExplodedGraph. Program "states" are treated as opaque void pointers. The template class CoreEngine (which subclasses CoreEngine) provides the matching component to the engine that knows the actual types for states. Note that this engine only dispatches to transfer functions at the statement and block-level. The analyses themselves must implement any transfer function logic and the sub-expression level (if any).

Definition at line 43 of file CoreEngine.h.


Member Typedef Documentation

typedef std::vector<std::pair<const CFGBlock*, const ExplodedNode*> > clang::ento::CoreEngine::BlocksAborted

Definition at line 56 of file CoreEngine.h.

typedef std::vector<std::pair<BlockEdge, const ExplodedNode*> > clang::ento::CoreEngine::BlocksExhausted

Definition at line 53 of file CoreEngine.h.


Constructor & Destructor Documentation

clang::ento::CoreEngine::CoreEngine ( SubEngine subengine,
FunctionSummariesTy FS 
) [inline]

Construct a CoreEngine object to analyze the provided CFG.

Definition at line 113 of file CoreEngine.h.


Member Function Documentation

void clang::ento::CoreEngine::addAbortedBlock ( const ExplodedNode node,
const CFGBlock block 
) [inline]

Inform the CoreEngine that a basic block was aborted because it could not be completely analyzed.

Definition at line 144 of file CoreEngine.h.

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

BlocksAborted::const_iterator clang::ento::CoreEngine::blocks_aborted_begin ( ) const [inline]

Definition at line 156 of file CoreEngine.h.

BlocksAborted::const_iterator clang::ento::CoreEngine::blocks_aborted_end ( ) const [inline]

Definition at line 159 of file CoreEngine.h.

BlocksExhausted::const_iterator clang::ento::CoreEngine::blocks_exhausted_begin ( ) const [inline]

Definition at line 150 of file CoreEngine.h.

BlocksExhausted::const_iterator clang::ento::CoreEngine::blocks_exhausted_end ( ) const [inline]

Definition at line 153 of file CoreEngine.h.

void CoreEngine::dispatchWorkItem ( ExplodedNode Pred,
ProgramPoint  Loc,
const WorkListUnit WU 
)
void CoreEngine::enqueue ( ExplodedNodeSet Set,
const CFGBlock Block,
unsigned  Idx 
)

Enqueue nodes that were created as a result of processing a statement onto the work list.

Definition at line 598 of file CoreEngine.cpp.

References clang::ento::ExplodedNodeSet::begin(), and clang::ento::ExplodedNodeSet::end().

enqueue the nodes corresponding to the end of function onto the end of path / work list.

Definition at line 606 of file CoreEngine.cpp.

References clang::ento::ExplodedNodeSet::begin(), clang::ento::ExplodedNodeSet::end(), clang::ento::ExplodedNode::getLocationContext(), and clang::LocationContext::getParent().

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

void CoreEngine::enqueueStmtNode ( ExplodedNode N,
const CFGBlock Block,
unsigned  Idx 
)
bool CoreEngine::ExecuteWorkList ( const LocationContext L,
unsigned  Steps,
ProgramStateRef  InitState 
)

ExecuteWorkList - Run the worklist algorithm for a maximum number of steps.

ExecuteWorkList - Run the worklist algorithm for a maximum number of steps. Returns true if there is still simulation state on the worklist.

Definition at line 165 of file CoreEngine.cpp.

References clang::CFGBlock::empty(), clang::ento::WorkListUnit::getBlockCounter(), clang::CFGBlock::getBlockID(), clang::LocationContext::getCFG(), clang::LocationContext::getDecl(), clang::CFG::getEntry(), clang::ento::ExplodedNode::getLocation(), clang::ento::WorkListUnit::getNode(), clang::CFG::getNumBlockIDs(), Node, clang::CFGBlock::succ_begin(), and clang::CFGBlock::succ_size().

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

Returns true if there is still simulation state on the worklist.

Definition at line 272 of file CoreEngine.cpp.

References clang::ento::ExplodedNodeSet::Add().

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

getGraph - Returns the exploded graph.

Definition at line 118 of file CoreEngine.h.

Definition at line 138 of file CoreEngine.h.

References wasBlockAborted(), and wasBlocksExhausted().

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

Definition at line 136 of file CoreEngine.h.

Referenced by hasWorkRemaining().

Definition at line 137 of file CoreEngine.h.

Referenced by hasWorkRemaining(), and clang::ento::ExprEngine::wasBlocksExhausted().


Friends And Related Function Documentation

friend class CommonNodeBuilder [friend]

Definition at line 47 of file CoreEngine.h.

friend class EndOfFunctionNodeBuilder [friend]

Definition at line 50 of file CoreEngine.h.

friend class ExprEngine [friend]

Definition at line 46 of file CoreEngine.h.

friend class IndirectGotoNodeBuilder [friend]

Definition at line 48 of file CoreEngine.h.

friend class NodeBuilder [friend]

Definition at line 45 of file CoreEngine.h.

friend struct NodeBuilderContext [friend]

Definition at line 44 of file CoreEngine.h.

friend class SwitchNodeBuilder [friend]

Definition at line 49 of file CoreEngine.h.


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