============ initial translation from Move ================ [variant baseline] public fun UpdateReturn::abort_or_write($t0|s: &mut UpdateReturn::S, $t1|b: bool, $t2|x: u64): u64 { var $t3: bool var $t4: &mut UpdateReturn::S var $t5: u64 var $t6: &mut UpdateReturn::S var $t7: u64 var $t8: u64 0: $t3 := move($t1) 1: if ($t3) goto 2 else goto 7 2: label L0 3: $t4 := move($t0) 4: destroy($t4) 5: $t5 := 77 6: abort($t5) 7: label L2 8: $t6 := move($t0) 9: $t7 := move($t2) 10: $t8 := UpdateReturn::write_f($t6, $t7) 11: return $t8 } [variant baseline] public fun UpdateReturn::write_f($t0|s: &mut UpdateReturn::S, $t1|x: u64): u64 { var $t2: u64 var $t3: &mut UpdateReturn::S var $t4: &mut u64 var $t5: u64 0: $t2 := 7 1: $t3 := move($t0) 2: $t4 := borrow_field.f($t3) 3: write_ref($t4, $t2) 4: $t5 := move($t1) 5: return $t5 } ============ after pipeline `read_write_set` ================ [variant baseline] public fun UpdateReturn::abort_or_write($t0|s: &mut UpdateReturn::S, $t1|b: bool, $t2|x: u64): u64 { var $t3: bool var $t4: &mut UpdateReturn::S var $t5: u64 var $t6: &mut UpdateReturn::S var $t7: u64 var $t8: u64 # Accesses: # Formal(0): Read # Formal(0)/f: Write # Formal(1): Read # Formal(2): Read # # Locals: # Ret(0): Formal(2) # 0: $t3 := move($t1) 1: if ($t3) goto 2 else goto 7 2: label L0 3: $t4 := move($t0) 4: destroy($t4) 5: $t5 := 77 6: abort($t5) 7: label L2 8: $t6 := move($t0) 9: $t7 := move($t2) 10: $t8 := UpdateReturn::write_f($t6, $t7) 11: return $t8 } [variant baseline] public fun UpdateReturn::write_f($t0|s: &mut UpdateReturn::S, $t1|x: u64): u64 { var $t2: u64 var $t3: &mut UpdateReturn::S var $t4: &mut u64 var $t5: u64 # Accesses: # Formal(0): Read # Formal(0)/f: Write # Formal(1): Read # # Locals: # Ret(0): Formal(1) # 0: $t2 := 7 1: $t3 := move($t0) 2: $t4 := borrow_field.f($t3) 3: write_ref($t4, $t2) 4: $t5 := move($t1) 5: return $t5 }