class SCFG
Declaration
class SCFG : public SExpr { /* full declaration omitted */ };
Description
An SCFG is a control-flow graph. It consists of a set of basic blocks, each of which terminates in a branch to another basic block. There is one entry point, and one exit point.
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1688
Inherits from: SExpr
Member Variables
- private clang::threadSafety::til::MemRegionRef Arena
- private clang::threadSafety::til::SCFG::BlockArray Blocks
- private clang::threadSafety::til::BasicBlock* Entry = nullptr
- private clang::threadSafety::til::BasicBlock* Exit = nullptr
- private unsigned int NumInstructions = 0
- private bool Normal = false
Inherited from SExpr:
- protected Opcode
- protected Reserved = 0
- protected Flags = 0
- protected SExprID = 0
- protected Block = nullptr
Method Overview
- public SCFG(const clang::threadSafety::til::SCFG & Cfg, clang::threadSafety::til::SCFG::BlockArray && Ba)
- public SCFG(clang::threadSafety::til::MemRegionRef A, unsigned int Nblocks)
- public inline void add(clang::threadSafety::til::BasicBlock * BB)
- public clang::threadSafety::til::SCFG::iterator begin()
- public clang::threadSafety::til::SCFG::const_iterator begin() const
- public clang::threadSafety::til::SCFG::const_iterator cbegin() const
- public clang::threadSafety::til::SCFG::const_iterator cend() const
- public static bool classof(const clang::threadSafety::til::SExpr * E)
- public template <class C>typename C::CType compare(const clang::threadSafety::til::SCFG * E, C & Cmp) const
- public void computeNormalForm()
- public clang::threadSafety::til::SCFG::const_iterator end() const
- public clang::threadSafety::til::SCFG::iterator end()
- public const clang::threadSafety::til::BasicBlock * entry() const
- public clang::threadSafety::til::BasicBlock * entry()
- public const clang::threadSafety::til::BasicBlock * exit() const
- public clang::threadSafety::til::BasicBlock * exit()
- public bool normal() const
- public size_t numBlocks() const
- public unsigned int numInstructions()
- private void renumberInstrs()
- public void setEntry(clang::threadSafety::til::BasicBlock * BB)
- public void setExit(clang::threadSafety::til::BasicBlock * BB)
- public template <class V>typename V::R_SExpr traverse(V & Vs, typename V::R_Ctx Ctx)
- public bool valid() const
Inherited from SExpr:
Methods
¶SCFG(const clang::threadSafety::til::SCFG& Cfg,
clang::threadSafety::til::SCFG::BlockArray&&
Ba)
SCFG(const clang::threadSafety::til::SCFG& Cfg,
clang::threadSafety::til::SCFG::BlockArray&&
Ba)
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1705
Parameters
¶SCFG(clang::threadSafety::til::MemRegionRef A,
unsigned int Nblocks)
SCFG(clang::threadSafety::til::MemRegionRef A,
unsigned int Nblocks)
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1694
Parameters
- clang::threadSafety::til::MemRegionRef A
- unsigned int Nblocks
¶inline void add(
clang::threadSafety::til::BasicBlock* BB)
inline void add(
clang::threadSafety::til::BasicBlock* BB)
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1743
Parameters
¶clang::threadSafety::til::SCFG::iterator begin()
clang::threadSafety::til::SCFG::iterator begin()
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1720
¶clang::threadSafety::til::SCFG::const_iterator
begin() const
clang::threadSafety::til::SCFG::const_iterator
begin() const
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1723
¶clang::threadSafety::til::SCFG::const_iterator
cbegin() const
clang::threadSafety::til::SCFG::const_iterator
cbegin() const
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1726
¶clang::threadSafety::til::SCFG::const_iterator
cend() const
clang::threadSafety::til::SCFG::const_iterator
cend() const
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1727
¶static bool classof(
const clang::threadSafety::til::SExpr* E)
static bool classof(
const clang::threadSafety::til::SExpr* E)
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1710
Parameters
- const clang::threadSafety::til::SExpr* E
¶template <class C>
typename C::CType compare(
const clang::threadSafety::til::SCFG* E,
C& Cmp) const
template <class C>
typename C::CType compare(
const clang::threadSafety::til::SCFG* E,
C& Cmp) const
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1768
Templates
- C
Parameters
- const clang::threadSafety::til::SCFG* E
- C& Cmp
¶void computeNormalForm()
void computeNormalForm()
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1753
¶clang::threadSafety::til::SCFG::const_iterator
end() const
clang::threadSafety::til::SCFG::const_iterator
end() const
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1724
¶clang::threadSafety::til::SCFG::iterator end()
clang::threadSafety::til::SCFG::iterator end()
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1721
¶const clang::threadSafety::til::BasicBlock*
entry() const
const clang::threadSafety::til::BasicBlock*
entry() const
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1729
¶clang::threadSafety::til::BasicBlock* entry()
clang::threadSafety::til::BasicBlock* entry()
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1730
¶const clang::threadSafety::til::BasicBlock* exit()
const
const clang::threadSafety::til::BasicBlock* exit()
const
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1731
¶clang::threadSafety::til::BasicBlock* exit()
clang::threadSafety::til::BasicBlock* exit()
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1732
¶bool normal() const
bool normal() const
Description
Return true if this CFG has been normalized. After normalization, blocks are in topological order, and block and instruction IDs have been assigned.
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1718
¶size_t numBlocks() const
size_t numBlocks() const
Description
Return the number of blocks in the CFG. Block::blockID() will return a number less than numBlocks();
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1736
¶unsigned int numInstructions()
unsigned int numInstructions()
Description
Return the total number of instructions in the CFG. This is useful for building instruction side-tables; A call to SExpr::id() will return a number less than numInstructions().
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1741
¶void renumberInstrs()
void renumberInstrs()
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1775
¶void setEntry(
clang::threadSafety::til::BasicBlock* BB)
void setEntry(
clang::threadSafety::til::BasicBlock* BB)
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1750
Parameters
¶void setExit(
clang::threadSafety::til::BasicBlock* BB)
void setExit(
clang::threadSafety::til::BasicBlock* BB)
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1751
Parameters
¶template <class V>
typename V::R_SExpr traverse(
V& Vs,
typename V::R_Ctx Ctx)
template <class V>
typename V::R_SExpr traverse(
V& Vs,
typename V::R_Ctx Ctx)
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1756
Templates
- V
Parameters
- V& Vs
- typename V::R_Ctx Ctx
¶bool valid() const
bool valid() const
Description
Return true if this CFG is valid.
Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1713