============ initial translation from Move ================
[variant baseline]
fun TestLiveVars::test1($t0|r_ref: &TestLiveVars::R): u64 {
var $t1|x_ref: &u64
var $t2: &TestLiveVars::R
var $t3: &u64
var $t4: &u64
var $t5: u64
0: $t2 := move($t0)
1: $t3 := borrow_field<TestLiveVars::R>.x($t2)
2: $t1 := $t3
3: $t4 := move($t1)
4: $t5 := read_ref($t4)
5: return $t5
}
[variant baseline]
fun TestLiveVars::test2($t0|b: bool): u64 {
var $t1|r1: TestLiveVars::R
var $t2|r2: TestLiveVars::R
var $t3|r_ref: &TestLiveVars::R
var $t4: u64
var $t5: TestLiveVars::R
var $t6: u64
var $t7: TestLiveVars::R
var $t8: &TestLiveVars::R
var $t9: bool
var $t10: &TestLiveVars::R
var $t11: &TestLiveVars::R
var $t12: &TestLiveVars::R
var $t13: u64
0: $t4 := 3
1: $t5 := pack TestLiveVars::R($t4)
2: $t1 := $t5
3: $t6 := 4
4: $t7 := pack TestLiveVars::R($t6)
5: $t2 := $t7
6: $t8 := borrow_local($t1)
7: $t3 := $t8
8: $t9 := move($t0)
9: if ($t9) goto 10 else goto 16
10: label L0
11: $t10 := move($t3)
12: destroy($t10)
13: $t11 := borrow_local($t2)
14: $t3 := $t11
15: goto 16
16: label L2
17: $t12 := move($t3)
18: $t13 := TestLiveVars::test1($t12)
19: return $t13
}
[variant baseline]
fun TestLiveVars::test3($t0|n: u64, $t1|r_ref: &TestLiveVars::R): u64 {
var $t2|r1: TestLiveVars::R
var $t3|r2: TestLiveVars::R
var $t4: u64
var $t5: TestLiveVars::R
var $t6: u64
var $t7: TestLiveVars::R
var $t8: u64
var $t9: u64
var $t10: bool
var $t11: &TestLiveVars::R
var $t12: u64
var $t13: u64
var $t14: u64
var $t15: u64
var $t16: bool
var $t17: &TestLiveVars::R
var $t18: &TestLiveVars::R
var $t19: u64
var $t20: u64
var $t21: u64
var $t22: &TestLiveVars::R
var $t23: u64
0: $t4 := 3
1: $t5 := pack TestLiveVars::R($t4)
2: $t2 := $t5
3: $t6 := 4
4: $t7 := pack TestLiveVars::R($t6)
5: $t3 := $t7
6: goto 7
7: label L7
8: $t8 := 0
9: $t9 := copy($t0)
10: $t10 := <($t8, $t9)
11: if ($t10) goto 12 else goto 35
12: label L0
13: $t11 := move($t1)
14: destroy($t11)
15: $t12 := copy($t0)
16: $t13 := 2
17: $t14 := /($t12, $t13)
18: $t15 := 0
19: $t16 := ==($t14, $t15)
20: if ($t16) goto 21 else goto 25
21: label L3
22: $t17 := borrow_local($t2)
23: $t1 := $t17
24: goto 29
25: label L5
26: $t18 := borrow_local($t3)
27: $t1 := $t18
28: goto 29
29: label L6
30: $t19 := move($t0)
31: $t20 := 1
32: $t21 := -($t19, $t20)
33: $t0 := $t21
34: goto 7
35: label L2
36: $t22 := move($t1)
37: $t23 := TestLiveVars::test1($t22)
38: return $t23
}
============ after pipeline `livevar` ================
[variant baseline]
fun TestLiveVars::test1($t0|r_ref: TestLiveVars::R): u64 {
var $t1|x_ref: u64
var $t2: u64
# live vars: r_ref
0: $t2 := get_field<TestLiveVars::R>.x($t0)
# live vars: $t2
1: return $t2
}
[variant baseline]
fun TestLiveVars::test2($t0|b: bool): u64 {
var $t1|r1: TestLiveVars::R
var $t2|r2: TestLiveVars::R
var $t3|r_ref: TestLiveVars::R
var $t4: u64
var $t5: TestLiveVars::R
var $t6: u64
var $t7: TestLiveVars::R
var $t8: u64
# live vars: b
0: $t4 := 3
# live vars: b, $t4
1: $t5 := pack TestLiveVars::R($t4)
# live vars: b, $t5
2: $t6 := 4
# live vars: b, $t5, $t6
3: $t7 := pack TestLiveVars::R($t6)
# live vars: b, $t5, $t7
4: $t3 := $t5
# live vars: b, r_ref, $t7
5: if ($t0) goto 6 else goto 8
# live vars: $t7
6: label L0
# live vars: $t7
7: $t3 := $t7
# live vars: r_ref
8: label L2
# live vars: r_ref
9: $t8 := TestLiveVars::test1($t3)
# live vars: $t8
10: return $t8
}
[variant baseline]
fun TestLiveVars::test3($t0|n: u64, $t1|r_ref: TestLiveVars::R): u64 {
var $t2|r1: TestLiveVars::R
var $t3|r2: TestLiveVars::R
var $t4: u64
var $t5: TestLiveVars::R
var $t6: u64
var $t7: TestLiveVars::R
var $t8: u64
var $t9: bool
var $t10: u64
var $t11: u64
var $t12: u64
var $t13: bool
var $t14: u64
var $t15: u64
# live vars: n, r_ref
0: $t4 := 3
# live vars: n, r_ref, $t4
1: $t5 := pack TestLiveVars::R($t4)
# live vars: n, r_ref, $t5
2: $t6 := 4
# live vars: n, r_ref, $t5, $t6
3: $t7 := pack TestLiveVars::R($t6)
# live vars: n, r_ref, $t5, $t7
4: label L7
# live vars: n, r_ref, $t5, $t7
5: $t8 := 0
# live vars: n, r_ref, $t5, $t7, $t8
6: $t9 := <($t8, $t0)
# live vars: n, r_ref, $t5, $t7, $t9
7: if ($t9) goto 8 else goto 23
# live vars: n, $t5, $t7
8: label L0
# live vars: n, $t5, $t7
9: $t10 := 2
# live vars: n, $t5, $t7, $t10
10: $t11 := /($t0, $t10)
# live vars: n, $t5, $t7, $t11
11: $t12 := 0
# live vars: n, $t5, $t7, $t11, $t12
12: $t13 := ==($t11, $t12)
# live vars: n, $t5, $t7, $t13
13: if ($t13) goto 14 else goto 17
# live vars: n, $t5, $t7
14: label L3
# live vars: n, $t5, $t7
15: $t1 := $t5
# live vars: n, r_ref, $t5, $t7
16: goto 19
# live vars: n, $t5, $t7
17: label L5
# live vars: n, $t5, $t7
18: $t1 := $t7
# live vars: n, r_ref, $t5, $t7
19: label L6
# live vars: n, r_ref, $t5, $t7
20: $t14 := 1
# live vars: n, r_ref, $t5, $t7, $t14
21: $t0 := -($t0, $t14)
# live vars: n, r_ref, $t5, $t7
22: goto 4
# live vars: r_ref
23: label L2
# live vars: r_ref
24: $t15 := TestLiveVars::test1($t1)
# live vars: $t15
25: return $t15
}