== main == fun main() { while(0 > 1) { 2 } } --------------------- L0: 1 2 mark({ while(0 > 1) { 2 } }) L2 [loop entry point]: L5 [condition entry point]: r(0) -> PREV:[mark({ while(0 > 1) { 2 } }), jmp(L2 [loop entry point])] r(1) -> mark(0 > 1) call(0 > 1, compareTo|, ) -> mark(while(0 > 1) { 2 }) jf(L3 [loop exit point]|) NEXT:[read (Unit), mark({ 2 })] L4 [body entry point]: 3 mark({ 2 }) r(2) -> 2 jmp(L2 [loop entry point]) NEXT:[r(0) -> ] L3 [loop exit point]: read (Unit) PREV:[jf(L3 [loop exit point]|)] L1: 1 NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == dowhile == fun dowhile() { do {return} while(0 > 1) } --------------------- L0: 1 2 mark({ do {return} while(0 > 1) }) 3 mark(do {return} while(0 > 1)) L2 [loop entry point]: L4 [body entry point]: mark({return}) ret L1 NEXT:[] L5 [condition entry point]: - r(0) -> PREV:[] - r(1) -> PREV:[] - mark(0 > 1) PREV:[] - call(0 > 1, compareTo|, ) -> PREV:[] - jt(L2 [loop entry point]|) NEXT:[read (Unit), mark({return})] PREV:[] L3 [loop exit point]: - read (Unit) PREV:[] L1: 1 NEXT:[] PREV:[ret L1] error: PREV:[] sink: PREV:[, ] =====================