- // MIR for `aggregate` before JumpThreading
+ // MIR for `aggregate` after JumpThreading
  
  fn aggregate() -> u8 {
      let mut _0: u8;
      let _1: u8;
      let _2: u8;
      let mut _3: (u8, u8);
      let mut _4: bool;
      let mut _5: u8;
      scope 1 {
          debug a => _1;
          debug b => _2;
      }
  
      bb0: {
          StorageLive(_3);
          _3 = const aggregate::FOO;
          StorageLive(_1);
          _1 = copy (_3.0: u8);
          StorageLive(_2);
          _2 = copy (_3.1: u8);
          StorageDead(_3);
          StorageLive(_4);
          StorageLive(_5);
          _5 = copy _1;
          _4 = Eq(move _5, const 7_u8);
-         switchInt(move _4) -> [0: bb2, otherwise: bb1];
+         goto -> bb2;
      }
  
      bb1: {
          StorageDead(_5);
          _0 = copy _2;
          goto -> bb3;
      }
  
      bb2: {
          StorageDead(_5);
          _0 = copy _1;
          goto -> bb3;
      }
  
      bb3: {
          StorageDead(_4);
          StorageDead(_2);
          StorageDead(_1);
          return;
      }
  }
  
