- // MIR for `dfa` before JumpThreading + // MIR for `dfa` after JumpThreading fn dfa() -> () { let mut _0: (); let mut _1: DFA; let mut _2: !; let mut _3: (); let mut _4: isize; let mut _5: DFA; let mut _6: DFA; let mut _7: DFA; let mut _8: !; scope 1 { debug state => _1; } bb0: { StorageLive(_1); _1 = DFA::A; StorageLive(_2); - goto -> bb1; + goto -> bb7; } bb1: { _4 = discriminant(_1); - switchInt(move _4) -> [0: bb4, 1: bb5, 2: bb6, 3: bb2, otherwise: bb3]; + goto -> bb2; } bb2: { _0 = const (); StorageDead(_2); StorageDead(_1); return; } bb3: { unreachable; } bb4: { StorageLive(_5); _5 = DFA::B; _1 = move _5; _3 = const (); StorageDead(_5); - goto -> bb1; + goto -> bb8; } bb5: { StorageLive(_6); _6 = DFA::C; _1 = move _6; _3 = const (); StorageDead(_6); - goto -> bb1; + goto -> bb9; } bb6: { StorageLive(_7); _7 = DFA::D; _1 = move _7; _3 = const (); StorageDead(_7); goto -> bb1; + } + + bb7: { + _4 = discriminant(_1); + goto -> bb4; + } + + bb8: { + _4 = discriminant(_1); + goto -> bb5; + } + + bb9: { + _4 = discriminant(_1); + goto -> bb6; } }