- // MIR for `floats` before JumpThreading
+ // MIR for `floats` after JumpThreading
  
  fn floats() -> u32 {
      let mut _0: u32;
      let _1: f64;
      let mut _2: bool;
      let mut _3: bool;
      let mut _4: f64;
      scope 1 {
          debug x => _1;
      }
  
      bb0: {
          StorageLive(_1);
          StorageLive(_2);
          _2 = const true;
-         switchInt(move _2) -> [0: bb2, otherwise: bb1];
+         goto -> bb1;
      }
  
      bb1: {
          _1 = const -0f64;
          goto -> bb3;
      }
  
      bb2: {
          _1 = const 1f64;
          goto -> bb3;
      }
  
      bb3: {
          StorageDead(_2);
          StorageLive(_3);
          StorageLive(_4);
          _4 = copy _1;
          _3 = Eq(move _4, const 0f64);
          switchInt(move _3) -> [0: bb5, otherwise: bb4];
      }
  
      bb4: {
          StorageDead(_4);
          _0 = const 0_u32;
          goto -> bb6;
      }
  
      bb5: {
          StorageDead(_4);
          _0 = const 1_u32;
          goto -> bb6;
      }
  
      bb6: {
          StorageDead(_3);
          StorageDead(_1);
          return;
      }
  }
  
