CFG_Loop_Header_Jump_Block

class CFG_Loop_Header_Jump_Block (concrete, logical)

Block right before entering a structured loop. Dominates the loop (unless unstructured jumps into the loop exist, e.g., via goto) and ensures that the loop has exactly one predecessor.

For entry-controlled loops (for/while), Next points to the loop’s condition (a block with a Start_Role of Loop_Condition).

For exit-controlled loops (do while), Next points to the loop’s body (a block with a Start_Role of Loop_Body).

In the case of for loops, initialization statements are placed before or within this block.

Direct parents:
Ancestor classes and implemented interfaces:

CFG_Block, CFG_Jump_Block, CFG_Single_Successor_Block, CFG_Standard_Block, CFG_Structured_Jump_Block, Execution_Node, Logical_IR_Root

Field

Kind

Type

Description

Next (from CFG_Single_Successor_Block)

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