//@ test-mir-pass: DeadStoreElimination-initial pub struct Foo { a: i32, b: i64, c: i32, } // EMIT_MIR ref.tuple.DeadStoreElimination-initial.diff pub fn tuple(v: (i32, &Foo)) -> i32 { // CHECK-LABEL: fn tuple // CHECK: debug _dead => [[dead:_[0-9]+]]; // CHECK: bb0: // CHECK: DBG: [[dead]] = &((*_3).2: i32) let _dead = &v.1.c; v.1.a } // EMIT_MIR ref.dead_first.DeadStoreElimination-initial.diff pub fn dead_first(v: &Foo) -> &i32 { // CHECK-LABEL: fn dead_first // CHECK: debug a => [[var_a:_[0-9]+]]; // CHECK: bb0: // CHECK: DBG: [[var_a]] = &((*_1).2: i32) // CHECK: [[tmp_4:_[0-9]+]] = &((*_1).0: i32) // CHECK: [[tmp_3:_[0-9]+]] = &(*[[tmp_4]]) // CHECK: [[var_a]] = move [[tmp_3]] let mut a = &v.c; a = &v.a; a }