clang API Documentation

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

#include <CFG.h>

List of all members.

Classes

class  AdjacentBlock
class  ElementList
class  FilteredCFGBlockIterator
class  FilterOptions

Public Types

typedef ElementList::iterator iterator
typedef ElementList::const_iterator const_iterator
typedef
ElementList::reverse_iterator 
reverse_iterator
typedef
ElementList::const_reverse_iterator 
const_reverse_iterator
typedef AdjacentBlocks::iterator pred_iterator
typedef
AdjacentBlocks::const_iterator 
const_pred_iterator
typedef
AdjacentBlocks::reverse_iterator 
pred_reverse_iterator
typedef
AdjacentBlocks::const_reverse_iterator 
const_pred_reverse_iterator
typedef AdjacentBlocks::iterator succ_iterator
typedef
AdjacentBlocks::const_iterator 
const_succ_iterator
typedef
AdjacentBlocks::reverse_iterator 
succ_reverse_iterator
typedef
AdjacentBlocks::const_reverse_iterator 
const_succ_reverse_iterator
typedef
FilteredCFGBlockIterator
< const_pred_iterator, true
filtered_pred_iterator
typedef
FilteredCFGBlockIterator
< const_succ_iterator, false
filtered_succ_iterator

Public Member Functions

 CFGBlock (unsigned blockid, BumpVectorContext &C, CFG *parent)
 ~CFGBlock ()
CFGElement front () const
CFGElement back () const
iterator begin ()
iterator end ()
const_iterator begin () const
const_iterator end () const
reverse_iterator rbegin ()
reverse_iterator rend ()
const_reverse_iterator rbegin () const
const_reverse_iterator rend () const
unsigned size () const
bool empty () const
CFGElement operator[] (size_t i) const
pred_iterator pred_begin ()
pred_iterator pred_end ()
const_pred_iterator pred_begin () const
const_pred_iterator pred_end () const
pred_reverse_iterator pred_rbegin ()
pred_reverse_iterator pred_rend ()
const_pred_reverse_iterator pred_rbegin () const
const_pred_reverse_iterator pred_rend () const
succ_iterator succ_begin ()
succ_iterator succ_end ()
const_succ_iterator succ_begin () const
const_succ_iterator succ_end () const
succ_reverse_iterator succ_rbegin ()
succ_reverse_iterator succ_rend ()
const_succ_reverse_iterator succ_rbegin () const
const_succ_reverse_iterator succ_rend () const
unsigned succ_size () const
bool succ_empty () const
unsigned pred_size () const
bool pred_empty () const
filtered_pred_iterator filtered_pred_start_end (const FilterOptions &f) const
filtered_succ_iterator filtered_succ_start_end (const FilterOptions &f) const
void setTerminator (CFGTerminator Term)
void setLabel (Stmt *Statement)
void setLoopTarget (const Stmt *loopTarget)
void setHasNoReturnElement ()
CFGTerminator getTerminator ()
const CFGTerminator getTerminator () const
StmtgetTerminatorCondition (bool StripParens=true)
const StmtgetTerminatorCondition (bool StripParens=true) const
const StmtgetLoopTarget () const
StmtgetLabel ()
const StmtgetLabel () const
bool hasNoReturnElement () const
unsigned getBlockID () const
CFGgetParent () const
void dump () const
void dump (const CFG *cfg, const LangOptions &LO, bool ShowColors=false) const
 dump - A simply pretty printer of a CFGBlock that outputs to stderr.
void print (raw_ostream &OS, const CFG *cfg, const LangOptions &LO, bool ShowColors) const
void printTerminator (raw_ostream &OS, const LangOptions &LO) const
 printTerminator - A simple pretty printer of the terminator of a CFGBlock.
void printAsOperand (raw_ostream &OS, bool)
void addSuccessor (AdjacentBlock Succ, BumpVectorContext &C)
 Adds a (potentially unreachable) successor block to the current block.
void appendStmt (Stmt *statement, BumpVectorContext &C)
void appendInitializer (CXXCtorInitializer *initializer, BumpVectorContext &C)
void appendNewAllocator (CXXNewExpr *NE, BumpVectorContext &C)
void appendBaseDtor (const CXXBaseSpecifier *BS, BumpVectorContext &C)
void appendMemberDtor (FieldDecl *FD, BumpVectorContext &C)
void appendTemporaryDtor (CXXBindTemporaryExpr *E, BumpVectorContext &C)
void appendAutomaticObjDtor (VarDecl *VD, Stmt *S, BumpVectorContext &C)
void appendDeleteDtor (CXXRecordDecl *RD, CXXDeleteExpr *DE, BumpVectorContext &C)
iterator beginAutomaticObjDtorsInsert (iterator I, size_t Cnt, BumpVectorContext &C)
iterator insertAutomaticObjDtor (iterator I, VarDecl *VD, Stmt *S)

Static Public Member Functions

static bool FilterEdge (const FilterOptions &F, const CFGBlock *Src, const CFGBlock *Dst)

Detailed Description

CFGBlock - Represents a single basic block in a source-level CFG. It consists of:

(1) A set of statements/expressions (which may contain subexpressions). (2) A "terminator" statement (not in the set of statements). (3) A list of successors and predecessors.

Terminator: The terminator represents the type of control-flow that occurs at the end of the basic block. The terminator is a Stmt* referring to an AST node that has control-flow: if-statements, breaks, loops, etc. If the control-flow is conditional, the condition expression will appear within the set of statements in the block (usually the last statement).

Predecessors: the order in the set of predecessors is arbitrary.

Successors: the order in the set of successors is NOT arbitrary. We currently have the following orderings based on the terminator:

Terminator Successor Ordering ----------------------------------------------------- if Then Block; Else Block ? operator LHS expression; RHS expression &&, || expression that uses result of && or ||, RHS

But note that any of that may be NULL in case of optimized-out edges.

Definition at line 354 of file CFG.h.


Member Typedef Documentation

typedef ElementList::const_iterator clang::CFGBlock::const_iterator

Definition at line 500 of file CFG.h.

Definition at line 524 of file CFG.h.

Definition at line 526 of file CFG.h.

Definition at line 502 of file CFG.h.

Definition at line 529 of file CFG.h.

Definition at line 531 of file CFG.h.

Definition at line 604 of file CFG.h.

Definition at line 607 of file CFG.h.

typedef ElementList::iterator clang::CFGBlock::iterator

Definition at line 499 of file CFG.h.

Definition at line 523 of file CFG.h.

Definition at line 525 of file CFG.h.

Definition at line 501 of file CFG.h.

Definition at line 528 of file CFG.h.

Definition at line 530 of file CFG.h.


Constructor & Destructor Documentation

clang::CFGBlock::CFGBlock ( unsigned  blockid,
BumpVectorContext C,
CFG parent 
) [inline, explicit]

Definition at line 492 of file CFG.h.

Definition at line 496 of file CFG.h.


Member Function Documentation

void clang::CFGBlock::appendAutomaticObjDtor ( VarDecl VD,
Stmt S,
BumpVectorContext C 
) [inline]

Definition at line 683 of file CFG.h.

void clang::CFGBlock::appendBaseDtor ( const CXXBaseSpecifier BS,
BumpVectorContext C 
) [inline]

Definition at line 671 of file CFG.h.

Definition at line 687 of file CFG.h.

void clang::CFGBlock::appendInitializer ( CXXCtorInitializer initializer,
BumpVectorContext C 
) [inline]

Definition at line 661 of file CFG.h.

Definition at line 675 of file CFG.h.

Definition at line 666 of file CFG.h.

void clang::CFGBlock::appendStmt ( Stmt statement,
BumpVectorContext C 
) [inline]

Definition at line 657 of file CFG.h.

Definition at line 679 of file CFG.h.

CFGElement clang::CFGBlock::back ( ) const [inline]

Definition at line 505 of file CFG.h.

Referenced by clang::threadSafety::neverReturns().

Definition at line 507 of file CFG.h.

Referenced by Accumulate(), clang::LiveVariables::computeLiveness(), print_block(), and runOnBlock().

Definition at line 509 of file CFG.h.

Definition at line 694 of file CFG.h.

References AttributeLangSupport::C.

void CFGBlock::dump ( ) const

Definition at line 4440 of file CFG.cpp.

References getParent().

void CFGBlock::dump ( const CFG cfg,
const LangOptions LO,
bool  ShowColors = false 
) const

dump - A simply pretty printer of a CFGBlock that outputs to stderr.

Definition at line 4435 of file CFG.cpp.

References print().

bool clang::CFGBlock::empty ( ) const [inline]

Definition at line 508 of file CFG.h.

Referenced by Accumulate(), clang::LiveVariables::computeLiveness(), print_block(), and runOnBlock().

Definition at line 510 of file CFG.h.

Definition at line 609 of file CFG.h.

References pred_begin(), and pred_end().

Definition at line 613 of file CFG.h.

References succ_begin(), and succ_end().

bool CFGBlock::FilterEdge ( const FilterOptions F,
const CFGBlock Src,
const CFGBlock Dst 
) [static]
CFGElement clang::CFGBlock::front ( ) const [inline]

Definition at line 504 of file CFG.h.

Referenced by clang::BlockEntrance::getFirstElement().

const Stmt* clang::CFGBlock::getLabel ( ) const [inline]

Definition at line 636 of file CFG.h.

const Stmt* clang::CFGBlock::getLoopTarget ( ) const [inline]

Definition at line 633 of file CFG.h.

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

Definition at line 642 of file CFG.h.

Referenced by dump().

Definition at line 625 of file CFG.h.

const Stmt* clang::CFGBlock::getTerminatorCondition ( bool  StripParens = true) const [inline]

Definition at line 629 of file CFG.h.

References getTerminatorCondition().

Definition at line 638 of file CFG.h.

Referenced by CheckFallThrough(), clang::threadSafety::neverReturns(), and print_block().

Definition at line 699 of file CFG.h.

CFGElement clang::CFGBlock::operator[] ( size_t  i) const [inline]

Definition at line 520 of file CFG.h.

Definition at line 535 of file CFG.h.

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

bool clang::CFGBlock::pred_empty ( ) const [inline]

Definition at line 557 of file CFG.h.

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

Referenced by checkRecursiveFunction(), and print_block().

Definition at line 536 of file CFG.h.

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

Definition at line 538 of file CFG.h.

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

Definition at line 540 of file CFG.h.

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

Definition at line 539 of file CFG.h.

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

Definition at line 541 of file CFG.h.

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

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

print - A simple pretty printer of a CFGBlock that outputs to an ostream. Generally this will only be called from CFG::print.

Definition at line 4446 of file CFG.cpp.

References print_block().

Referenced by dump(), and clang::CFG::dump().

void clang::CFGBlock::printAsOperand ( raw_ostream &  OS,
bool   
) [inline]

Definition at line 650 of file CFG.h.

References getBlockID().

void CFGBlock::printTerminator ( raw_ostream &  OS,
const LangOptions LO 
) const

printTerminator - A simple pretty printer of the terminator of a CFGBlock.

Definition at line 4454 of file CFG.cpp.

References getTerminator().

Referenced by llvm::DOTGraphTraits< ExplodedNode * >::getNodeLabel().

Definition at line 514 of file CFG.h.

Definition at line 515 of file CFG.h.

Definition at line 622 of file CFG.h.

void clang::CFGBlock::setLabel ( Stmt Statement) [inline]

Definition at line 620 of file CFG.h.

void clang::CFGBlock::setLoopTarget ( const Stmt loopTarget) [inline]

Definition at line 621 of file CFG.h.

Definition at line 619 of file CFG.h.

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

Definition at line 517 of file CFG.h.

Referenced by getRegionForConstructedObject().

Definition at line 545 of file CFG.h.

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

bool clang::CFGBlock::succ_empty ( ) const [inline]

Definition at line 554 of file CFG.h.

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

Referenced by print_block().

Definition at line 546 of file CFG.h.

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

Definition at line 550 of file CFG.h.

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

Definition at line 549 of file CFG.h.

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

Referenced by clang::ento::SwitchNodeBuilder::end().

Definition at line 551 of file CFG.h.

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


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