Cfg_Block_Start_Role¶
- enum Cfg_Block_Start_Role¶
Field
Constant in module
Description
None
ir.role_none
If_Then
ir.role_if_then
This block represents the then-branch of an if. Also used for
ainc ? a : b. Start_Physical will be If_Statement or Conditional_Operator.If_Else
ir.role_if_else
This block represents the else-branch of an if. Also used for
binc ? a : b. Start_Physical will be If_Statement or Conditional_Operator. Note: Not used for anifwithout else; those instead have the else-edge directly jumping to the If_After.If_After
ir.role_if_after
This block represents the control-flow joined back together after an
if. Also appears afterc ? a : b(except when the ternary appears in a condition). Start_Physical will be the If_Statement or Conditional_Operator that just ended. If leaving theifinvolves cleanup (calling destructor for variable declared in condition), it’s the first cleanup block that will be marked If_After. Otherwise, it’s the first block following theif.Loop_Condition
ir.role_loop_condition
The condition of a loop statement. Start_Physical points to that loop.
Loop_Body
ir.role_loop_body
The body of a loop statement. Start_Physical points to that loop.
Loop_Exit
ir.role_loop_exit
This block starts directly after exiting some loop. Start_Physical points to that loop. If leaving the loop involves cleanup (e.g., destructor calls), the first cleanup block will be marked as the Loop_Exit. Otherwise, it’s the first block following the loop.
Short_Circuit_Eval_Rhs
ir.role_short_circuit_eval_rhs
Represents the right-hand side of a short-circuiting condition. Start_Physical will be And_Then or Or_Else.
Bool_True
ir.role_bool_true
condition-like boolean expression evaluated to true, this block sets a variable to true.
Bool_False
ir.role_bool_false
condition-like boolean expression evaluated to true, this block sets a variable to false.
Bool_After
ir.role_bool_after
condition-like boolean expression; control flow joins back together from Bool_True and Bool_False branches.
Label
ir.role_label
This block can be jumped to via a label. Start_Physical is that label.
Loop_Break_Label
ir.role_loop_break_label
Compiler-generated label for target of
break;within a loop.Loop_Continue_Label
ir.role_loop_continue_label
Compiler-generated label for target of
continue;Switch_Break_Label
ir.role_switch_break_label
Compiler-generated label for target of
break;within a switch.Leave_Label
ir.role_leave_label
Compiler-generated label for target of
__leave;