- // MIR for `opt1` before EarlyOtherwiseBranch + // MIR for `opt1` after EarlyOtherwiseBranch fn opt1(_1: Option, _2: Option, _3: Option) -> u32 { debug x => _1; debug y => _2; debug z => _3; let mut _0: u32; let mut _4: (std::option::Option, std::option::Option, std::option::Option); let mut _5: std::option::Option; let mut _6: std::option::Option; let mut _7: std::option::Option; let mut _8: isize; let mut _9: isize; let mut _10: isize; let mut _11: isize; let mut _12: isize; let _13: u32; let _14: u32; let _15: u32; scope 1 { debug a => _13; debug b => _14; debug c => _15; } bb0: { StorageLive(_4); StorageLive(_5); _5 = copy _1; StorageLive(_6); _6 = copy _2; StorageLive(_7); _7 = copy _3; _4 = (move _5, move _6, move _7); StorageDead(_7); StorageDead(_6); StorageDead(_5); _12 = discriminant((_4.0: std::option::Option)); switchInt(move _12) -> [0: bb4, 1: bb2, otherwise: bb9]; } bb1: { _0 = const 1_u32; goto -> bb8; } bb2: { _9 = discriminant((_4.1: std::option::Option)); switchInt(move _9) -> [1: bb3, 0: bb1, otherwise: bb9]; } bb3: { _8 = discriminant((_4.2: std::option::Option)); switchInt(move _8) -> [1: bb7, 0: bb1, otherwise: bb9]; } bb4: { _11 = discriminant((_4.1: std::option::Option)); switchInt(move _11) -> [0: bb5, 1: bb1, otherwise: bb9]; } bb5: { _10 = discriminant((_4.2: std::option::Option)); switchInt(move _10) -> [0: bb6, 1: bb1, otherwise: bb9]; } bb6: { _0 = const 2_u32; goto -> bb8; } bb7: { StorageLive(_13); _13 = copy (((_4.0: std::option::Option) as Some).0: u32); StorageLive(_14); _14 = copy (((_4.1: std::option::Option) as Some).0: u32); StorageLive(_15); _15 = copy (((_4.2: std::option::Option) as Some).0: u32); _0 = const 0_u32; StorageDead(_15); StorageDead(_14); StorageDead(_13); goto -> bb8; } bb8: { StorageDead(_4); return; } bb9: { unreachable; } }