diff --git a/tests/mir-opt/unnamed-fields/field_access.rs b/tests/mir-opt/unnamed-fields/field_access.rs index 3d33ca26875ba..5badfa1646bc7 100644 --- a/tests/mir-opt/unnamed-fields/field_access.rs +++ b/tests/mir-opt/unnamed-fields/field_access.rs @@ -1,4 +1,5 @@ -// skip-filecheck +// Tests the correct handling of unnamed fields within structs and unions marked with #[repr(C)]. + // EMIT_MIR field_access.foo.SimplifyCfg-initial.after.mir // EMIT_MIR field_access.bar.SimplifyCfg-initial.after.mir @@ -36,18 +37,36 @@ union Bar { fn access(_: T) {} +// CHECK-LABEL: fn foo( fn foo(foo: Foo) { + // CHECK [[a:_.*]] = (_1.0: u8); + // CHECK _.* = access::(move [[a]]) -> [return: bb1, unwind: bb5]; access(foo.a); + // CHECK [[b:_.*]] = ((_1.1: Foo::{anon_adt#0}).0: i8); + // CHECK _.* = access::(move [[b]]) -> [return: bb2, unwind: bb5]; access(foo.b); + // CHECK [[c:_.*]] = ((_1.1: Foo::{anon_adt#0}).1: bool); + // CHECK _.* = access::(move [[c]]) -> [return: bb3, unwind: bb5]; access(foo.c); + // CHECK [[d:_.*]] = (((_1.2: Foo::{anon_adt#1}).0: Foo::{anon_adt#1}::{anon_adt#0}).0: [u8; 1]); + // CHECK _.* = access::<[u8; 1]>(move [[d]]) -> [return: bb4, unwind: bb5]; access(foo.d); } +// CHECK-LABEL: fn bar( fn bar(bar: Bar) { unsafe { + // CHECK [[a:_.*]] = (_1.0: u8); + // CHECK _.* = access::(move [[a]]) -> [return: bb1, unwind: bb5]; access(bar.a); + // CHECK [[b:_.*]] = ((_1.1: Bar::{anon_adt#0}).0: i8); + // CHECK _.* = access::(move [[b]]) -> [return: bb2, unwind: bb5]; access(bar.b); + // CHECK [[c:_.*]] = ((_1.1: Bar::{anon_adt#0}).1: bool); + // CHECK _.* = access::(move [[c]]) -> [return: bb3, unwind: bb5]; access(bar.c); + // CHECK [[d:_.*]] = (((_1.2: Bar::{anon_adt#1}).0: Bar::{anon_adt#1}::{anon_adt#0}).0: [u8; 1]); + // CHECK _.* = access::<[u8; 1]>(move [[d]]) -> [return: bb4, unwind: bb5]; access(bar.d); } }