- // MIR for `main` before SimplifyCfg-post-analysis
+ // MIR for `main` after SimplifyCfg-post-analysis
  
  fn main() -> () {
      let mut _0: ();
      let mut _1: ();
      let mut _2: bool;
      let mut _3: !;
  
      bb0: {
          goto -> bb1;
      }
  
      bb1: {
-         goto -> bb2;
+         StorageLive(_2);
+         _2 = bar() -> [return: bb2, unwind: bb5];
      }
  
      bb2: {
-         StorageLive(_2);
-         _2 = bar() -> [return: bb3, unwind: bb6];
+         switchInt(move _2) -> [0: bb4, otherwise: bb3];
      }
  
      bb3: {
-         switchInt(move _2) -> [0: bb5, otherwise: bb4];
-     }
- 
-     bb4: {
          _0 = const ();
          StorageDead(_2);
          return;
      }
  
-     bb5: {
+     bb4: {
          _1 = const ();
          StorageDead(_2);
          goto -> bb1;
      }
  
-     bb6 (cleanup): {
+     bb5 (cleanup): {
          resume;
      }
  }
  
