- // MIR for `simple` before UnreachableEnumBranching
+ // MIR for `simple` after UnreachableEnumBranching
  
  fn simple() -> () {
      let mut _0: ();
      let _1: &str;
      let mut _2: Test1;
      let mut _3: isize;
      let _4: &str;
      let _5: &str;
  
      bb0: {
          StorageLive(_1);
          StorageLive(_2);
          _2 = Test1::C;
          _3 = discriminant(_2);
-         switchInt(move _3) -> [0: bb3, 1: bb2, otherwise: bb1];
+         switchInt(move _3) -> [0: bb5, 1: bb5, 2: bb1, otherwise: bb5];
      }
  
      bb1: {
          StorageLive(_5);
          _5 = const "C";
          _1 = &(*_5);
          StorageDead(_5);
          goto -> bb4;
      }
  
      bb2: {
          StorageLive(_4);
          _4 = const "B(Empty)";
          _1 = &(*_4);
          StorageDead(_4);
          goto -> bb4;
      }
  
      bb3: {
          _1 = const "A(Empty)";
          goto -> bb4;
      }
  
      bb4: {
          StorageDead(_2);
          StorageDead(_1);
          _0 = const ();
          return;
+     }
+ 
+     bb5: {
+         unreachable;
      }
  }
  
