mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-28 20:16:58 +03:00
32 lines
802 B
Rust
32 lines
802 B
Rust
//@ 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
|
|
}
|