- // MIR for `enum_identical_variant` before GVN
+ // MIR for `enum_identical_variant` after GVN
  
  fn enum_identical_variant(_1: &Enum1) -> Enum1 {
      debug v => _1;
      let mut _0: Enum1;
      let mut _2: isize;
      let _3: &AllCopy;
      let mut _8: i32;
      let mut _9: u64;
      let mut _10: [i8; 3];
      let mut _11: AllCopy;
      let _12: &AllCopy;
      let mut _17: i32;
      let mut _18: u64;
      let mut _19: [i8; 3];
      let mut _20: AllCopy;
      scope 1 {
          debug v => _3;
          let _4: i32;
          scope 2 {
              debug a => _4;
              let _5: u64;
              scope 3 {
                  debug b => _5;
                  let _6: [i8; 3];
                  scope 4 {
                      debug c => _6;
                      let _7: AllCopy;
                      scope 5 {
                          debug all_copy => _7;
                      }
                  }
              }
          }
      }
      scope 6 {
          debug v => _12;
          let _13: i32;
          scope 7 {
              debug a => _13;
              let _14: u64;
              scope 8 {
                  debug b => _14;
                  let _15: [i8; 3];
                  scope 9 {
                      debug c => _15;
                      let _16: AllCopy;
                      scope 10 {
                          debug all_copy => _16;
                      }
                  }
              }
          }
      }
  
      bb0: {
          _2 = discriminant((*_1));
          switchInt(move _2) -> [0: bb3, 1: bb2, otherwise: bb1];
      }
  
      bb1: {
          unreachable;
      }
  
      bb2: {
          StorageLive(_12);
          _12 = &(((*_1) as B).0: AllCopy);
-         StorageLive(_13);
-         _13 = copy ((*_12).0: i32);
-         StorageLive(_14);
-         _14 = copy ((*_12).1: u64);
-         StorageLive(_15);
-         _15 = copy ((*_12).2: [i8; 3]);
-         StorageLive(_16);
+         nop;
+         _13 = copy ((((*_1) as B).0: AllCopy).0: i32);
+         nop;
+         _14 = copy ((((*_1) as B).0: AllCopy).1: u64);
+         nop;
+         _15 = copy ((((*_1) as B).0: AllCopy).2: [i8; 3]);
+         nop;
          StorageLive(_17);
          _17 = copy _13;
          StorageLive(_18);
          _18 = copy _14;
          StorageLive(_19);
          _19 = copy _15;
-         _16 = AllCopy { a: move _17, b: move _18, c: move _19 };
+         _16 = copy (((*_1) as B).0: AllCopy);
          StorageDead(_19);
          StorageDead(_18);
          StorageDead(_17);
          StorageLive(_20);
-         _20 = move _16;
-         _0 = Enum1::B(move _20);
+         _20 = copy _16;
+         _0 = copy (*_1);
          StorageDead(_20);
-         StorageDead(_16);
-         StorageDead(_15);
-         StorageDead(_14);
-         StorageDead(_13);
+         nop;
+         nop;
+         nop;
+         nop;
          StorageDead(_12);
          goto -> bb4;
      }
  
      bb3: {
          StorageLive(_3);
          _3 = &(((*_1) as A).0: AllCopy);
-         StorageLive(_4);
-         _4 = copy ((*_3).0: i32);
-         StorageLive(_5);
-         _5 = copy ((*_3).1: u64);
-         StorageLive(_6);
-         _6 = copy ((*_3).2: [i8; 3]);
-         StorageLive(_7);
+         nop;
+         _4 = copy ((((*_1) as A).0: AllCopy).0: i32);
+         nop;
+         _5 = copy ((((*_1) as A).0: AllCopy).1: u64);
+         nop;
+         _6 = copy ((((*_1) as A).0: AllCopy).2: [i8; 3]);
+         nop;
          StorageLive(_8);
          _8 = copy _4;
          StorageLive(_9);
          _9 = copy _5;
          StorageLive(_10);
          _10 = copy _6;
-         _7 = AllCopy { a: move _8, b: move _9, c: move _10 };
+         _7 = copy (((*_1) as A).0: AllCopy);
          StorageDead(_10);
          StorageDead(_9);
          StorageDead(_8);
          StorageLive(_11);
-         _11 = move _7;
-         _0 = Enum1::A(move _11);
+         _11 = copy _7;
+         _0 = copy (*_1);
          StorageDead(_11);
-         StorageDead(_7);
-         StorageDead(_6);
-         StorageDead(_5);
-         StorageDead(_4);
+         nop;
+         nop;
+         nop;
+         nop;
          StorageDead(_3);
          goto -> bb4;
      }
  
      bb4: {
          return;
      }
  }
  
