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