84 lines
3.6 KiB
Plaintext
Vendored
84 lines
3.6 KiB
Plaintext
Vendored
== 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: {}
|
|
=====================
|