- // 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; } bb1: { _4 = discriminant(_1); switchInt(move _4) -> [0: bb4, 1: bb5, 2: bb6, 3: bb3, otherwise: bb2]; } bb2: { unreachable; } bb3: { _0 = const (); StorageDead(_2); StorageDead(_1); return; } bb4: { StorageLive(_5); _5 = DFA::B; _1 = move _5; _3 = const (); StorageDead(_5); goto -> bb1; } bb5: { StorageLive(_6); _6 = DFA::C; _1 = move _6; _3 = const (); StorageDead(_6); goto -> bb1; } bb6: { StorageLive(_7); _7 = DFA::D; _1 = move _7; _3 = const (); StorageDead(_7); goto -> bb1; } }