============ initial translation from Move ================
[variant baseline]
fun PackUnpack::pack_then_read($t0|a2: address): address {
var $t1|t: PackUnpack::T
var $t2: address
var $t3: bool
var $t4: PackUnpack::T
var $t5: &PackUnpack::T
var $t6: &address
var $t7: address
0: $t2 := move($t0)
1: $t3 := false
2: $t4 := pack PackUnpack::T($t2, $t3)
3: $t1 := $t4
4: $t5 := borrow_local($t1)
5: $t6 := borrow_field<PackUnpack::T>.a2($t5)
6: $t7 := read_ref($t6)
7: return $t7
}
[variant baseline]
fun PackUnpack::read_packed_borrow_glob($t0|a2: address): bool {
var $t1|t: PackUnpack::T
var $t2: address
var $t3: bool
var $t4: PackUnpack::T
var $t5: &PackUnpack::T
var $t6: &address
var $t7: address
var $t8: &PackUnpack::Glob
var $t9: &bool
var $t10: bool
0: $t2 := move($t0)
1: $t3 := false
2: $t4 := pack PackUnpack::T($t2, $t3)
3: $t1 := $t4
4: $t5 := borrow_local($t1)
5: $t6 := borrow_field<PackUnpack::T>.a2($t5)
6: $t7 := read_ref($t6)
7: $t8 := borrow_global<PackUnpack::Glob>($t7)
8: $t9 := borrow_field<PackUnpack::Glob>.b($t8)
9: $t10 := read_ref($t9)
10: return $t10
}
[variant baseline]
fun PackUnpack::read_unpacked_addr($t0|s: PackUnpack::S): address {
var $t1|tmp#$1: address
var $t2|a1: address
var $t3|a2: address
var $t4|b: bool
var $t5: PackUnpack::S
var $t6: address
var $t7: PackUnpack::T
var $t8: u64
var $t9: address
var $t10: bool
var $t11: bool
var $t12: address
var $t13: address
var $t14: address
0: $t5 := move($t0)
1: ($t6, $t7, $t8) := unpack PackUnpack::S($t5)
2: destroy($t8)
3: ($t9, $t10) := unpack PackUnpack::T($t7)
4: $t4 := $t10
5: $t3 := $t9
6: $t2 := $t6
7: $t11 := move($t4)
8: if ($t11) goto 9 else goto 13
9: label L0
10: $t12 := move($t2)
11: $t1 := $t12
12: goto 17
13: label L2
14: $t13 := move($t3)
15: $t1 := $t13
16: goto 17
17: label L3
18: $t14 := move($t1)
19: return $t14
}
[variant baseline]
fun PackUnpack::read_unpacked_borrow_glob($t0|s: PackUnpack::S): bool {
var $t1|a1: address
var $t2: PackUnpack::S
var $t3: address
var $t4: PackUnpack::T
var $t5: u64
var $t6: address
var $t7: &PackUnpack::Glob
var $t8: &bool
var $t9: bool
0: $t2 := move($t0)
1: ($t3, $t4, $t5) := unpack PackUnpack::S($t2)
2: destroy($t5)
3: destroy($t4)
4: $t1 := $t3
5: $t6 := move($t1)
6: $t7 := borrow_global<PackUnpack::Glob>($t6)
7: $t8 := borrow_field<PackUnpack::Glob>.b($t7)
8: $t9 := read_ref($t8)
9: return $t9
}
[variant baseline]
fun PackUnpack::reassign_packed_addr($t0|a2: address): address {
var $t1|t: PackUnpack::T
var $t2: address
var $t3: bool
var $t4: PackUnpack::T
var $t5: PackUnpack::T
var $t6: address
var $t7: bool
var $t8: PackUnpack::T
var $t9: &PackUnpack::T
var $t10: &address
var $t11: address
0: $t2 := 0x7
1: $t3 := false
2: $t4 := pack PackUnpack::T($t2, $t3)
3: $t1 := $t4
4: $t5 := move($t1)
5: destroy($t5)
6: $t6 := move($t0)
7: $t7 := false
8: $t8 := pack PackUnpack::T($t6, $t7)
9: $t1 := $t8
10: $t9 := borrow_local($t1)
11: $t10 := borrow_field<PackUnpack::T>.a2($t9)
12: $t11 := read_ref($t10)
13: return $t11
}
[variant baseline]
fun PackUnpack::use_results($t0|_: u64, $t1|a: address): address {
var $t2|a1: address
var $t3|s: PackUnpack::S
var $t4: address
var $t5: address
var $t6: address
var $t7: address
var $t8: bool
var $t9: PackUnpack::T
var $t10: u64
var $t11: PackUnpack::S
var $t12: PackUnpack::S
var $t13: address
0: $t4 := move($t1)
1: $t5 := PackUnpack::pack_then_read($t4)
2: $t2 := $t5
3: $t6 := move($t2)
4: $t7 := 0x7
5: $t8 := true
6: $t9 := pack PackUnpack::T($t7, $t8)
7: $t10 := 10
8: $t11 := pack PackUnpack::S($t6, $t9, $t10)
9: $t3 := $t11
10: $t12 := move($t3)
11: $t13 := PackUnpack::read_unpacked_addr($t12)
12: return $t13
}
============ after pipeline `read_write_set` ================
[variant baseline]
fun PackUnpack::pack_then_read($t0|a2: address): address {
var $t1|t: PackUnpack::T
var $t2: address
var $t3: bool
var $t4: PackUnpack::T
var $t5: &PackUnpack::T
var $t6: &address
var $t7: address
# Accesses:
# Formal(0): Read
#
# Locals:
# Ret(0): Formal(0)
#
0: $t2 := move($t0)
1: $t3 := false
2: $t4 := pack PackUnpack::T($t2, $t3)
3: $t1 := $t4
4: $t5 := borrow_local($t1)
5: $t6 := borrow_field<PackUnpack::T>.a2($t5)
6: $t7 := read_ref($t6)
7: return $t7
}
[variant baseline]
fun PackUnpack::read_packed_borrow_glob($t0|a2: address): bool {
var $t1|t: PackUnpack::T
var $t2: address
var $t3: bool
var $t4: PackUnpack::T
var $t5: &PackUnpack::T
var $t6: &address
var $t7: address
var $t8: &PackUnpack::Glob
var $t9: &bool
var $t10: bool
# Accesses:
# Formal(0): Read
# Formal(0)/0x1::PackUnpack::Glob/b: Read
#
# Locals:
# Ret(0): Formal(0)/0x1::PackUnpack::Glob/b
#
0: $t2 := move($t0)
1: $t3 := false
2: $t4 := pack PackUnpack::T($t2, $t3)
3: $t1 := $t4
4: $t5 := borrow_local($t1)
5: $t6 := borrow_field<PackUnpack::T>.a2($t5)
6: $t7 := read_ref($t6)
7: $t8 := borrow_global<PackUnpack::Glob>($t7)
8: $t9 := borrow_field<PackUnpack::Glob>.b($t8)
9: $t10 := read_ref($t9)
10: return $t10
}
[variant baseline]
fun PackUnpack::read_unpacked_addr($t0|s: PackUnpack::S): address {
var $t1|tmp#$1: address
var $t2|a1: address
var $t3|a2: address
var $t4|b: bool
var $t5: PackUnpack::S
var $t6: address
var $t7: PackUnpack::T
var $t8: u64
var $t9: address
var $t10: bool
var $t11: bool
var $t12: address
var $t13: address
var $t14: address
# Accesses:
# Formal(0): Read
# Formal(0)/a1: Read
# Formal(0)/t/a2: Read
#
# Locals:
# Ret(0): {Formal(0)/a1, Formal(0)/t/a2, }
#
0: $t5 := move($t0)
1: ($t6, $t7, $t8) := unpack PackUnpack::S($t5)
2: destroy($t8)
3: ($t9, $t10) := unpack PackUnpack::T($t7)
4: $t4 := $t10
5: $t3 := $t9
6: $t2 := $t6
7: $t11 := move($t4)
8: if ($t11) goto 9 else goto 13
9: label L0
10: $t12 := move($t2)
11: $t1 := $t12
12: goto 17
13: label L2
14: $t13 := move($t3)
15: $t1 := $t13
16: goto 17
17: label L3
18: $t14 := move($t1)
19: return $t14
}
[variant baseline]
fun PackUnpack::read_unpacked_borrow_glob($t0|s: PackUnpack::S): bool {
var $t1|a1: address
var $t2: PackUnpack::S
var $t3: address
var $t4: PackUnpack::T
var $t5: u64
var $t6: address
var $t7: &PackUnpack::Glob
var $t8: &bool
var $t9: bool
# Accesses:
# Formal(0): Read
# Formal(0)/a1: Read
# Formal(0)/a1/0x1::PackUnpack::Glob/b: Read
#
# Locals:
# Ret(0): Formal(0)/a1/0x1::PackUnpack::Glob/b
#
0: $t2 := move($t0)
1: ($t3, $t4, $t5) := unpack PackUnpack::S($t2)
2: destroy($t5)
3: destroy($t4)
4: $t1 := $t3
5: $t6 := move($t1)
6: $t7 := borrow_global<PackUnpack::Glob>($t6)
7: $t8 := borrow_field<PackUnpack::Glob>.b($t7)
8: $t9 := read_ref($t8)
9: return $t9
}
[variant baseline]
fun PackUnpack::reassign_packed_addr($t0|a2: address): address {
var $t1|t: PackUnpack::T
var $t2: address
var $t3: bool
var $t4: PackUnpack::T
var $t5: PackUnpack::T
var $t6: address
var $t7: bool
var $t8: PackUnpack::T
var $t9: &PackUnpack::T
var $t10: &address
var $t11: address
# Accesses:
# Formal(0): Read
#
# Locals:
# Ret(0): Formal(0)
#
0: $t2 := 0x7
1: $t3 := false
2: $t4 := pack PackUnpack::T($t2, $t3)
3: $t1 := $t4
4: $t5 := move($t1)
5: destroy($t5)
6: $t6 := move($t0)
7: $t7 := false
8: $t8 := pack PackUnpack::T($t6, $t7)
9: $t1 := $t8
10: $t9 := borrow_local($t1)
11: $t10 := borrow_field<PackUnpack::T>.a2($t9)
12: $t11 := read_ref($t10)
13: return $t11
}
[variant baseline]
fun PackUnpack::use_results($t0|_: u64, $t1|a: address): address {
var $t2|a1: address
var $t3|s: PackUnpack::S
var $t4: address
var $t5: address
var $t6: address
var $t7: address
var $t8: bool
var $t9: PackUnpack::T
var $t10: u64
var $t11: PackUnpack::S
var $t12: PackUnpack::S
var $t13: address
# Accesses:
# Formal(1): Read
#
# Locals:
# Ret(0): {0x7, Formal(1), }
#
0: $t4 := move($t1)
1: $t5 := PackUnpack::pack_then_read($t4)
2: $t2 := $t5
3: $t6 := move($t2)
4: $t7 := 0x7
5: $t8 := true
6: $t9 := pack PackUnpack::T($t7, $t8)
7: $t10 := 10
8: $t11 := pack PackUnpack::S($t6, $t9, $t10)
9: $t3 := $t11
10: $t12 := move($t3)
11: $t13 := PackUnpack::read_unpacked_addr($t12)
12: return $t13
}