clang  10.0.0svn
Classes | Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
clang::threadSafety::til::BasicBlock Class Reference

A basic block is part of an SCFG. More...

#include "clang/Analysis/Analyses/ThreadSafetyTIL.h"

Inheritance diagram for clang::threadSafety::til::BasicBlock:
Inheritance graph
Collaboration diagram for clang::threadSafety::til::BasicBlock:
Collaboration graph


struct  TopologyNode

Public Types

using InstrArray = SimpleArray< SExpr * >
using BlockArray = SimpleArray< BasicBlock * >

Public Member Functions

 BasicBlock (MemRegionRef A)
 BasicBlock (BasicBlock &B, MemRegionRef A, InstrArray &&As, InstrArray &&Is, Terminator *T)
int blockID () const
 Returns the block ID. Every block has a unique ID in the CFG. More...
size_t numPredecessors () const
 Returns the number of predecessors. More...
size_t numSuccessors () const
const SCFGcfg () const
SCFGcfg ()
const BasicBlockparent () const
BasicBlockparent ()
const InstrArrayarguments () const
InstrArrayarguments ()
InstrArrayinstructions ()
const InstrArrayinstructions () const
BlockArraypredecessors ()
 Returns a list of predecessors. More...
const BlockArraypredecessors () const
ArrayRef< BasicBlock * > successors ()
ArrayRef< BasicBlock * > successors () const
const Terminatorterminator () const
Terminatorterminator ()
void setTerminator (Terminator *E)
bool Dominates (const BasicBlock &Other)
bool PostDominates (const BasicBlock &Other)
void addArgument (Phi *V)
 Add a new argument. More...
void addInstruction (SExpr *V)
 Add a new instruction. More...
unsigned addPredecessor (BasicBlock *Pred)
void reserveArguments (unsigned Nargs)
void reserveInstructions (unsigned Nins)
void reservePredecessors (unsigned NumPreds)
unsigned findPredecessorIndex (const BasicBlock *BB) const
 Return the index of BB, or Predecessors.size if BB is not a predecessor. More...
template<class V >
V::R_BasicBlock traverse (V &Vs, typename V::R_Ctx Ctx)
template<class C >
C::CType compare (const BasicBlock *E, C &Cmp) const
- Public Member Functions inherited from clang::threadSafety::til::SExpr
 SExpr ()=delete
TIL_Opcode opcode () const
void * operator new (size_t S, MemRegionRef &R)
void * operator new (size_t)=delete
 SExpr objects must be created in an arena. More...
void operator delete (void *)=delete
 SExpr objects cannot be deleted. More...
unsigned id () const
 Returns the instruction ID for this expression. More...
BasicBlockblock () const
 Returns the block, if this is an instruction in a basic block, otherwise returns null. More...
void setID (BasicBlock *B, unsigned id)
 Set the basic block and instruction ID for this expression. More...

Static Public Member Functions

static bool classof (const SExpr *E)


class SCFG

Additional Inherited Members

- Protected Member Functions inherited from clang::threadSafety::til::SExpr
 SExpr (TIL_Opcode Op)
 SExpr (const SExpr &E)
- Protected Attributes inherited from clang::threadSafety::til::SExpr
const unsigned char Opcode
unsigned char Reserved = 0
unsigned short Flags = 0
unsigned SExprID = 0
BasicBlockBlock = nullptr

Detailed Description

A basic block is part of an SCFG.

It can be treated as a function in continuation passing style. A block consists of a sequence of phi nodes, which are "arguments" to the function, followed by a sequence of instructions. It ends with a Terminator, which is a Branch or Goto to another basic block in the same SCFG.

Definition at line 1499 of file ThreadSafetyTIL.h.

Member Typedef Documentation

◆ BlockArray

Definition at line 1502 of file ThreadSafetyTIL.h.

◆ InstrArray

Definition at line 1501 of file ThreadSafetyTIL.h.

Constructor & Destructor Documentation

◆ BasicBlock() [1/2]

clang::threadSafety::til::BasicBlock::BasicBlock ( MemRegionRef  A)

Definition at line 1530 of file ThreadSafetyTIL.h.

◆ BasicBlock() [2/2]

clang::threadSafety::til::BasicBlock::BasicBlock ( BasicBlock B,
MemRegionRef  A,
InstrArray &&  As,
InstrArray &&  Is,
Terminator T 

Definition at line 1532 of file ThreadSafetyTIL.h.

Member Function Documentation

◆ addArgument()

void clang::threadSafety::til::BasicBlock::addArgument ( Phi V)

Add a new argument.

Definition at line 1581 of file ThreadSafetyTIL.h.

◆ addInstruction()

void clang::threadSafety::til::BasicBlock::addInstruction ( SExpr V)

Add a new instruction.

Definition at line 1587 of file ThreadSafetyTIL.h.

◆ addPredecessor()

unsigned BasicBlock::addPredecessor ( BasicBlock Pred)

Definition at line 58 of file ThreadSafetyTIL.cpp.

◆ arguments() [1/2]

const InstrArray& clang::threadSafety::til::BasicBlock::arguments ( ) const

◆ arguments() [2/2]

InstrArray& clang::threadSafety::til::BasicBlock::arguments ( )

Definition at line 1553 of file ThreadSafetyTIL.h.

◆ blockID()

int clang::threadSafety::til::BasicBlock::blockID ( ) const

◆ cfg() [1/2]

const SCFG* clang::threadSafety::til::BasicBlock::cfg ( ) const

Definition at line 1546 of file ThreadSafetyTIL.h.

◆ cfg() [2/2]

SCFG* clang::threadSafety::til::BasicBlock::cfg ( )

Definition at line 1547 of file ThreadSafetyTIL.h.

◆ classof()

static bool clang::threadSafety::til::BasicBlock::classof ( const SExpr E)

Definition at line 1537 of file ThreadSafetyTIL.h.

References clang::threadSafety::til::SExpr::opcode().

◆ compare()

template<class C >
C::CType clang::threadSafety::til::BasicBlock::compare ( const BasicBlock E,
C &  Cmp 
) const

Definition at line 1636 of file ThreadSafetyTIL.h.

◆ Dominates()

bool clang::threadSafety::til::BasicBlock::Dominates ( const BasicBlock Other)

Definition at line 1572 of file ThreadSafetyTIL.h.

◆ findPredecessorIndex()

unsigned clang::threadSafety::til::BasicBlock::findPredecessorIndex ( const BasicBlock BB) const

Return the index of BB, or Predecessors.size if BB is not a predecessor.

Definition at line 1606 of file ThreadSafetyTIL.h.

References distance().

◆ instructions() [1/2]

InstrArray& clang::threadSafety::til::BasicBlock::instructions ( )

◆ instructions() [2/2]

const InstrArray& clang::threadSafety::til::BasicBlock::instructions ( ) const

Definition at line 1556 of file ThreadSafetyTIL.h.

◆ numPredecessors()

size_t clang::threadSafety::til::BasicBlock::numPredecessors ( ) const

Returns the number of predecessors.

Definition at line 1543 of file ThreadSafetyTIL.h.

◆ numSuccessors()

size_t clang::threadSafety::til::BasicBlock::numSuccessors ( ) const

Definition at line 1544 of file ThreadSafetyTIL.h.

◆ parent() [1/2]

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

◆ parent() [2/2]

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

Definition at line 1550 of file ThreadSafetyTIL.h.

◆ PostDominates()

bool clang::threadSafety::til::BasicBlock::PostDominates ( const BasicBlock Other)

Definition at line 1576 of file ThreadSafetyTIL.h.

◆ predecessors() [1/2]

BlockArray& clang::threadSafety::til::BasicBlock::predecessors ( )

Returns a list of predecessors.

The order of predecessors in the list is important; each phi node has exactly one argument for each precessor, in the same order.

Definition at line 1561 of file ThreadSafetyTIL.h.

◆ predecessors() [2/2]

const BlockArray& clang::threadSafety::til::BasicBlock::predecessors ( ) const

Definition at line 1562 of file ThreadSafetyTIL.h.

◆ reserveArguments()

void clang::threadSafety::til::BasicBlock::reserveArguments ( unsigned  Nargs)

Definition at line 1597 of file ThreadSafetyTIL.h.

◆ reserveInstructions()

void clang::threadSafety::til::BasicBlock::reserveInstructions ( unsigned  Nins)

Definition at line 1600 of file ThreadSafetyTIL.h.

◆ reservePredecessors()

void BasicBlock::reservePredecessors ( unsigned  NumPreds)

Definition at line 71 of file ThreadSafetyTIL.cpp.

◆ setTerminator()

void clang::threadSafety::til::BasicBlock::setTerminator ( Terminator E)

Definition at line 1570 of file ThreadSafetyTIL.h.

◆ successors() [1/2]

ArrayRef<BasicBlock*> clang::threadSafety::til::BasicBlock::successors ( )

Definition at line 1564 of file ThreadSafetyTIL.h.

◆ successors() [2/2]

ArrayRef<BasicBlock*> clang::threadSafety::til::BasicBlock::successors ( ) const

Definition at line 1565 of file ThreadSafetyTIL.h.

◆ terminator() [1/2]

const Terminator* clang::threadSafety::til::BasicBlock::terminator ( ) const

◆ terminator() [2/2]

Terminator* clang::threadSafety::til::BasicBlock::terminator ( )

Definition at line 1568 of file ThreadSafetyTIL.h.

◆ traverse()

template<class V >
V::R_BasicBlock clang::threadSafety::til::BasicBlock::traverse ( V Vs,
typename V::R_Ctx  Ctx 

Definition at line 1612 of file ThreadSafetyTIL.h.

Friends And Related Function Documentation


friend class SCFG

Definition at line 1642 of file ThreadSafetyTIL.h.

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