class CFGBlock
Declaration
class CFGBlock { /* full declaration omitted */ };
Description
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 logical and/or | expression that consumes the op, RHS vbase inits | already handled by the most derived class; not yet But note that any of that may be NULL in case of optimized-out edges.
Declared at: clang/include/clang/Analysis/CFG.h:577
Member Variables
- public clang::CFGBlock::ElementList Elements
- The set of statements in the basic block.
- public clang::Stmt* Label = nullptr
- An (optional) label that prefixes the executable statements in the block. When this variable is non-NULL, it is either an instance of LabelStmt, SwitchCase or CXXCatchStmt.
- public clang::CFGTerminator Terminator
- The terminator for a basic block that indicates the type of control-flow that occurs between a block and its successors.
- public const clang::Stmt* LoopTarget = nullptr
- Some blocks are used to represent the "loop edge" to the start of a loop from within the loop body. This Stmt* will be refer to the loop statement for such blocks (and be null otherwise).
- public unsigned int BlockID
- A numerical ID assigned to a CFGBlock during construction of the CFG.
- private clang::CFGBlock::AdjacentBlocks Preds
- private clang::CFGBlock::AdjacentBlocks Succs
- private unsigned int HasNoReturnElement
- Optimization Note: This bit could be profitably folded with Terminator's storage if the memory usage of CFGBlock becomes an issue.
- private clang::CFG* Parent
- The parent CFG that owns this CFGBlock.
Method Overview
- public CFGBlock(unsigned int blockid, clang::BumpVectorContext & C, clang::CFG * parent)
- public static bool FilterEdge(const clang::CFGBlock::FilterOptions & F, const clang::CFGBlock * Src, const clang::CFGBlock * Dst)
- public void addSuccessor(clang::CFGBlock::AdjacentBlock Succ, clang::BumpVectorContext & C)
- public void appendAutomaticObjDtor(clang::VarDecl * VD, clang::Stmt * S, clang::BumpVectorContext & C)
- public void appendBaseDtor(const clang::CXXBaseSpecifier * BS, clang::BumpVectorContext & C)
- public void appendCXXRecordTypedCall(clang::Expr * E, const clang::ConstructionContext * CC, clang::BumpVectorContext & C)
- public void appendConstructor(clang::CXXConstructExpr * CE, const clang::ConstructionContext * CC, clang::BumpVectorContext & C)
- public void appendDeleteDtor(clang::CXXRecordDecl * RD, clang::CXXDeleteExpr * DE, clang::BumpVectorContext & C)
- public void appendInitializer(clang::CXXCtorInitializer * initializer, clang::BumpVectorContext & C)
- public void appendLifetimeEnds(clang::VarDecl * VD, clang::Stmt * S, clang::BumpVectorContext & C)
- public void appendLoopExit(const clang::Stmt * LoopStmt, clang::BumpVectorContext & C)
- public void appendMemberDtor(clang::FieldDecl * FD, clang::BumpVectorContext & C)
- public void appendNewAllocator(clang::CXXNewExpr * NE, clang::BumpVectorContext & C)
- public void appendScopeBegin(const clang::VarDecl * VD, const clang::Stmt * S, clang::BumpVectorContext & C)
- public void appendScopeEnd(const clang::VarDecl * VD, const clang::Stmt * S, clang::BumpVectorContext & C)
- public void appendStmt(clang::Stmt * statement, clang::BumpVectorContext & C)
- public void appendTemporaryDtor(clang::CXXBindTemporaryExpr * E, clang::BumpVectorContext & C)
- public clang::CFGElement back() const
- public clang::CFGBlock::iterator begin()
- public clang::CFGBlock::const_iterator begin() const
- public clang::CFGBlock::iterator beginAutomaticObjDtorsInsert(clang::CFGBlock::iterator I, size_t Cnt, clang::BumpVectorContext & C)
- public clang::CFGBlock::iterator beginLifetimeEndsInsert(clang::CFGBlock::iterator I, size_t Cnt, clang::BumpVectorContext & C)
- public clang::CFGBlock::iterator beginScopeEndInsert(clang::CFGBlock::iterator I, size_t Cnt, clang::BumpVectorContext & C)
- public void dump() const
- public void dump(const clang::CFG * cfg, const clang::LangOptions & LO, bool ShowColors = false) const
- public bool empty() const
- public clang::CFGBlock::const_iterator end() const
- public clang::CFGBlock::iterator end()
- public clang::CFGBlock::filtered_pred_iterator filtered_pred_start_end(const clang::CFGBlock::FilterOptions & f) const
- public clang::CFGBlock::filtered_succ_iterator filtered_succ_start_end(const clang::CFGBlock::FilterOptions & f) const
- public clang::CFGElement front() const
- public unsigned int getBlockID() const
- public size_t getIndexInCFG() const
- public const clang::Stmt * getLabel() const
- public clang::Stmt * getLabel()
- public const clang::Expr * getLastCondition() const
- public const clang::Stmt * getLoopTarget() const
- public clang::CFG * getParent() const
- public clang::CFGTerminator getTerminator() const
- public const clang::Stmt * getTerminatorCondition(bool StripParens = true) const
- public clang::Stmt * getTerminatorCondition(bool StripParens = true)
- public const clang::Stmt * getTerminatorStmt() const
- public clang::Stmt * getTerminatorStmt()
- public bool hasNoReturnElement() const
- public clang::CFGBlock::iterator insertAutomaticObjDtor(clang::CFGBlock::iterator I, clang::VarDecl * VD, clang::Stmt * S)
- public clang::CFGBlock::iterator insertLifetimeEnds(clang::CFGBlock::iterator I, clang::VarDecl * VD, clang::Stmt * S)
- public clang::CFGBlock::iterator insertScopeEnd(clang::CFGBlock::iterator I, clang::VarDecl * VD, clang::Stmt * S)
- public bool isInevitablySinking() const
- public clang::CFGBlock::pred_iterator pred_begin()
- public clang::CFGBlock::const_pred_iterator pred_begin() const
- public bool pred_empty() const
- public clang::CFGBlock::pred_iterator pred_end()
- public clang::CFGBlock::const_pred_iterator pred_end() const
- public clang::CFGBlock::const_pred_reverse_iterator pred_rbegin() const
- public clang::CFGBlock::pred_reverse_iterator pred_rbegin()
- public clang::CFGBlock::const_pred_reverse_iterator pred_rend() const
- public clang::CFGBlock::pred_reverse_iterator pred_rend()
- public unsigned int pred_size() const
- public clang::CFGBlock::pred_const_range preds() const
- public clang::CFGBlock::pred_range preds()
- public void prependScopeBegin(const clang::VarDecl * VD, const clang::Stmt * S, clang::BumpVectorContext & C)
- public void prependScopeEnd(const clang::VarDecl * VD, const clang::Stmt * S, clang::BumpVectorContext & C)
- public void print(llvm::raw_ostream & OS, const clang::CFG * cfg, const clang::LangOptions & LO, bool ShowColors) const
- public void printAsOperand(llvm::raw_ostream & OS, bool)
- public void printTerminator(llvm::raw_ostream & OS, const clang::LangOptions & LO) const
- public void printTerminatorJson(llvm::raw_ostream & Out, const clang::LangOptions & LO, bool AddQuotes) const
- public clang::CFGBlock::reverse_iterator rbegin()
- public clang::CFGBlock::const_reverse_iterator rbegin() const
- public clang::CFGBlock::ref_iterator ref_begin()
- public clang::CFGBlock::const_ref_iterator ref_begin() const
- public clang::CFGBlock::ref_iterator ref_end()
- public clang::CFGBlock::const_ref_iterator ref_end() const
- public clang::CFGBlock::ref_iterator_range refs()
- public clang::CFGBlock::const_ref_iterator_range refs() const
- public clang::CFGBlock::reverse_iterator rend()
- public clang::CFGBlock::const_reverse_iterator rend() const
- public clang::CFGBlock::reverse_ref_iterator rref_begin()
- public clang::CFGBlock::const_reverse_ref_iterator rref_begin() const
- public clang::CFGBlock::reverse_ref_iterator rref_end()
- public clang::CFGBlock::const_reverse_ref_iterator rref_end() const
- public clang::CFGBlock::reverse_ref_iterator_range rrefs()
- public clang::CFGBlock::const_reverse_ref_iterator_range rrefs() const
- public void setHasNoReturnElement()
- public void setLabel(clang::Stmt * Statement)
- public void setLoopTarget(const clang::Stmt * loopTarget)
- public void setTerminator(clang::CFGTerminator Term)
- public unsigned int size() const
- public clang::CFGBlock::succ_iterator succ_begin()
- public clang::CFGBlock::const_succ_iterator succ_begin() const
- public bool succ_empty() const
- public clang::CFGBlock::const_succ_iterator succ_end() const
- public clang::CFGBlock::succ_iterator succ_end()
- public clang::CFGBlock::const_succ_reverse_iterator succ_rbegin() const
- public clang::CFGBlock::succ_reverse_iterator succ_rbegin()
- public clang::CFGBlock::const_succ_reverse_iterator succ_rend() const
- public clang::CFGBlock::succ_reverse_iterator succ_rend()
- public unsigned int succ_size() const
- public clang::CFGBlock::succ_range succs()
- public clang::CFGBlock::succ_const_range succs() const
Methods
¶CFGBlock(unsigned int blockid,
clang::BumpVectorContext& C,
clang::CFG* parent)
CFGBlock(unsigned int blockid,
clang::BumpVectorContext& C,
clang::CFG* parent)
Declared at: clang/include/clang/Analysis/CFG.h:861
Parameters
- unsigned int blockid
- clang::BumpVectorContext& C
- clang::CFG* parent
¶static bool FilterEdge(
const clang::CFGBlock::FilterOptions& F,
const clang::CFGBlock* Src,
const clang::CFGBlock* Dst)
static bool FilterEdge(
const clang::CFGBlock::FilterOptions& F,
const clang::CFGBlock* Src,
const clang::CFGBlock* Dst)
Declared at: clang/include/clang/Analysis/CFG.h:990
Parameters
- const clang::CFGBlock::FilterOptions& F
- const clang::CFGBlock* Src
- const clang::CFGBlock* Dst
¶void addSuccessor(
clang::CFGBlock::AdjacentBlock Succ,
clang::BumpVectorContext& C)
void addSuccessor(
clang::CFGBlock::AdjacentBlock Succ,
clang::BumpVectorContext& C)
Description
Adds a (potentially unreachable) successor block to the current block.
Declared at: clang/include/clang/Analysis/CFG.h:1094
Parameters
¶void appendAutomaticObjDtor(
clang::VarDecl* VD,
clang::Stmt* S,
clang::BumpVectorContext& C)
void appendAutomaticObjDtor(
clang::VarDecl* VD,
clang::Stmt* S,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1151
Parameters
¶void appendBaseDtor(
const clang::CXXBaseSpecifier* BS,
clang::BumpVectorContext& C)
void appendBaseDtor(
const clang::CXXBaseSpecifier* BS,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1139
Parameters
- const clang::CXXBaseSpecifier* BS
- clang::BumpVectorContext& C
¶void appendCXXRecordTypedCall(
clang::Expr* E,
const clang::ConstructionContext* CC,
clang::BumpVectorContext& C)
void appendCXXRecordTypedCall(
clang::Expr* E,
const clang::ConstructionContext* CC,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1105
Parameters
- clang::Expr* E
- const clang::ConstructionContext* CC
- clang::BumpVectorContext& C
¶void appendConstructor(
clang::CXXConstructExpr* CE,
const clang::ConstructionContext* CC,
clang::BumpVectorContext& C)
void appendConstructor(
clang::CXXConstructExpr* CE,
const clang::ConstructionContext* CC,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1100
Parameters
¶void appendDeleteDtor(clang::CXXRecordDecl* RD,
clang::CXXDeleteExpr* DE,
clang::BumpVectorContext& C)
void appendDeleteDtor(clang::CXXRecordDecl* RD,
clang::CXXDeleteExpr* DE,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1163
Parameters
¶void appendInitializer(
clang::CXXCtorInitializer* initializer,
clang::BumpVectorContext& C)
void appendInitializer(
clang::CXXCtorInitializer* initializer,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1111
Parameters
- clang::CXXCtorInitializer* initializer
- clang::BumpVectorContext& C
¶void appendLifetimeEnds(
clang::VarDecl* VD,
clang::Stmt* S,
clang::BumpVectorContext& C)
void appendLifetimeEnds(
clang::VarDecl* VD,
clang::Stmt* S,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1155
Parameters
¶void appendLoopExit(const clang::Stmt* LoopStmt,
clang::BumpVectorContext& C)
void appendLoopExit(const clang::Stmt* LoopStmt,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1159
Parameters
- const clang::Stmt* LoopStmt
- clang::BumpVectorContext& C
¶void appendMemberDtor(clang::FieldDecl* FD,
clang::BumpVectorContext& C)
void appendMemberDtor(clang::FieldDecl* FD,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1143
Parameters
¶void appendNewAllocator(
clang::CXXNewExpr* NE,
clang::BumpVectorContext& C)
void appendNewAllocator(
clang::CXXNewExpr* NE,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1116
Parameters
¶void appendScopeBegin(const clang::VarDecl* VD,
const clang::Stmt* S,
clang::BumpVectorContext& C)
void appendScopeBegin(const clang::VarDecl* VD,
const clang::Stmt* S,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1121
Parameters
- const clang::VarDecl* VD
- const clang::Stmt* S
- clang::BumpVectorContext& C
¶void appendScopeEnd(const clang::VarDecl* VD,
const clang::Stmt* S,
clang::BumpVectorContext& C)
void appendScopeEnd(const clang::VarDecl* VD,
const clang::Stmt* S,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1131
Parameters
- const clang::VarDecl* VD
- const clang::Stmt* S
- clang::BumpVectorContext& C
¶void appendStmt(clang::Stmt* statement,
clang::BumpVectorContext& C)
void appendStmt(clang::Stmt* statement,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1096
Parameters
- clang::Stmt* statement
- clang::BumpVectorContext& C
¶void appendTemporaryDtor(
clang::CXXBindTemporaryExpr* E,
clang::BumpVectorContext& C)
void appendTemporaryDtor(
clang::CXXBindTemporaryExpr* E,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1147
Parameters
¶clang::CFGElement back() const
clang::CFGElement back() const
Declared at: clang/include/clang/Analysis/CFG.h:874
¶clang::CFGBlock::iterator begin()
clang::CFGBlock::iterator begin()
Declared at: clang/include/clang/Analysis/CFG.h:876
¶clang::CFGBlock::const_iterator begin() const
clang::CFGBlock::const_iterator begin() const
Declared at: clang/include/clang/Analysis/CFG.h:878
¶clang::CFGBlock::iterator
beginAutomaticObjDtorsInsert(
clang::CFGBlock::iterator I,
size_t Cnt,
clang::BumpVectorContext& C)
clang::CFGBlock::iterator
beginAutomaticObjDtorsInsert(
clang::CFGBlock::iterator I,
size_t Cnt,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1170
Parameters
- clang::CFGBlock::iterator I
- size_t Cnt
- clang::BumpVectorContext& C
¶clang::CFGBlock::iterator beginLifetimeEndsInsert(
clang::CFGBlock::iterator I,
size_t Cnt,
clang::BumpVectorContext& C)
clang::CFGBlock::iterator beginLifetimeEndsInsert(
clang::CFGBlock::iterator I,
size_t Cnt,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1183
Parameters
- clang::CFGBlock::iterator I
- size_t Cnt
- clang::BumpVectorContext& C
¶clang::CFGBlock::iterator beginScopeEndInsert(
clang::CFGBlock::iterator I,
size_t Cnt,
clang::BumpVectorContext& C)
clang::CFGBlock::iterator beginScopeEndInsert(
clang::CFGBlock::iterator I,
size_t Cnt,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1196
Parameters
- clang::CFGBlock::iterator I
- size_t Cnt
- clang::BumpVectorContext& C
¶void dump() const
void dump() const
Declared at: clang/include/clang/Analysis/CFG.h:1079
¶void dump(const clang::CFG* cfg,
const clang::LangOptions& LO,
bool ShowColors = false) const
void dump(const clang::CFG* cfg,
const clang::LangOptions& LO,
bool ShowColors = false) const
Declared at: clang/include/clang/Analysis/CFG.h:1081
Parameters
- const clang::CFG* cfg
- const clang::LangOptions& LO
- bool ShowColors = false
¶bool empty() const
bool empty() const
Declared at: clang/include/clang/Analysis/CFG.h:919
¶clang::CFGBlock::const_iterator end() const
clang::CFGBlock::const_iterator end() const
Declared at: clang/include/clang/Analysis/CFG.h:879
¶clang::CFGBlock::iterator end()
clang::CFGBlock::iterator end()
Declared at: clang/include/clang/Analysis/CFG.h:877
¶clang::CFGBlock::filtered_pred_iterator
filtered_pred_start_end(
const clang::CFGBlock::FilterOptions& f) const
clang::CFGBlock::filtered_pred_iterator
filtered_pred_start_end(
const clang::CFGBlock::FilterOptions& f) const
Declared at: clang/include/clang/Analysis/CFG.h:1030
Parameters
- const clang::CFGBlock::FilterOptions& f
¶clang::CFGBlock::filtered_succ_iterator
filtered_succ_start_end(
const clang::CFGBlock::FilterOptions& f) const
clang::CFGBlock::filtered_succ_iterator
filtered_succ_start_end(
const clang::CFGBlock::FilterOptions& f) const
Declared at: clang/include/clang/Analysis/CFG.h:1034
Parameters
- const clang::CFGBlock::FilterOptions& f
¶clang::CFGElement front() const
clang::CFGElement front() const
Declared at: clang/include/clang/Analysis/CFG.h:873
¶unsigned int getBlockID() const
unsigned int getBlockID() const
Declared at: clang/include/clang/Analysis/CFG.h:1075
¶size_t getIndexInCFG() const
size_t getIndexInCFG() const
Declared at: clang/include/clang/Analysis/CFG.h:871
¶const clang::Stmt* getLabel() const
const clang::Stmt* getLabel() const
Declared at: clang/include/clang/Analysis/CFG.h:1071
¶clang::Stmt* getLabel()
clang::Stmt* getLabel()
Declared at: clang/include/clang/Analysis/CFG.h:1070
¶const clang::Expr* getLastCondition() const
const clang::Expr* getLastCondition() const
Declared at: clang/include/clang/Analysis/CFG.h:1060
Returns
the last (\c rbegin()) condition, e.g. observe the following code snippet: if (A & & B & & C) A block would be created for \c A, \c B, and \c C. For the latter,\c getTerminatorStmt() would retrieve the entire condition, rather than C itself, while this method would only return C.
¶const clang::Stmt* getLoopTarget() const
const clang::Stmt* getLoopTarget() const
Declared at: clang/include/clang/Analysis/CFG.h:1068
¶clang::CFG* getParent() const
clang::CFG* getParent() const
Declared at: clang/include/clang/Analysis/CFG.h:1077
¶clang::CFGTerminator getTerminator() const
clang::CFGTerminator getTerminator() const
Declared at: clang/include/clang/Analysis/CFG.h:1049
¶const clang::Stmt* getTerminatorCondition(
bool StripParens = true) const
const clang::Stmt* getTerminatorCondition(
bool StripParens = true) const
Declared at: clang/include/clang/Analysis/CFG.h:1064
Parameters
- bool StripParens = true
¶clang::Stmt* getTerminatorCondition(
bool StripParens = true)
clang::Stmt* getTerminatorCondition(
bool StripParens = true)
Declared at: clang/include/clang/Analysis/CFG.h:1062
Parameters
- bool StripParens = true
¶const clang::Stmt* getTerminatorStmt() const
const clang::Stmt* getTerminatorStmt() const
Declared at: clang/include/clang/Analysis/CFG.h:1052
¶clang::Stmt* getTerminatorStmt()
clang::Stmt* getTerminatorStmt()
Declared at: clang/include/clang/Analysis/CFG.h:1051
¶bool hasNoReturnElement() const
bool hasNoReturnElement() const
Declared at: clang/include/clang/Analysis/CFG.h:1073
¶clang::CFGBlock::iterator insertAutomaticObjDtor(
clang::CFGBlock::iterator I,
clang::VarDecl* VD,
clang::Stmt* S)
clang::CFGBlock::iterator insertAutomaticObjDtor(
clang::CFGBlock::iterator I,
clang::VarDecl* VD,
clang::Stmt* S)
Declared at: clang/include/clang/Analysis/CFG.h:1175
Parameters
- clang::CFGBlock::iterator I
- clang::VarDecl* VD
- clang::Stmt* S
¶clang::CFGBlock::iterator insertLifetimeEnds(
clang::CFGBlock::iterator I,
clang::VarDecl* VD,
clang::Stmt* S)
clang::CFGBlock::iterator insertLifetimeEnds(
clang::CFGBlock::iterator I,
clang::VarDecl* VD,
clang::Stmt* S)
Declared at: clang/include/clang/Analysis/CFG.h:1188
Parameters
- clang::CFGBlock::iterator I
- clang::VarDecl* VD
- clang::Stmt* S
¶clang::CFGBlock::iterator insertScopeEnd(
clang::CFGBlock::iterator I,
clang::VarDecl* VD,
clang::Stmt* S)
clang::CFGBlock::iterator insertScopeEnd(
clang::CFGBlock::iterator I,
clang::VarDecl* VD,
clang::Stmt* S)
Declared at: clang/include/clang/Analysis/CFG.h:1200
Parameters
- clang::CFGBlock::iterator I
- clang::VarDecl* VD
- clang::Stmt* S
¶bool isInevitablySinking() const
bool isInevitablySinking() const
Description
Returns true if the block would eventually end with a sink (a noreturn node).
Declared at: clang/include/clang/Analysis/CFG.h:1047
¶clang::CFGBlock::pred_iterator pred_begin()
clang::CFGBlock::pred_iterator pred_begin()
Declared at: clang/include/clang/Analysis/CFG.h:938
¶clang::CFGBlock::const_pred_iterator pred_begin()
const
clang::CFGBlock::const_pred_iterator pred_begin()
const
Declared at: clang/include/clang/Analysis/CFG.h:940
¶bool pred_empty() const
bool pred_empty() const
Declared at: clang/include/clang/Analysis/CFG.h:978
¶clang::CFGBlock::pred_iterator pred_end()
clang::CFGBlock::pred_iterator pred_end()
Declared at: clang/include/clang/Analysis/CFG.h:939
¶clang::CFGBlock::const_pred_iterator pred_end()
const
clang::CFGBlock::const_pred_iterator pred_end()
const
Declared at: clang/include/clang/Analysis/CFG.h:941
¶clang::CFGBlock::const_pred_reverse_iterator
pred_rbegin() const
clang::CFGBlock::const_pred_reverse_iterator
pred_rbegin() const
Declared at: clang/include/clang/Analysis/CFG.h:945
¶clang::CFGBlock::pred_reverse_iterator
pred_rbegin()
clang::CFGBlock::pred_reverse_iterator
pred_rbegin()
Declared at: clang/include/clang/Analysis/CFG.h:943
¶clang::CFGBlock::const_pred_reverse_iterator
pred_rend() const
clang::CFGBlock::const_pred_reverse_iterator
pred_rend() const
Declared at: clang/include/clang/Analysis/CFG.h:946
¶clang::CFGBlock::pred_reverse_iterator pred_rend()
clang::CFGBlock::pred_reverse_iterator pred_rend()
Declared at: clang/include/clang/Analysis/CFG.h:944
¶unsigned int pred_size() const
unsigned int pred_size() const
Declared at: clang/include/clang/Analysis/CFG.h:977
¶clang::CFGBlock::pred_const_range preds() const
clang::CFGBlock::pred_const_range preds() const
Declared at: clang/include/clang/Analysis/CFG.h:952
¶clang::CFGBlock::pred_range preds()
clang::CFGBlock::pred_range preds()
Declared at: clang/include/clang/Analysis/CFG.h:948
¶void prependScopeBegin(
const clang::VarDecl* VD,
const clang::Stmt* S,
clang::BumpVectorContext& C)
void prependScopeBegin(
const clang::VarDecl* VD,
const clang::Stmt* S,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1126
Parameters
- const clang::VarDecl* VD
- const clang::Stmt* S
- clang::BumpVectorContext& C
¶void prependScopeEnd(const clang::VarDecl* VD,
const clang::Stmt* S,
clang::BumpVectorContext& C)
void prependScopeEnd(const clang::VarDecl* VD,
const clang::Stmt* S,
clang::BumpVectorContext& C)
Declared at: clang/include/clang/Analysis/CFG.h:1135
Parameters
- const clang::VarDecl* VD
- const clang::Stmt* S
- clang::BumpVectorContext& C
¶void print(llvm::raw_ostream& OS,
const clang::CFG* cfg,
const clang::LangOptions& LO,
bool ShowColors) const
void print(llvm::raw_ostream& OS,
const clang::CFG* cfg,
const clang::LangOptions& LO,
bool ShowColors) const
Declared at: clang/include/clang/Analysis/CFG.h:1082
Parameters
- llvm::raw_ostream& OS
- const clang::CFG* cfg
- const clang::LangOptions& LO
- bool ShowColors
¶void printAsOperand(llvm::raw_ostream& OS, bool)
void printAsOperand(llvm::raw_ostream& OS, bool)
Declared at: clang/include/clang/Analysis/CFG.h:1089
Parameters
- llvm::raw_ostream& OS
- bool
¶void printTerminator(
llvm::raw_ostream& OS,
const clang::LangOptions& LO) const
void printTerminator(
llvm::raw_ostream& OS,
const clang::LangOptions& LO) const
Declared at: clang/include/clang/Analysis/CFG.h:1085
Parameters
- llvm::raw_ostream& OS
- const clang::LangOptions& LO
¶void printTerminatorJson(
llvm::raw_ostream& Out,
const clang::LangOptions& LO,
bool AddQuotes) const
void printTerminatorJson(
llvm::raw_ostream& Out,
const clang::LangOptions& LO,
bool AddQuotes) const
Declared at: clang/include/clang/Analysis/CFG.h:1086
Parameters
- llvm::raw_ostream& Out
- const clang::LangOptions& LO
- bool AddQuotes
¶clang::CFGBlock::reverse_iterator rbegin()
clang::CFGBlock::reverse_iterator rbegin()
Declared at: clang/include/clang/Analysis/CFG.h:881
¶clang::CFGBlock::const_reverse_iterator rbegin()
const
clang::CFGBlock::const_reverse_iterator rbegin()
const
Declared at: clang/include/clang/Analysis/CFG.h:883
¶clang::CFGBlock::ref_iterator ref_begin()
clang::CFGBlock::ref_iterator ref_begin()
Declared at: clang/include/clang/Analysis/CFG.h:901
¶clang::CFGBlock::const_ref_iterator ref_begin()
const
clang::CFGBlock::const_ref_iterator ref_begin()
const
Declared at: clang/include/clang/Analysis/CFG.h:903
¶clang::CFGBlock::ref_iterator ref_end()
clang::CFGBlock::ref_iterator ref_end()
Declared at: clang/include/clang/Analysis/CFG.h:902
¶clang::CFGBlock::const_ref_iterator ref_end()
const
clang::CFGBlock::const_ref_iterator ref_end()
const
Declared at: clang/include/clang/Analysis/CFG.h:904
¶clang::CFGBlock::ref_iterator_range refs()
clang::CFGBlock::ref_iterator_range refs()
Declared at: clang/include/clang/Analysis/CFG.h:911
¶clang::CFGBlock::const_ref_iterator_range refs()
const
clang::CFGBlock::const_ref_iterator_range refs()
const
Declared at: clang/include/clang/Analysis/CFG.h:912
¶clang::CFGBlock::reverse_iterator rend()
clang::CFGBlock::reverse_iterator rend()
Declared at: clang/include/clang/Analysis/CFG.h:882
¶clang::CFGBlock::const_reverse_iterator rend()
const
clang::CFGBlock::const_reverse_iterator rend()
const
Declared at: clang/include/clang/Analysis/CFG.h:884
¶clang::CFGBlock::reverse_ref_iterator rref_begin()
clang::CFGBlock::reverse_ref_iterator rref_begin()
Declared at: clang/include/clang/Analysis/CFG.h:906
¶clang::CFGBlock::const_reverse_ref_iterator
rref_begin() const
clang::CFGBlock::const_reverse_ref_iterator
rref_begin() const
Declared at: clang/include/clang/Analysis/CFG.h:908
¶clang::CFGBlock::reverse_ref_iterator rref_end()
clang::CFGBlock::reverse_ref_iterator rref_end()
Declared at: clang/include/clang/Analysis/CFG.h:907
¶clang::CFGBlock::const_reverse_ref_iterator
rref_end() const
clang::CFGBlock::const_reverse_ref_iterator
rref_end() const
Declared at: clang/include/clang/Analysis/CFG.h:909
¶clang::CFGBlock::reverse_ref_iterator_range
rrefs()
clang::CFGBlock::reverse_ref_iterator_range
rrefs()
Declared at: clang/include/clang/Analysis/CFG.h:913
¶clang::CFGBlock::const_reverse_ref_iterator_range
rrefs() const
clang::CFGBlock::const_reverse_ref_iterator_range
rrefs() const
Declared at: clang/include/clang/Analysis/CFG.h:914
¶void setHasNoReturnElement()
void setHasNoReturnElement()
Declared at: clang/include/clang/Analysis/CFG.h:1043
¶void setLabel(clang::Stmt* Statement)
void setLabel(clang::Stmt* Statement)
Declared at: clang/include/clang/Analysis/CFG.h:1041
Parameters
- clang::Stmt* Statement
¶void setLoopTarget(const clang::Stmt* loopTarget)
void setLoopTarget(const clang::Stmt* loopTarget)
Declared at: clang/include/clang/Analysis/CFG.h:1042
Parameters
- const clang::Stmt* loopTarget
¶void setTerminator(clang::CFGTerminator Term)
void setTerminator(clang::CFGTerminator Term)
Declared at: clang/include/clang/Analysis/CFG.h:1040
Parameters
- clang::CFGTerminator Term
¶unsigned int size() const
unsigned int size() const
Declared at: clang/include/clang/Analysis/CFG.h:918
¶clang::CFGBlock::succ_iterator succ_begin()
clang::CFGBlock::succ_iterator succ_begin()
Declared at: clang/include/clang/Analysis/CFG.h:956
¶clang::CFGBlock::const_succ_iterator succ_begin()
const
clang::CFGBlock::const_succ_iterator succ_begin()
const
Declared at: clang/include/clang/Analysis/CFG.h:958
¶bool succ_empty() const
bool succ_empty() const
Declared at: clang/include/clang/Analysis/CFG.h:975
¶clang::CFGBlock::const_succ_iterator succ_end()
const
clang::CFGBlock::const_succ_iterator succ_end()
const
Declared at: clang/include/clang/Analysis/CFG.h:959
¶clang::CFGBlock::succ_iterator succ_end()
clang::CFGBlock::succ_iterator succ_end()
Declared at: clang/include/clang/Analysis/CFG.h:957
¶clang::CFGBlock::const_succ_reverse_iterator
succ_rbegin() const
clang::CFGBlock::const_succ_reverse_iterator
succ_rbegin() const
Declared at: clang/include/clang/Analysis/CFG.h:963
¶clang::CFGBlock::succ_reverse_iterator
succ_rbegin()
clang::CFGBlock::succ_reverse_iterator
succ_rbegin()
Declared at: clang/include/clang/Analysis/CFG.h:961
¶clang::CFGBlock::const_succ_reverse_iterator
succ_rend() const
clang::CFGBlock::const_succ_reverse_iterator
succ_rend() const
Declared at: clang/include/clang/Analysis/CFG.h:964
¶clang::CFGBlock::succ_reverse_iterator succ_rend()
clang::CFGBlock::succ_reverse_iterator succ_rend()
Declared at: clang/include/clang/Analysis/CFG.h:962
¶unsigned int succ_size() const
unsigned int succ_size() const
Declared at: clang/include/clang/Analysis/CFG.h:974
¶clang::CFGBlock::succ_range succs()
clang::CFGBlock::succ_range succs()
Declared at: clang/include/clang/Analysis/CFG.h:966
¶clang::CFGBlock::succ_const_range succs() const
clang::CFGBlock::succ_const_range succs() const
Declared at: clang/include/clang/Analysis/CFG.h:970