1 // Checks that `SimplifyArmIdentity` is not applied if enums have incompatible layouts.
2 // Regression test for issue #66856.
4 // compile-flags: -Zmir-opt-level=2
16 let e: Src = Src::Foo(0);
17 let _: Dst = match e {
18 Src::Foo(x) => Dst::Foo(x),
19 Src::Bar => Dst::Foo(0),
24 // START rustc.main.SimplifyArmIdentity.before.mir
29 // ((_1 as Foo).0: u8) = const 0u8;
30 // discriminant(_1) = 0;
32 // _3 = discriminant(_1);
33 // switchInt(move _3) -> [0isize: bb3, 1isize: bb1, otherwise: bb2];
36 // ((_2 as Foo).0: u8) = const 0u8;
37 // discriminant(_2) = 0;
42 // _4 = ((_1 as Foo).0: u8);
43 // ((_2 as Foo).0: u8) = move _4;
44 // discriminant(_2) = 0;
49 // END rustc.main.SimplifyArmIdentity.before.mir
50 // START rustc.main.SimplifyArmIdentity.after.mir
55 // ((_1 as Foo).0: u8) = const 0u8;
56 // discriminant(_1) = 0;
58 // _3 = discriminant(_1);
59 // switchInt(move _3) -> [0isize: bb3, 1isize: bb1, otherwise: bb2];
62 // ((_2 as Foo).0: u8) = const 0u8;
63 // discriminant(_2) = 0;
68 // _4 = ((_1 as Foo).0: u8);
69 // ((_2 as Foo).0: u8) = move _4;
70 // discriminant(_2) = 0;
75 // END rustc.main.SimplifyArmIdentity.after.mir