clang API Documentation

Classes | Public Types | Public Member Functions | Static Public Member Functions
clang::CFG Class Reference

#include <CFG.h>

List of all members.

Classes

struct  BlkExprNumTy
class  BuildOptions
class  const_graph_iterator
class  graph_iterator
 Provides a custom implementation of the iterator class to have the same interface as Function::iterator - iterator returns CFGBlock (not a pointer to CFGBlock). More...

Public Types

typedef BumpVector< CFGBlock * > CFGBlockListTy
typedef CFGBlockListTy::iterator iterator
typedef
CFGBlockListTy::const_iterator 
const_iterator
typedef std::reverse_iterator
< iterator
reverse_iterator
typedef std::reverse_iterator
< const_iterator
const_reverse_iterator
typedef std::vector< const
CFGBlock * >::const_iterator 
try_block_iterator

Public Member Functions

CFGBlockcreateBlock ()
void setEntry (CFGBlock *B)
void setIndirectGotoBlock (CFGBlock *B)
CFGBlockfront ()
CFGBlockback ()
iterator begin ()
iterator end ()
const_iterator begin () const
const_iterator end () const
graph_iterator nodes_begin ()
graph_iterator nodes_end ()
const_graph_iterator nodes_begin () const
const_graph_iterator nodes_end () const
reverse_iterator rbegin ()
reverse_iterator rend ()
const_reverse_iterator rbegin () const
const_reverse_iterator rend () const
CFGBlockgetEntry ()
const CFGBlockgetEntry () const
CFGBlockgetExit ()
const CFGBlockgetExit () const
CFGBlockgetIndirectGotoBlock ()
const CFGBlockgetIndirectGotoBlock () const
try_block_iterator try_blocks_begin () const
try_block_iterator try_blocks_end () const
void addTryDispatchBlock (const CFGBlock *block)
template<typename CALLBACK >
void VisitBlockStmts (CALLBACK &O) const
bool isBlkExpr (const Stmt *S)
bool isBlkExpr (const Stmt *S) const
BlkExprNumTy getBlkExprNum (const Stmt *S)
unsigned getNumBlkExprs ()
unsigned getNumBlockIDs () const
unsigned size () const
void viewCFG (const LangOptions &LO) const
void print (raw_ostream &OS, const LangOptions &LO, bool ShowColors) const
 print - A simple pretty printer of a CFG that outputs to an ostream.
void dump (const LangOptions &LO, bool ShowColors) const
 dump - A simple pretty printer of a CFG that outputs to stderr.
 CFG ()
 ~CFG ()
llvm::BumpPtrAllocator & getAllocator ()
BumpVectorContextgetBumpVectorContext ()

Static Public Member Functions

static CFGbuildCFG (const Decl *D, Stmt *AST, ASTContext *C, const BuildOptions &BO)

Detailed Description

CFG - Represents a source-level, intra-procedural CFG that represents the control-flow of a Stmt. The Stmt can represent an entire function body, or a single expression. A CFG will always contain one empty block that represents the Exit point of the CFG. A CFG will also contain a designated Entry block. The CFG solely represents control-flow; it consists of CFGBlocks which are simply containers of Stmt*'s in the AST the CFG was constructed from.

Definition at line 555 of file CFG.h.


Member Typedef Documentation

Definition at line 665 of file CFG.h.

Definition at line 667 of file CFG.h.

typedef std::reverse_iterator<const_iterator> clang::CFG::const_reverse_iterator

Definition at line 669 of file CFG.h.

Definition at line 666 of file CFG.h.

typedef std::reverse_iterator<iterator> clang::CFG::reverse_iterator

Definition at line 668 of file CFG.h.

Definition at line 701 of file CFG.h.


Constructor & Destructor Documentation

clang::CFG::CFG ( ) [inline]

Definition at line 767 of file CFG.h.

CFG::~CFG ( )

Definition at line 3344 of file CFG.cpp.


Member Function Documentation

void clang::CFG::addTryDispatchBlock ( const CFGBlock block) [inline]

Definition at line 709 of file CFG.h.

CFGBlock& clang::CFG::back ( ) [inline]

Definition at line 672 of file CFG.h.

References clang::BumpVector< T >::back().

Referenced by createBlock().

iterator clang::CFG::begin ( ) [inline]
const_iterator clang::CFG::begin ( ) const [inline]

Definition at line 676 of file CFG.h.

References clang::BumpVector< T >::begin().

CFG * CFG::buildCFG ( const Decl D,
Stmt Statement,
ASTContext C,
const BuildOptions BO 
) [static]

buildCFG - Builds a CFG from an AST. The responsibility to free the constructed CFG belongs to the caller.

buildCFG - Constructs a CFG from an AST. Ownership of the returned CFG is returned to the caller.

Definition at line 3161 of file CFG.cpp.

Referenced by clang::AnalysisDeclContext::getCFG(), and clang::AnalysisDeclContext::getUnoptimizedCFG().

CFGBlock * CFG::createBlock ( )

createBlock - Create a new block in the CFG. The CFG owns the block; the caller should not directly free it.

createBlock - Constructs and adds a new CFGBlock to the CFG. The block has no successors or predecessors. If this is the first block created in the CFG, it is automatically set to be the Entry and Exit of the CFG.

Definition at line 3143 of file CFG.cpp.

References back(), begin(), end(), getAllocator(), and clang::BumpVector< T >::push_back().

void CFG::dump ( const LangOptions LO,
bool  ShowColors 
) const

dump - A simple pretty printer of a CFG that outputs to stderr.

Definition at line 3821 of file CFG.cpp.

References print().

Referenced by clang::AnalysisDeclContext::dumpCFG().

iterator clang::CFG::end ( ) [inline]
const_iterator clang::CFG::end ( ) const [inline]

Definition at line 677 of file CFG.h.

References clang::BumpVector< T >::end().

CFGBlock& clang::CFG::front ( ) [inline]

Definition at line 671 of file CFG.h.

References clang::BumpVector< T >::front().

llvm::BumpPtrAllocator& clang::CFG::getAllocator ( ) [inline]

Definition at line 772 of file CFG.h.

References clang::BumpVectorContext::getAllocator().

Referenced by createBlock().

CFG::BlkExprNumTy CFG::getBlkExprNum ( const Stmt S)

Definition at line 3298 of file CFG.cpp.

References NULL, and PopulateBlkExprMap().

Referenced by clang::StmtDeclBitVector_Types::AnalysisDataTy::getIdx(), and isBlkExpr().

BumpVectorContext& clang::CFG::getBumpVectorContext ( ) [inline]

Definition at line 776 of file CFG.h.

CFGBlock& clang::CFG::getEntry ( ) [inline]
const CFGBlock& clang::CFG::getEntry ( ) const [inline]

Definition at line 694 of file CFG.h.

CFGBlock& clang::CFG::getExit ( ) [inline]
const CFGBlock& clang::CFG::getExit ( ) const [inline]

Definition at line 696 of file CFG.h.

CFGBlock* clang::CFG::getIndirectGotoBlock ( ) [inline]

Definition at line 698 of file CFG.h.

Referenced by print_block().

const CFGBlock* clang::CFG::getIndirectGotoBlock ( ) const [inline]

Definition at line 699 of file CFG.h.

unsigned CFG::getNumBlkExprs ( )
unsigned clang::CFG::getNumBlockIDs ( ) const [inline]

getNumBlockIDs - Returns the total number of BlockIDs allocated (which start at 0).

Definition at line 748 of file CFG.h.

Referenced by CheckFallThrough(), clang::LiveVariables::computeLiveness(), clang::reachable_code::FindUnreachableCode(), clang::PostOrderCFGView::PostOrderCFGView(), and clang::runUninitializedVariablesAnalysis().

bool clang::CFG::isBlkExpr ( const Stmt S) [inline]

Definition at line 739 of file CFG.h.

References getBlkExprNum().

Referenced by isBlkExpr(), and clang::StmtDeclBitVector_Types::AnalysisDataTy::isTracked().

bool clang::CFG::isBlkExpr ( const Stmt S) const [inline]

Definition at line 740 of file CFG.h.

References isBlkExpr().

graph_iterator clang::CFG::nodes_begin ( ) [inline]
const_graph_iterator clang::CFG::nodes_begin ( ) const [inline]

Definition at line 681 of file CFG.h.

References clang::BumpVector< T >::begin().

graph_iterator clang::CFG::nodes_end ( ) [inline]
const_graph_iterator clang::CFG::nodes_end ( ) const [inline]

Definition at line 684 of file CFG.h.

References clang::BumpVector< T >::end().

void CFG::print ( raw_ostream &  OS,
const LangOptions LO,
bool  ShowColors 
) const

print - A simple pretty printer of a CFG that outputs to an ostream.

Definition at line 3826 of file CFG.cpp.

References clang::BumpVector< T >::begin(), clang::BumpVector< T >::end(), getEntry(), getExit(), and print_block().

Referenced by dump().

reverse_iterator clang::CFG::rbegin ( ) [inline]

Definition at line 688 of file CFG.h.

References clang::BumpVector< T >::rbegin().

Referenced by DiagnoseSwitchLabelsFallthrough().

const_reverse_iterator clang::CFG::rbegin ( ) const [inline]

Definition at line 690 of file CFG.h.

References clang::BumpVector< T >::rbegin().

reverse_iterator clang::CFG::rend ( ) [inline]

Definition at line 689 of file CFG.h.

References clang::BumpVector< T >::rend().

Referenced by DiagnoseSwitchLabelsFallthrough().

const_reverse_iterator clang::CFG::rend ( ) const [inline]

Definition at line 691 of file CFG.h.

References clang::BumpVector< T >::rend().

void clang::CFG::setEntry ( CFGBlock B) [inline]

setEntry - Set the entry block of the CFG. This is typically used only during CFG construction. Most CFG clients expect that the entry block has no predecessors and contains no statements.

Definition at line 655 of file CFG.h.

void clang::CFG::setIndirectGotoBlock ( CFGBlock B) [inline]

setIndirectGotoBlock - Set the block used for indirect goto jumps. This is typically used only during CFG construction.

Definition at line 659 of file CFG.h.

unsigned clang::CFG::size ( ) const [inline]

size - Return the total number of CFGBlocks within the CFG This is simply a renaming of the getNumBlockIDs(). This is necessary because the dominator implementation needs such an interface.

Definition at line 753 of file CFG.h.

Referenced by getNumBlkExprs(), and llvm::GraphTraits< ::clang::CFG * >::size().

try_block_iterator clang::CFG::try_blocks_begin ( ) const [inline]

Definition at line 702 of file CFG.h.

Referenced by clang::reachable_code::FindUnreachableCode().

try_block_iterator clang::CFG::try_blocks_end ( ) const [inline]

Definition at line 705 of file CFG.h.

Referenced by clang::reachable_code::FindUnreachableCode().

void CFG::viewCFG ( const LangOptions LO) const

Definition at line 3936 of file CFG.cpp.

References GraphHelper, and NULL.

template<typename CALLBACK >
void clang::CFG::VisitBlockStmts ( CALLBACK &  O) const [inline]

Definition at line 718 of file CFG.h.

References begin(), end(), and clang::CFGElement::getAs().


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