CFG_Call_Block

class CFG_Call_Block (concrete, logical)

calls are represented in their own blocks the block has a final instruction of type Call_Instruction

Direct parents:
Ancestor classes and implemented interfaces:

CFG_Block, CFG_Standard_Block, Execution_Node, Logical_IR_Root

Field

Kind

Type

Description

Next

semantic

class CFG_Block

The standard successor if call returns without exception. Can be NoNode for a [[noreturn]] function.

Exceptional_Next

semantic

class CFG_Block

The successor (typically a catch block or destructor cleanup) if the call throws an exception. Will be NoNode for a noexcept function. If a noexcept function ends up throwing an exception, std::terminate() will be called implicitly. Also NoNode for calls to noexcept(false) destructors in “stack unwinding” code paths. Such “double exceptions” also call std::terminate().

Code (from CFG_Standard_Block)

syntactic

list of class Instruction

Helpers (from CFG_Standard_Block)

syntactic

list of class Helper_Variable

Start_Role (from CFG_Standard_Block)

attribute

enum Cfg_Block_Start_Role

Provides an explanation why a new block was started. The Start_Physical edge provides details specific to the role. More details are documented on the individual role enumerators.

Start_Physical (from CFG_Standard_Block)

semantic to physical

class Physical_IR_Root

Physical edge related to the block start; see Start_Role for the interpretation of this edge.

Parent (from Logical_IR_Root)

semantic

class Logical_IR_Root

Physical (from Logical_IR_Root)

semantic to physical

class Physical_IR_Root