- // MIR for `duplicate_chain` before JumpThreading
+ // MIR for `duplicate_chain` after JumpThreading
  
  fn duplicate_chain(_1: bool) -> u8 {
      let mut _0: u8;
      let mut _2: u8;
      let mut _3: i32;
      let mut _4: i32;
  
      bb0: {
          switchInt(copy _1) -> [1: bb1, otherwise: bb2];
      }
  
      bb1: {
          _2 = const 5_u8;
          goto -> bb3;
      }
  
      bb2: {
          _2 = const 5_u8;
          goto -> bb3;
      }
  
      bb3: {
          _3 = const 13_i32;
          goto -> bb4;
      }
  
      bb4: {
          _4 = const 15_i32;
-         switchInt(copy _2) -> [5: bb5, otherwise: bb6];
+         goto -> bb5;
      }
  
      bb5: {
          _0 = const 7_u8;
          return;
      }
  
      bb6: {
          _0 = const 9_u8;
          return;
      }
  }
  
