The spec says that if Target T1 branches to Target T2 then T1 must appear before T2. Here, %8 does not branch to %9. However, the case construct headed by %8 branches to %9, because %8 branches to %20.
The validator rejects this example. And I think that is probably the intent of the specification authors - that "Target T1 branches to Target T2" is intended to mean "The case construct headed by Target T1".
This example:
case.txt
gives this control flow graph:
The assembly contains this:
The spec says that if Target T1 branches to Target T2 then T1 must appear before T2. Here,
%8
does not branch to%9
. However, the case construct headed by%8
branches to%9
, because%8
branches to%20
.The validator rejects this example. And I think that is probably the intent of the specification authors - that "Target T1 branches to Target T2" is intended to mean "The case construct headed by Target T1".
It would be good to open a spec issue for this.