CFG_Finally_Exit_Block

class CFG_Finally_Exit_Block (concrete, logical)

Postdominates the code from a finally block (C# or MSVC __try/__finally) The protocol is as follows: The last assignment is an assignment to a boolean variable. It serves as a check whether we should exit the routine. If it is true, the Exit_Next branch is taken, otherwise the Normal_Next choice is taken.

For C++ (MSVC __try/__finally), this block will be empty, and there is no indication of which edge the control flow will use. See BAUHAUS-23701.

Direct parents:
Ancestor classes and implemented interfaces:

CFG_Block, CFG_Branch_Block, CFG_Standard_Block, Execution_Node, Logical_IR_Root

Field

Kind

Type

Description

Rethrow_Target

semantic

class CFG_Block

jump target for the case that finally is carried out with a pending exception

Exit_Next

semantic

class CFG_Block

jump target for the case that control flow leaves the try block normally

Normal_Next

semantic

class CFG_Block

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