== main == fun main() { while(0 > 1) { 2 } } --------------------- L0: 1 2 mark({ while(0 > 1) { 2 } }) mark(while(0 > 1) { 2 }) L2 [loop entry point]: L5 [condition entry point]: mark(0 > 1) PREV:[mark(while(0 > 1) { 2 }), jmp(L2 [loop entry point])] r(0) -> r(1) -> call(>, compareTo|, ) -> 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:[mark(0 > 1)] 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]: - mark(0 > 1) PREV:[] - r(0) -> PREV:[] - r(1) -> PREV:[] - call(>, 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:[, ] =====================