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)

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1705

Parameters

const clang::threadSafety::til::SCFG& Cfg
clang::threadSafety::til::SCFG::BlockArray&& Ba

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)

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1743

Parameters

clang::threadSafety::til::BasicBlock* BB

clang::threadSafety::til::SCFG::iterator begin()

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1720

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

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1726

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)

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

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1768

Templates

C

Parameters

const clang::threadSafety::til::SCFG* E
C& Cmp

void computeNormalForm()

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1753

clang::threadSafety::til::SCFG::const_iterator
end() const

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1724

clang::threadSafety::til::SCFG::iterator end()

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1721

const clang::threadSafety::til::BasicBlock*
entry() const

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1729

clang::threadSafety::til::BasicBlock* entry()

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1730

const clang::threadSafety::til::BasicBlock* exit()
    const

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1731

clang::threadSafety::til::BasicBlock* exit()

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1732

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

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()

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()

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1775

void setEntry(
    clang::threadSafety::til::BasicBlock* BB)

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1750

Parameters

clang::threadSafety::til::BasicBlock* BB

void setExit(
    clang::threadSafety::til::BasicBlock* BB)

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1751

Parameters

clang::threadSafety::til::BasicBlock* BB

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

Description

Return true if this CFG is valid.

Declared at: clang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h:1713