blob: 7024f321518d54d846067f66c77545707efa329a [file] [log] [blame]
== test ==
fun test() {
do {
val s: String
s = ""
} while (s == "")
}
---------------------
L0:
1 <START> INIT: in: {} out: {}
2 mark({ do { val s: String s = "" } while (s == "") }) USE: in: {} out: {}
3 mark(do { val s: String s = "" } while (s == ""))
L2 [loop entry point]:
L4 [body entry point]:
mark({ val s: String s = "" })
v(val s: String) INIT: in: {} out: {s=D}
mark("") INIT: in: {s=D} out: {s=D}
r("") -> <v0> USE: in: {s=WRITTEN_AFTER_READ} out: {s=WRITTEN_AFTER_READ}
w(s|<v0>) INIT: in: {s=D} out: {s=ID} USE: in: {s=READ} out: {s=WRITTEN_AFTER_READ}
L5 [body exit point]:
L6 [condition entry point]:
r(s) -> <v2> INIT: in: {s=ID} out: {s=ID} USE: in: {} out: {s=READ}
mark("")
r("") -> <v3>
mark(s == "")
call(s == "", equals|<v2>, <v3>) -> <v4>
2 jt(L2|<v4>) INIT: in: {} out: {}
L3 [loop exit point]:
read (Unit)
L1:
1 <END>
error:
<ERROR>
sink:
<SINK> USE: in: {} out: {}
=====================
== test2 ==
fun test2() {
while (true) {
val s: String
s = ""
if (s != "") break
}
}
---------------------
L0:
1 <START> INIT: in: {} out: {}
2 mark({ while (true) { val s: String s = "" if (s != "") break } })
L2 [loop entry point]:
L6 [condition entry point]:
r(true) -> <v0>
mark(while (true) { val s: String s = "" if (s != "") break })
magic[VALUE_CONSUMER](true|<v0>) -> <v1> USE: in: {} out: {}
L4 [body entry point]:
3 mark({ val s: String s = "" if (s != "") break })
v(val s: String) INIT: in: {} out: {s=D}
mark("") INIT: in: {s=D} out: {s=D}
r("") -> <v2> USE: in: {s=WRITTEN_AFTER_READ} out: {s=WRITTEN_AFTER_READ}
w(s|<v2>) INIT: in: {s=D} out: {s=ID} USE: in: {s=READ} out: {s=WRITTEN_AFTER_READ}
mark(if (s != "") break) INIT: in: {s=ID} out: {s=ID} USE: in: {s=READ} out: {s=READ}
r(s) -> <v3> USE: in: {} out: {s=READ}
mark("")
r("") -> <v4>
mark(s != "")
call(s != "", equals|<v3>, <v4>) -> <v5>
jf(L7|<v5>)
jmp(L3) USE: in: {} out: {}
- jmp(L8)
L7 [else branch]:
read (Unit) INIT: in: {s=ID} out: {s=ID}
L8 ['if' expression result]:
merge(if (s != "") break|!<v6>) -> <v7>
2 jmp(L2) INIT: in: {} out: {}
L3 [loop exit point]:
L5 [body exit point]:
read (Unit)
L1:
1 <END>
error:
<ERROR>
sink:
<SINK> USE: in: {} out: {}
=====================