- // MIR for `too_complex` before JumpThreading + // MIR for `too_complex` after JumpThreading 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: bb3, 1: bb2, otherwise: bb1]; } bb1: { unreachable; } bb2: { _5 = ((_1 as Err).0: usize); _2 = ControlFlow::::Break(_5); - goto -> bb4; + goto -> bb8; } bb3: { _4 = ((_1 as Ok).0: i32); _2 = ControlFlow::::Continue(_4); goto -> bb4; } bb4: { _6 = discriminant(_2); - switchInt(move _6) -> [0: bb6, 1: bb5, otherwise: bb1]; + goto -> bb6; } bb5: { StorageLive(_8); _8 = ((_2 as Break).0: usize); _0 = const Option::::None; StorageDead(_8); goto -> bb7; } bb6: { _7 = ((_2 as Continue).0: i32); _0 = Option::::Some(_7); goto -> bb7; } bb7: { StorageDead(_2); return; + } + + bb8: { + _6 = discriminant(_2); + goto -> bb5; } } ALLOC0 (size: 8, align: 4) { 00 00 00 00 __ __ __ __ │ ....░░░░ }