4477a96ca7
(to record corresponding call for later simplification in control flow) Generate code for unmapped arguments in control flow
47 lines
1.1 KiB
Plaintext
47 lines
1.1 KiB
Plaintext
== foo ==
|
|
fun foo(a: Int, b: Int) = a + b
|
|
---------------------
|
|
L0:
|
|
1 <START>
|
|
v(a: Int)
|
|
magic[FAKE_INITIALIZER](a: Int) -> <v0>
|
|
w(a|<v0>)
|
|
v(b: Int)
|
|
magic[FAKE_INITIALIZER](b: Int) -> <v1>
|
|
w(b|<v1>)
|
|
r(a) -> <v2>
|
|
r(b) -> <v3>
|
|
mark(a + b)
|
|
call(a + b, plus|<v2>, <v3>) -> <v4>
|
|
ret(*|<v4>) L1
|
|
L1:
|
|
<END> NEXT:[<SINK>]
|
|
error:
|
|
<ERROR> PREV:[]
|
|
sink:
|
|
<SINK> PREV:[<ERROR>, <END>]
|
|
=====================
|
|
== bar ==
|
|
fun bar(i: Int) {
|
|
foo(1, 1, i)
|
|
}
|
|
---------------------
|
|
L0:
|
|
1 <START>
|
|
v(i: Int)
|
|
magic[FAKE_INITIALIZER](i: Int) -> <v0>
|
|
w(i|<v0>)
|
|
2 mark({ foo(1, 1, i) })
|
|
r(1) -> <v1>
|
|
r(1) -> <v2>
|
|
r(i) -> <v3>
|
|
magic[VALUE_CONSUMER](i|<v3>) -> <v4>
|
|
mark(foo(1, 1, i))
|
|
call(foo(1, 1, i), foo|<v1>, <v2>) -> <v5>
|
|
L1:
|
|
1 <END> NEXT:[<SINK>]
|
|
error:
|
|
<ERROR> PREV:[]
|
|
sink:
|
|
<SINK> PREV:[<ERROR>, <END>]
|
|
===================== |