- // MIR for `aggregate_copy` before JumpThreading
+ // MIR for `aggregate_copy` after JumpThreading
  
  fn aggregate_copy() -> u32 {
      let mut _0: u32;
      let _1: (u32, u32);
      let mut _4: bool;
      let mut _5: u32;
      scope 1 {
          debug a => _1;
          let _2: (u32, u32);
          scope 2 {
              debug b => _2;
              let _3: u32;
              scope 3 {
                  debug c => _3;
              }
          }
      }
  
      bb0: {
          StorageLive(_1);
          _1 = const aggregate_copy::Foo;
          StorageLive(_2);
          _2 = copy _1;
          StorageLive(_3);
          _3 = copy (_2.1: u32);
          StorageLive(_4);
          StorageLive(_5);
          _5 = copy _3;
          _4 = Eq(move _5, const 2_u32);
-         switchInt(move _4) -> [0: bb2, otherwise: bb1];
+         goto -> bb2;
      }
  
      bb1: {
          StorageDead(_5);
          _0 = copy (_2.0: u32);
          goto -> bb3;
      }
  
      bb2: {
          StorageDead(_5);
          _0 = const 13_u32;
          goto -> bb3;
      }
  
      bb3: {
          StorageDead(_4);
          StorageDead(_3);
          StorageDead(_2);
          StorageDead(_1);
          return;
      }
  }
  
