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:
inherits CFG_Branch_Block
- 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