- // MIR for `cand` before EnumSizeOpt
+ // MIR for `cand` after EnumSizeOpt
  
  fn cand() -> Candidate {
      let mut _0: Candidate;
      let mut _1: Candidate;
      let mut _2: Candidate;
      let mut _3: [u8; 8196];
+     let mut _4: [usize; 2];
+     let mut _5: isize;
+     let mut _6: usize;
+     let mut _7: usize;
+     let mut _8: *mut Candidate;
+     let mut _9: *mut u8;
+     let mut _10: *const Candidate;
+     let mut _11: *const u8;
+     let mut _12: [usize; 2];
+     let mut _13: isize;
+     let mut _14: usize;
+     let mut _15: usize;
+     let mut _16: *mut Candidate;
+     let mut _17: *mut u8;
+     let mut _18: *const Candidate;
+     let mut _19: *const u8;
      scope 1 {
          debug a => _1;
      }
  
      bb0: {
          StorageLive(_1);
          _1 = Candidate::Small(const 1_u8);
          StorageLive(_2);
          StorageLive(_3);
          _3 = [const 1_u8; 8196];
          _2 = Candidate::Large(move _3);
          StorageDead(_3);
-         _1 = move _2;
+         StorageLive(_4);
+         _4 = const [2_usize, 8197_usize];
+         _5 = discriminant(_2);
+         _6 = copy _5 as usize (IntToInt);
+         _7 = copy _4[_6];
+         _8 = &raw mut _1;
+         _9 = copy _8 as *mut u8 (PtrToPtr);
+         _10 = &raw const _2;
+         _11 = copy _10 as *const u8 (PtrToPtr);
+         copy_nonoverlapping(dst = copy _9, src = copy _11, count = copy _7);
+         StorageDead(_4);
+         nop;
          StorageDead(_2);
-         _0 = move _1;
+         StorageLive(_12);
+         _12 = const [2_usize, 8197_usize];
+         _13 = discriminant(_1);
+         _14 = copy _13 as usize (IntToInt);
+         _15 = copy _12[_14];
+         _16 = &raw mut _0;
+         _17 = copy _16 as *mut u8 (PtrToPtr);
+         _18 = &raw const _1;
+         _19 = copy _18 as *const u8 (PtrToPtr);
+         copy_nonoverlapping(dst = copy _17, src = copy _19, count = copy _15);
+         StorageDead(_12);
+         nop;
          StorageDead(_1);
          return;
      }
  }
+ 
+ ALLOC0 (size: 16, align: 8) { .. }
  
