== test == fun test(b: Boolean) { for (i in 1..10) { if (b) break; continue; } } --------------------- L0: 1 v(b: Boolean) magic[FAKE_INITIALIZER](b: Boolean) -> w(b|) 2 mark({ for (i in 1..10) { if (b) break; continue; } }) 3 r(1) -> r(10) -> mark(1..10) call(1..10, rangeTo|, ) -> mark(1..10) call(1..10, iterator|) -> v(i) L2 [loop entry point]: L6 [condition entry point]: mark(1..10) PREV:[v(i), jmp(L6)] call(1..10, hasNext) -> jmp?(L3) NEXT:[read (Unit), mark(1..10)] mark(1..10) call(1..10, next) -> magic[LOOP_RANGE_ITERATION](1..10|) -> w(i|) mark(for (i in 1..10) { if (b) break; continue; }) L4 [body entry point]: 4 mark({ if (b) break; continue; }) mark(if (b) break) r(b) -> jf(L7|) NEXT:[read (Unit), jmp(L3)] jmp(L3) NEXT:[read (Unit)] - jmp(L8) NEXT:[merge(if (b) break|!) -> ] PREV:[] L7 [else branch]: read (Unit) PREV:[jf(L7|)] L8 ['if' expression result]: merge(if (b) break|!) -> jmp(L6) NEXT:[mark(1..10)] - 3 jmp(L2) NEXT:[mark(1..10)] PREV:[] L3 [loop exit point]: L5 [body exit point]: read (Unit) PREV:[jmp?(L3), jmp(L3)] L1: 1 NEXT:[] error: PREV:[] sink: PREV:[, ] =====================