30 lines
673 B
Rust
30 lines
673 B
Rust
//@ test-mir-pass: RemoveZsts
|
|
|
|
union Foo {
|
|
x: (),
|
|
y: u64,
|
|
}
|
|
|
|
// EMIT_MIR remove_zsts.get_union.RemoveZsts.diff
|
|
fn get_union() -> Foo {
|
|
// CHECK-LABEL: fn get_union
|
|
// CHECK: _0 = Foo { x: const () };
|
|
Foo { x: () }
|
|
}
|
|
|
|
const MYSTERY: usize = 280_usize.isqrt() - 260_usize.isqrt();
|
|
|
|
// EMIT_MIR remove_zsts.remove_generic_array.RemoveZsts.diff
|
|
fn remove_generic_array<T: Copy>(x: T) {
|
|
// CHECK-LABEL: fn remove_generic_array
|
|
// CHECK: debug a => const ZeroSized: [T; 0];
|
|
// CHECK: debug b => const ZeroSized: [T; 0];
|
|
// CHECK-NOT: = [];
|
|
// CHECK-NOT: ; 1]
|
|
let a = [x; 0];
|
|
let b = [x; MYSTERY];
|
|
}
|
|
|
|
fn main() {
|
|
get_union();
|
|
}
|