- // MIR for `main` before UnreachablePropagation + // MIR for `main` after UnreachablePropagation fn main() -> () { let mut _0: (); let mut _1: std::option::Option; let mut _2: isize; let _5: (); let mut _6: bool; let mut _7: !; scope 1 { debug _x => _3; let _3: Empty; let mut _4: i32; scope 2 { debug _y => _4; } } bb0: { StorageLive(_1); _1 = empty() -> [return: bb1, unwind unreachable]; } bb1: { _2 = discriminant(_1); - switchInt(move _2) -> [1: bb2, otherwise: bb6]; + switchInt(move _2) -> [1: bb2, otherwise: bb3]; } bb2: { - StorageLive(_3); - _3 = move ((_1 as Some).0: Empty); - StorageLive(_4); - StorageLive(_5); - StorageLive(_6); - _6 = const true; - switchInt(move _6) -> [0: bb4, otherwise: bb3]; - } - - bb3: { - _4 = const 21_i32; - _5 = const (); - goto -> bb5; - } - - bb4: { - _4 = const 42_i32; - _5 = const (); - goto -> bb5; - } - - bb5: { - StorageDead(_6); - StorageDead(_5); - StorageLive(_7); unreachable; } - bb6: { + bb3: { _0 = const (); StorageDead(_1); return; } }