- // 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 mut _5: i32; let _6: usize; let mut _7: usize; let mut _8: isize; let _9: i32; let mut _10: i32; let _11: usize; scope 1 { debug v => _4; } scope 2 { debug r => _6; } scope 3 { debug v => _9; } scope 4 { debug r => _11; } bb0: { StorageLive(_2); _3 = discriminant(_1); switchInt(move _3) -> [0: bb3, 1: bb1, otherwise: bb2]; } bb1: { StorageLive(_6); _6 = ((_1 as Err).0: usize); StorageLive(_7); _7 = _6; _2 = ControlFlow::::Break(move _7); StorageDead(_7); StorageDead(_6); - goto -> bb4; + goto -> bb8; } bb2: { unreachable; } bb3: { StorageLive(_4); _4 = ((_1 as Ok).0: i32); StorageLive(_5); _5 = _4; _2 = ControlFlow::::Continue(move _5); StorageDead(_5); StorageDead(_4); goto -> bb4; } bb4: { _8 = discriminant(_2); - switchInt(move _8) -> [0: bb6, 1: bb5, otherwise: bb2]; + goto -> bb6; } bb5: { StorageLive(_11); _11 = ((_2 as Break).0: usize); _0 = Option::::None; StorageDead(_11); goto -> bb7; } bb6: { StorageLive(_9); _9 = ((_2 as Continue).0: i32); StorageLive(_10); _10 = _9; _0 = Option::::Some(move _10); StorageDead(_10); StorageDead(_9); goto -> bb7; } bb7: { StorageDead(_2); return; + } + + bb8: { + _8 = discriminant(_2); + goto -> bb5; } }