- // MIR for `enums` before ScalarReplacementOfAggregates
+ // MIR for `enums` after ScalarReplacementOfAggregates
  
  fn enums(_1: usize) -> usize {
      debug a => _1;
      let mut _0: usize;
      let mut _2: std::option::Option<usize>;
      let mut _3: usize;
      let mut _4: isize;
      scope 1 {
          debug a => _5;
          let _5: usize;
      }
  
      bb0: {
          StorageLive(_2);
          StorageLive(_3);
          _3 = copy _1;
          _2 = Option::<usize>::Some(move _3);
          StorageDead(_3);
          _4 = discriminant(_2);
          switchInt(move _4) -> [1: bb1, otherwise: bb2];
      }
  
      bb1: {
          StorageLive(_5);
          _5 = copy ((_2 as Some).0: usize);
          _0 = copy _5;
          StorageDead(_5);
          goto -> bb3;
      }
  
      bb2: {
          _0 = const 0_usize;
          goto -> bb3;
      }
  
      bb3: {
          StorageDead(_2);
          return;
      }
  }
  
