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