- // MIR for `eliminate_fallthrough` before UnreachableEnumBranching
+ // MIR for `eliminate_fallthrough` after UnreachableEnumBranching
  
  fn eliminate_fallthrough(_1: S) -> u32 {
      debug s => _1;
      let mut _0: u32;
      let mut _2: isize;
  
      bb0: {
          _2 = discriminant(_1);
-         switchInt(move _2) -> [1: bb3, 2: bb2, otherwise: bb1];
+         switchInt(move _2) -> [1: bb3, 2: bb2, otherwise: bb5];
      }
  
      bb1: {
          _0 = const 3_u32;
          goto -> bb4;
      }
  
      bb2: {
          _0 = const 1_u32;
          goto -> bb4;
      }
  
      bb3: {
          _0 = const 2_u32;
          goto -> bb4;
      }
  
      bb4: {
          return;
+     }
+ 
+     bb5: {
+         unreachable;
      }
  }
  
