|
clang
5.0.0
|
CFG - Represents a source-level, intra-procedural CFG that represents the control-flow of a Stmt. More...
#include "clang/Analysis/CFG.h"
Classes | |
| class | BuildOptions |
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 |
| typedef llvm::DenseMap< const DeclStmt *, const DeclStmt * > ::const_iterator | synthetic_stmt_iterator |
| typedef llvm::iterator_range < synthetic_stmt_iterator > | synthetic_stmt_range |
Public Member Functions | |
| CFGBlock * | createBlock () |
| createBlock - Create a new block in the CFG. More... | |
| void | setEntry (CFGBlock *B) |
| setEntry - Set the entry block of the CFG. More... | |
| void | setIndirectGotoBlock (CFGBlock *B) |
| setIndirectGotoBlock - Set the block used for indirect goto jumps. More... | |
| CFGBlock & | front () |
| CFGBlock & | back () |
| iterator | begin () |
| iterator | end () |
| const_iterator | begin () const |
| const_iterator | end () const |
| iterator | nodes_begin () |
| iterator | nodes_end () |
| const_iterator | nodes_begin () const |
| const_iterator | nodes_end () const |
| reverse_iterator | rbegin () |
| reverse_iterator | rend () |
| const_reverse_iterator | rbegin () const |
| const_reverse_iterator | rend () const |
| CFGBlock & | getEntry () |
| const CFGBlock & | getEntry () const |
| CFGBlock & | getExit () |
| const CFGBlock & | getExit () const |
| CFGBlock * | getIndirectGotoBlock () |
| const CFGBlock * | getIndirectGotoBlock () const |
| try_block_iterator | try_blocks_begin () const |
| try_block_iterator | try_blocks_end () const |
| void | addTryDispatchBlock (const CFGBlock *block) |
| void | addSyntheticDeclStmt (const DeclStmt *Synthetic, const DeclStmt *Source) |
| Records a synthetic DeclStmt and the DeclStmt it was constructed from. More... | |
| synthetic_stmt_iterator | synthetic_stmt_begin () const |
| Iterates over synthetic DeclStmts in the CFG. More... | |
| synthetic_stmt_iterator | synthetic_stmt_end () const |
| synthetic_stmt_range | synthetic_stmts () const |
| template<typename CALLBACK > | |
| void | VisitBlockStmts (CALLBACK &O) const |
| unsigned | getNumBlockIDs () const |
| getNumBlockIDs - Returns the total number of BlockIDs allocated (which start at 0). More... | |
| unsigned | size () const |
| size - Return the total number of CFGBlocks within the CFG This is simply a renaming of the getNumBlockIDs(). More... | |
| 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. More... | |
| void | dump (const LangOptions &LO, bool ShowColors) const |
| dump - A simple pretty printer of a CFG that outputs to stderr. More... | |
| CFG () | |
| llvm::BumpPtrAllocator & | getAllocator () |
| BumpVectorContext & | getBumpVectorContext () |
Static Public Member Functions | |
| static std::unique_ptr< CFG > | buildCFG (const Decl *D, Stmt *AST, ASTContext *C, const BuildOptions &BO) |
| buildCFG - Builds a CFG from an AST. More... | |
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.
| typedef BumpVector<CFGBlock*> clang::CFG::CFGBlockListTy |
| typedef std::reverse_iterator<const_iterator> clang::CFG::const_reverse_iterator |
| typedef std::reverse_iterator<iterator> clang::CFG::reverse_iterator |
| typedef llvm::DenseMap<const DeclStmt *, const DeclStmt *>::const_iterator clang::CFG::synthetic_stmt_iterator |
| typedef llvm::iterator_range<synthetic_stmt_iterator> clang::CFG::synthetic_stmt_range |
| typedef std::vector<const CFGBlock*>::const_iterator clang::CFG::try_block_iterator |
|
inline |
|
inline |
Definition at line 854 of file CFG.h.
References clang::BumpVector< T >::back().
|
inline |
Definition at line 856 of file CFG.h.
References clang::BumpVector< T >::begin().
Referenced by clang::CFGStmtMap::Build(), clang::LiveVariables::computeLiveness(), clang::DominatorTree::dump(), clang::reachable_code::FindUnreachableCode(), clang::LiveVariables::runOnAllBlocks(), clang::runUninitializedVariablesAnalysis(), and VisitBlockStmts().
|
inline |
Definition at line 858 of file CFG.h.
References clang::BumpVector< T >::begin().
|
static |
buildCFG - Builds a CFG from an AST.
buildCFG - Constructs a CFG from an AST.
Definition at line 4016 of file CFG.cpp.
References Builder.
Referenced by clang::AnalysisDeclContext::getCFG(), and clang::AnalysisDeclContext::getUnoptimizedCFG().
| CFGBlock * CFG::createBlock | ( | ) |
createBlock - Create a new block in the CFG.
createBlock - Constructs and adds a new CFGBlock to the CFG.
The CFG owns the block; the caller should not directly free it.
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.
| void CFG::dump | ( | const LangOptions & | LO, |
| bool | ShowColors | ||
| ) | const |
dump - A simple pretty printer of a CFG that outputs to stderr.
Definition at line 4662 of file CFG.cpp.
References clang::CFGBlock::print().
Referenced by clang::AnalysisDeclContext::dumpCFG().
|
inline |
Definition at line 857 of file CFG.h.
References clang::BumpVector< T >::end().
Referenced by clang::CFGStmtMap::Build(), clang::LiveVariables::computeLiveness(), clang::DominatorTree::dump(), clang::reachable_code::FindUnreachableCode(), clang::LiveVariables::runOnAllBlocks(), clang::runUninitializedVariablesAnalysis(), and VisitBlockStmts().
|
inline |
Definition at line 859 of file CFG.h.
References clang::BumpVector< T >::end().
|
inline |
Definition at line 853 of file CFG.h.
References clang::BumpVector< T >::front().
|
inline |
Definition at line 969 of file CFG.h.
References clang::BumpVectorContext::getAllocator().
|
inline |
|
inline |
Definition at line 871 of file CFG.h.
Referenced by CheckFallThrough(), checkForRecursiveFunctionCall(), clang::ento::CoreEngine::ExecuteWorkList(), clang::reachable_code::FindUnreachableCode(), clang::CallEnter::getEntry(), llvm::GraphTraits< ::clang::CFG * >::getEntryNode(), hasThrowOutNonThrowingFunc(), clang::sema::AnalysisBasedWarnings::IssueWarnings(), print_block(), clang::runUninitializedVariablesAnalysis(), and clang::threadSafety::CFGWalker::walk().
|
inline |
Definition at line 873 of file CFG.h.
Referenced by checkForRecursiveFunctionCall(), checkRecursiveFunction(), checkThrowInNonThrowingFunc(), llvm::GraphTraits< Inverse< ::clang::CFG * > >::getEntryNode(), clang::ento::BugReport::getStmt(), hasThrowOutNonThrowingFunc(), print_block(), clang::consumed::ConsumedAnalyzer::run(), and clang::threadSafety::CFGWalker::walk().
|
inline |
Definition at line 876 of file CFG.h.
Referenced by print_block().
|
inline |
|
inline |
getNumBlockIDs - Returns the total number of BlockIDs allocated (which start at 0).
Definition at line 946 of file CFG.h.
Referenced by CheckFallThrough(), checkForRecursiveFunctionCall(), clang::LiveVariables::computeLiveness(), clang::ento::CoreEngine::ExecuteWorkList(), clang::reachable_code::FindUnreachableCode(), hasThrowOutNonThrowingFunc(), mayInlineDecl(), clang::PostOrderCFGView::PostOrderCFGView(), clang::consumed::ConsumedAnalyzer::run(), and clang::runUninitializedVariablesAnalysis().
|
inline |
Definition at line 861 of file CFG.h.
References clang::BumpVector< T >::begin().
Referenced by llvm::GraphTraits< ::clang::CFG * >::nodes_begin(), and llvm::GraphTraits< Inverse< ::clang::CFG * > >::nodes_begin().
|
inline |
Definition at line 863 of file CFG.h.
References clang::BumpVector< T >::begin().
|
inline |
Definition at line 862 of file CFG.h.
References clang::BumpVector< T >::end().
Referenced by llvm::GraphTraits< ::clang::CFG * >::nodes_end(), and llvm::GraphTraits< Inverse< ::clang::CFG * > >::nodes_end().
|
inline |
Definition at line 864 of file CFG.h.
References clang::BumpVector< T >::end().
| void CFG::print | ( | raw_ostream & | OS, |
| const LangOptions & | LO, | ||
| bool | ShowColors | ||
| ) | const |
|
inline |
Definition at line 866 of file CFG.h.
References clang::BumpVector< T >::rbegin().
|
inline |
Definition at line 868 of file CFG.h.
References clang::BumpVector< T >::rbegin().
|
inline |
Definition at line 867 of file CFG.h.
References clang::BumpVector< T >::rend().
|
inline |
Definition at line 869 of file CFG.h.
References clang::BumpVector< T >::rend().
|
inline |
|
inline |
|
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 951 of file CFG.h.
Referenced by llvm::GraphTraits< ::clang::CFG * >::size().
|
inline |
Iterates over synthetic DeclStmts in the CFG.
Each element is a (synthetic statement, source statement) pair.
Definition at line 912 of file CFG.h.
Referenced by addParentsForSyntheticStmts(), and synthetic_stmts().
|
inline |
Definition at line 917 of file CFG.h.
Referenced by addParentsForSyntheticStmts(), and synthetic_stmts().
|
inline |
Definition at line 922 of file CFG.h.
References synthetic_stmt_begin(), and synthetic_stmt_end().
|
inline |
Definition at line 880 of file CFG.h.
Referenced by clang::reachable_code::FindUnreachableCode().
|
inline |
Definition at line 883 of file CFG.h.
Referenced by clang::reachable_code::FindUnreachableCode().
| void CFG::viewCFG | ( | const LangOptions & | LO | ) | const |
Definition at line 4788 of file CFG.cpp.
References GraphHelper.
|
inline |
Definition at line 931 of file CFG.h.
References begin(), E, end(), I, and clang::ast_matchers::stmt.
Referenced by clang::runUninitializedVariablesAnalysis().
1.8.6