Any label referenced by a goto statement is declared in the same block, or in a block enclosing the goto statement
// Label [ $lname := @Id ] [ parent:: { * [ name() != 'CompoundStmt' ] / parent:: } CompoundStmt [ $container := this() ] / ancestor::FuncBody / descendant::GotoStmt [ @Label = $lname ] [ not ancestor::CompoundStmt [ this() = $container ] ] ]
1 void test6_6_1() 2 { 3 4 int j = 0; 5 goto L1; 6 for (j = 0; j < 10; ++j) L1: // MATCHES 7 j; 8 } 9 10 void test6_6_1x() { 11 12 int j = 0; 13 goto L2; 14 for (j = 0; j < 10; ++j) 15 { 16 L2: 17 j; 18 } 19 }