To: J3 J3/26-183r1 From: Malcolm Cohen Subject: Invalid branching Date: 2026-June-18 1. Introduction Our rules for branching within constructs that one is not permitted to branch out of, viz CHANGE TEAM, CRITICAL, and DO CONCURRENT, on the face of it permit branching to the beginning statement of the construct. But, that statement is not part of the block, and branching will in fact re-enter the construct thus effectively branching out. This paper contains edits to correct this. This is already interp F23/019 (see 26-111), so will be fixed in the upcoming Corrigendum 2, which is expected before the DIS stage. Even without that fix, the absence of unambiguous semantics means this does not need to be considered to be a compatibility problem. 2. Approach We could state in 11.1.2.1 that for the purposes of branching, the initial statement of a construct is not considered to be part of the construct. That is the approach suggested by F23/019. That interp assumes that DO CONCURRENT and CRITICAL are already handled correctly, but it is hard to find normative text that clearly states this. As this is perhaps too subtle an approach, so instead this paper proposes inserting explicit prohibitions in each place. 2. Edits to 26-007r1 [220:14] 11.1.5.1 Purpose and form of the CHANGE TEAM construct, C1111 which begins "A branch", insert before the full stop "or that is the CHANGE TEAM statement of the construct", making that whole constraint read: "C1111 A branch (11.2) within a CHANGE TEAM construct shall not have a branch target that is outside the construct or that is the CHANGE TEAM statement of the construct." [222:22] 11.1.6 CRITICAL construct, C1120 which begins "A branch", insert before the full stop "or that is the CRITICAL statement of the construct", making the whole constraint read: "C1120 A branch (11.2) within a CRITICAL construct shall not have a branch target that is outside the construct or that is the CRITICAL statement of the construct." [228:30] 11.1.7.5 Additional semantics for DO CONCURRENT constructs, C1142 which begins "A branch", insert before the full stop "or that is the DO statement of the construct", making that whole constraint read: "C1142 A branch (11.2) within a DO CONCURRENT construct shall not have a branch target that is outside the construct or that is the DO statement of the construct." [244:8+] 11.2.1 Branch concepts, Table 11.2, insert "change-team-stmt" and "end-change-team-stmt", in between end-block-stmt and critical-stmt. ===END===