============ initial translation from Move ================ [variant baseline] public fun Test::update<#0>($t0|x: #0) { var $t1: #0 var $t2: address var $t3: &mut Test::A<#0, #0> var $t4: &mut #0 0: $t1 := move($t0) 1: $t2 := 0x1 2: $t3 := borrow_global>($t2) 3: $t4 := borrow_field>.x1($t3) 4: write_ref($t4, $t1) 5: return () } [variant baseline] public fun Test::assert_assume_memory() { 0: assume exists>(1) 1: assert exists>(1) 2: return () } [variant baseline] public fun Test::call_assert_assume_memory() { 0: Test::assert_assume_memory() 1: return () } [variant baseline] public fun Test::publish<#0>($t0|signer: &signer, $t1|x: Test::A<#0, u8>) { var $t2: &signer var $t3: Test::A<#0, u8> 0: $t2 := move($t0) 1: $t3 := move($t1) 2: move_to>($t3, $t2) 3: return () } [variant baseline] public fun Test::test<#0>(): bool { var $t0: address var $t1: bool 0: $t0 := 0x1 1: $t1 := exists>($t0) 2: return $t1 } [variant baseline] public fun Test::update_caller() { var $t0: u8 0: $t0 := 1 1: Test::update($t0) 2: return () } [variant baseline] public fun Test::update_ints() { var $t0: u64 var $t1: address var $t2: &mut Test::A var $t3: &mut u64 0: $t0 := 22 1: $t1 := 0x1 2: $t2 := borrow_global>($t1) 3: $t3 := borrow_field>.x1($t2) 4: write_ref($t3, $t0) 5: return () } ============ after pipeline `usage_analysis` ================ [variant baseline] public fun Test::update<#0>($t0|x: #0) { var $t1: #0 var $t2: address var $t3: &mut Test::A<#0, #0> var $t4: &mut #0 0: $t1 := move($t0) 1: $t2 := 0x1 2: $t3 := borrow_global>($t2) 3: $t4 := borrow_field>.x1($t3) 4: write_ref($t4, $t1) 5: return () } [variant baseline] public fun Test::assert_assume_memory() { 0: assume exists>(1) 1: assert exists>(1) 2: return () } [variant baseline] public fun Test::call_assert_assume_memory() { 0: Test::assert_assume_memory() 1: return () } [variant baseline] public fun Test::publish<#0>($t0|signer: &signer, $t1|x: Test::A<#0, u8>) { var $t2: &signer var $t3: Test::A<#0, u8> 0: $t2 := move($t0) 1: $t3 := move($t1) 2: move_to>($t3, $t2) 3: return () } [variant baseline] public fun Test::test<#0>(): bool { var $t0: address var $t1: bool 0: $t0 := 0x1 1: $t1 := exists>($t0) 2: return $t1 } [variant baseline] public fun Test::update_caller() { var $t0: u8 0: $t0 := 1 1: Test::update($t0) 2: return () } [variant baseline] public fun Test::update_ints() { var $t0: u64 var $t1: address var $t2: &mut Test::A var $t3: &mut u64 0: $t0 := 22 1: $t1 := 0x1 2: $t2 := borrow_global>($t1) 3: $t3 := borrow_field>.x1($t2) 4: write_ref($t3, $t0) 5: return () } ********* Result of usage analysis ********* function Test::update [baseline] { accessed = {Test::A<#0, #0>} directly accessed = {Test::A<#0, #0>} modified = {Test::A<#0, #0>} directly modified = {Test::A<#0, #0>} assumed = {} directly assumed = {} asserted = {} directly asserted = {} } function Test::assert_assume_memory [baseline] { accessed = {Test::A, Test::A} directly accessed = {Test::A, Test::A} modified = {} directly modified = {} assumed = {Test::A} directly assumed = {Test::A} asserted = {Test::A} directly asserted = {Test::A} } function Test::call_assert_assume_memory [baseline] { accessed = {Test::A, Test::A} directly accessed = {} modified = {} directly modified = {} assumed = {Test::A} directly assumed = {} asserted = {Test::A} directly asserted = {} } function Test::publish [baseline] { accessed = {Test::A<#0, u8>} directly accessed = {Test::A<#0, u8>} modified = {Test::A<#0, u8>} directly modified = {Test::A<#0, u8>} assumed = {} directly assumed = {} asserted = {} directly asserted = {} } function Test::test [baseline] { accessed = {Test::A} directly accessed = {Test::A} modified = {} directly modified = {} assumed = {} directly assumed = {} asserted = {} directly asserted = {} } function Test::update_caller [baseline] { accessed = {Test::A} directly accessed = {} modified = {Test::A} directly modified = {} assumed = {} directly assumed = {} asserted = {} directly asserted = {} } function Test::update_ints [baseline] { accessed = {Test::A} directly accessed = {Test::A} modified = {Test::A} directly modified = {Test::A} assumed = {} directly assumed = {} asserted = {} directly asserted = {} }