============ initial translation from Move ================ [variant baseline] fun TestEliminateImmRefs::test1(): TestEliminateImmRefs::R { var $t0|r: TestEliminateImmRefs::R var $t1|r_ref: &mut TestEliminateImmRefs::R var $t2|x_ref: &mut u64 var $t3: u64 var $t4: TestEliminateImmRefs::R var $t5: &mut TestEliminateImmRefs::R var $t6: &mut TestEliminateImmRefs::R var $t7: &mut u64 var $t8: u64 var $t9: &mut u64 var $t10: TestEliminateImmRefs::R 0: $t3 := 3 1: $t4 := pack TestEliminateImmRefs::R($t3) 2: $t0 := $t4 3: $t5 := borrow_local($t0) 4: $t1 := $t5 5: $t6 := move($t1) 6: $t7 := borrow_field.x($t6) 7: $t2 := $t7 8: $t8 := 0 9: $t9 := move($t2) 10: write_ref($t9, $t8) 11: $t10 := move($t0) 12: return $t10 } [variant baseline] fun TestEliminateImmRefs::test2(): u64 { var $t0|r: TestEliminateImmRefs::R var $t1|r_ref: &TestEliminateImmRefs::R var $t2|x_ref: &u64 var $t3: u64 var $t4: TestEliminateImmRefs::R var $t5: &TestEliminateImmRefs::R var $t6: &TestEliminateImmRefs::R var $t7: &u64 var $t8: &u64 var $t9: u64 0: $t3 := 3 1: $t4 := pack TestEliminateImmRefs::R($t3) 2: $t0 := $t4 3: $t5 := borrow_local($t0) 4: $t1 := $t5 5: $t6 := move($t1) 6: $t7 := borrow_field.x($t6) 7: $t2 := $t7 8: $t8 := move($t2) 9: $t9 := read_ref($t8) 10: return $t9 } [variant baseline] fun TestEliminateImmRefs::test3($t0|r_ref: &TestEliminateImmRefs::R): u64 { var $t1|x_ref: &u64 var $t2: &TestEliminateImmRefs::R var $t3: &u64 var $t4: &u64 var $t5: u64 0: $t2 := move($t0) 1: $t3 := borrow_field.x($t2) 2: $t1 := $t3 3: $t4 := move($t1) 4: $t5 := read_ref($t4) 5: return $t5 } [variant baseline] fun TestEliminateImmRefs::test4(): u64 { var $t0|r: TestEliminateImmRefs::R var $t1|r_ref: &TestEliminateImmRefs::R var $t2: u64 var $t3: TestEliminateImmRefs::R var $t4: &TestEliminateImmRefs::R var $t5: &TestEliminateImmRefs::R var $t6: u64 0: $t2 := 3 1: $t3 := pack TestEliminateImmRefs::R($t2) 2: $t0 := $t3 3: $t4 := borrow_local($t0) 4: $t1 := $t4 5: $t5 := move($t1) 6: $t6 := TestEliminateImmRefs::test3($t5) 7: return $t6 } [variant baseline] fun TestEliminateImmRefs::test5(): TestEliminateImmRefs::R { var $t0|p: &TestEliminateImmRefs::R var $t1|r: TestEliminateImmRefs::R var $t2: u64 var $t3: TestEliminateImmRefs::R var $t4: &TestEliminateImmRefs::R var $t5: &TestEliminateImmRefs::R var $t6: TestEliminateImmRefs::R 0: $t2 := 3 1: $t3 := pack TestEliminateImmRefs::R($t2) 2: $t1 := $t3 3: $t4 := borrow_local($t1) 4: $t0 := $t4 5: $t5 := move($t0) 6: destroy($t5) 7: $t6 := move($t1) 8: return $t6 } ============ after pipeline `eliminate_imm_refs` ================ [variant baseline] fun TestEliminateImmRefs::test1(): TestEliminateImmRefs::R { var $t0|r: TestEliminateImmRefs::R var $t1|r_ref: &mut TestEliminateImmRefs::R var $t2|x_ref: &mut u64 var $t3: u64 var $t4: TestEliminateImmRefs::R var $t5: &mut TestEliminateImmRefs::R var $t6: &mut TestEliminateImmRefs::R var $t7: &mut u64 var $t8: u64 var $t9: &mut u64 var $t10: TestEliminateImmRefs::R 0: $t3 := 3 1: $t4 := pack TestEliminateImmRefs::R($t3) 2: $t0 := $t4 3: $t5 := borrow_local($t0) 4: $t1 := $t5 5: $t6 := move($t1) 6: $t7 := borrow_field.x($t6) 7: $t2 := $t7 8: $t8 := 0 9: $t9 := move($t2) 10: write_ref($t9, $t8) 11: $t10 := move($t0) 12: return $t10 } [variant baseline] fun TestEliminateImmRefs::test2(): u64 { var $t0|r: TestEliminateImmRefs::R var $t1|r_ref: TestEliminateImmRefs::R var $t2|x_ref: u64 var $t3: u64 var $t4: TestEliminateImmRefs::R var $t5: TestEliminateImmRefs::R var $t6: TestEliminateImmRefs::R var $t7: u64 var $t8: u64 var $t9: u64 0: $t3 := 3 1: $t4 := pack TestEliminateImmRefs::R($t3) 2: $t0 := $t4 3: $t5 := copy($t0) 4: $t1 := $t5 5: $t6 := move($t1) 6: $t7 := get_field.x($t6) 7: $t2 := $t7 8: $t8 := move($t2) 9: $t9 := move($t8) 10: return $t9 } [variant baseline] fun TestEliminateImmRefs::test3($t0|r_ref: TestEliminateImmRefs::R): u64 { var $t1|x_ref: u64 var $t2: TestEliminateImmRefs::R var $t3: u64 var $t4: u64 var $t5: u64 0: $t2 := move($t0) 1: $t3 := get_field.x($t2) 2: $t1 := $t3 3: $t4 := move($t1) 4: $t5 := move($t4) 5: return $t5 } [variant baseline] fun TestEliminateImmRefs::test4(): u64 { var $t0|r: TestEliminateImmRefs::R var $t1|r_ref: TestEliminateImmRefs::R var $t2: u64 var $t3: TestEliminateImmRefs::R var $t4: TestEliminateImmRefs::R var $t5: TestEliminateImmRefs::R var $t6: u64 0: $t2 := 3 1: $t3 := pack TestEliminateImmRefs::R($t2) 2: $t0 := $t3 3: $t4 := copy($t0) 4: $t1 := $t4 5: $t5 := move($t1) 6: $t6 := TestEliminateImmRefs::test3($t5) 7: return $t6 } [variant baseline] fun TestEliminateImmRefs::test5(): TestEliminateImmRefs::R { var $t0|p: TestEliminateImmRefs::R var $t1|r: TestEliminateImmRefs::R var $t2: u64 var $t3: TestEliminateImmRefs::R var $t4: TestEliminateImmRefs::R var $t5: TestEliminateImmRefs::R var $t6: TestEliminateImmRefs::R 0: $t2 := 3 1: $t3 := pack TestEliminateImmRefs::R($t2) 2: $t1 := $t3 3: $t4 := copy($t1) 4: $t0 := $t4 5: $t5 := move($t0) 6: $t6 := move($t1) 7: return $t6 }