- // MIR for `identity` before JumpThreading + // MIR for `identity` after JumpThreading fn identity(_1: Result) -> Result { debug x => _1; let mut _0: std::result::Result; let mut _2: i32; let mut _3: std::ops::ControlFlow, i32>; let mut _4: std::result::Result; let mut _5: isize; let _6: std::result::Result; let mut _7: !; let mut _8: std::result::Result; let _9: i32; scope 1 { debug residual => _6; scope 2 { scope 8 (inlined #[track_caller] as FromResidual>>::from_residual) { debug residual => _8; let _14: i32; let mut _15: i32; scope 9 { debug e => _14; scope 10 (inlined >::from) { debug t => _14; } } } } } scope 3 { debug val => _9; scope 4 { } } scope 5 (inlined as Try>::branch) { debug self => _4; let mut _10: isize; let _11: i32; let _12: i32; let mut _13: std::result::Result; scope 6 { debug v => _11; } scope 7 { debug e => _12; } } bb0: { StorageLive(_2); StorageLive(_3); StorageLive(_4); _4 = _1; StorageLive(_10); StorageLive(_11); StorageLive(_12); _10 = discriminant(_4); switchInt(move _10) -> [0: bb8, 1: bb6, otherwise: bb7]; } bb1: { StorageDead(_12); StorageDead(_11); StorageDead(_10); StorageDead(_4); _5 = discriminant(_3); - switchInt(move _5) -> [0: bb2, 1: bb4, otherwise: bb3]; + goto -> bb2; } bb2: { StorageLive(_9); _9 = ((_3 as Continue).0: i32); _2 = _9; StorageDead(_9); _0 = Result::::Ok(move _2); StorageDead(_2); StorageDead(_3); goto -> bb5; } bb3: { unreachable; } bb4: { StorageLive(_6); _6 = ((_3 as Break).0: std::result::Result); StorageLive(_8); _8 = _6; StorageLive(_14); _14 = move ((_8 as Err).0: i32); StorageLive(_15); _15 = move _14; _0 = Result::::Err(move _15); StorageDead(_15); StorageDead(_14); StorageDead(_8); StorageDead(_6); StorageDead(_2); StorageDead(_3); goto -> bb5; } bb5: { return; } bb6: { _12 = move ((_4 as Err).0: i32); StorageLive(_13); _13 = Result::::Err(move _12); _3 = ControlFlow::, i32>::Break(move _13); StorageDead(_13); - goto -> bb1; + goto -> bb9; } bb7: { unreachable; } bb8: { _11 = move ((_4 as Ok).0: i32); _3 = ControlFlow::, i32>::Continue(move _11); goto -> bb1; + } + + bb9: { + StorageDead(_12); + StorageDead(_11); + StorageDead(_10); + StorageDead(_4); + _5 = discriminant(_3); + goto -> bb4; } }