- // MIR for `too_complex` before SeparateConstSwitch + // MIR for `too_complex` after SeparateConstSwitch fn too_complex(_1: Result) -> Option { debug x => _1; let mut _0: std::option::Option; let mut _2: std::ops::ControlFlow; let mut _3: isize; let _4: i32; let _5: usize; let mut _6: isize; let _7: i32; let _8: usize; scope 1 { debug v => _4; } scope 2 { debug r => _5; } scope 3 { debug v => _7; } scope 4 { debug r => _8; } bb0: { StorageLive(_2); _3 = discriminant(_1); switchInt(move _3) -> [0: bb2, 1: bb1, otherwise: bb7]; } bb1: { _5 = ((_1 as Err).0: usize); _2 = ControlFlow::::Break(_5); goto -> bb3; } bb2: { _4 = ((_1 as Ok).0: i32); _2 = ControlFlow::::Continue(_4); goto -> bb3; } bb3: { _6 = discriminant(_2); switchInt(move _6) -> [0: bb5, 1: bb4, otherwise: bb7]; } bb4: { StorageLive(_8); _8 = ((_2 as Break).0: usize); _0 = const Option::::None; StorageDead(_8); goto -> bb6; } bb5: { _7 = ((_2 as Continue).0: i32); _0 = Option::::Some(_7); goto -> bb6; } bb6: { StorageDead(_2); return; } bb7: { unreachable; } } ALLOC0 (size: 8, align: 4) { 00 00 00 00 __ __ __ __ │ ....░░░░ }