============ after processor `borrow_analysis` ================ [variant baseline] pub fun Trafo::opaque_caller($t0|addr: address) { # live_nodes: LocalRoot($t0) 0: trace_local[addr]($t0) # live_nodes: LocalRoot($t0) 1: Trafo::opaque_decr($t0) # live_nodes: LocalRoot($t0) 2: Trafo::opaque_decr($t0) # live_nodes: LocalRoot($t0) 3: return () } [variant baseline] pub fun Trafo::opaque_decr($t0|addr: address) { var $t1|r: &mut Trafo::R var $t2: &mut Trafo::R var $t3: u64 var $t4: u64 var $t5: u64 var $t6: &mut u64 # live_nodes: LocalRoot($t0) 0: trace_local[addr]($t0) # live_nodes: LocalRoot($t0) 1: $t2 := borrow_global($t0) # live_nodes: LocalRoot($t0), Reference($t2) # borrowed_by: Trafo::R -> {(*, Reference($t2))} # borrows_from: Reference($t2) -> {(*, Trafo::R)} 2: trace_local[r]($t2) # live_nodes: LocalRoot($t0), Reference($t2) # borrowed_by: Trafo::R -> {(*, Reference($t2))} # borrows_from: Reference($t2) -> {(*, Trafo::R)} 3: $t3 := get_field.x($t2) # live_nodes: LocalRoot($t0), Reference($t2) # borrowed_by: Trafo::R -> {(*, Reference($t2))} # borrows_from: Reference($t2) -> {(*, Trafo::R)} 4: $t4 := 1 # live_nodes: LocalRoot($t0), Reference($t2) # borrowed_by: Trafo::R -> {(*, Reference($t2))} # borrows_from: Reference($t2) -> {(*, Trafo::R)} 5: $t5 := -($t3, $t4) # live_nodes: LocalRoot($t0), Reference($t2) # borrowed_by: Trafo::R -> {(*, Reference($t2))} # borrows_from: Reference($t2) -> {(*, Trafo::R)} 6: $t6 := borrow_field.x($t2) # live_nodes: LocalRoot($t0), Reference($t6) # borrowed_by: Trafo::R -> {(*, Reference($t2))}, Reference($t2) -> {(*, Reference($t6))} # borrows_from: Reference($t2) -> {(*, Trafo::R)}, Reference($t6) -> {(*, Reference($t2))} 7: write_ref($t6, $t5) # live_nodes: LocalRoot($t0) # borrowed_by: Trafo::R -> {(*, Reference($t2))}, Reference($t2) -> {(*, Reference($t6))} # borrows_from: Reference($t2) -> {(*, Trafo::R)}, Reference($t6) -> {(*, Reference($t2))} 8: return () }