- // MIR for `aggregate_struct_then_transmute` before GVN
+ // MIR for `aggregate_struct_then_transmute` after GVN
  
  fn aggregate_struct_then_transmute(_1: u16, _2: *const u8) -> () {
      debug id => _1;
      debug thin => _2;
      let mut _0: ();
      let _3: MyId;
      let mut _4: (u16) is 0..=55554;
      let mut _5: u16;
      let _6: ();
      let mut _7: u16;
      let mut _8: MyId;
      let mut _10: u16;
      let mut _11: std::marker::PhantomData<std::string::String>;
      let _12: ();
      let mut _13: u16;
      let mut _14: TypedId<std::string::String>;
      let mut _16: u16;
      let _17: ();
      let mut _18: u16;
      let mut _19: std::result::Result<Never, u16>;
      let mut _21: u16;
      let _22: ();
      let mut _23: u32;
      let mut _24: std::option::Option<u16>;
      let mut _26: (u16) is 0..=55554;
      let mut _27: u16;
      let _28: ();
      let mut _29: i16;
      let mut _30: MyId;
      let mut _32: u16;
      let mut _33: u16;
      let _34: ();
      let mut _35: u32;
      let mut _36: aggregate_struct_then_transmute::Pair;
      let mut _38: u16;
      let mut _39: u16;
      let _40: ();
      let mut _41: u16;
      let mut _42: aggregate_struct_then_transmute::Pair;
      let mut _44: u16;
      let _45: ();
      let mut _46: u16;
      let mut _47: (u16,);
      let mut _49: u16;
      let _50: ();
      let mut _51: u16;
      let mut _52: [u16; 1];
      let mut _54: *const u8;
      let mut _55: ();
      let _56: ();
      let mut _57: *const u8;
      let mut _58: *const i32;
      scope 1 {
          debug a => _3;
          let _9: TypedId<std::string::String>;
          scope 2 {
              debug b => _9;
              let _15: std::result::Result<Never, u16>;
              scope 3 {
                  debug c => _15;
                  let _20: std::option::Option<u16>;
                  scope 4 {
                      debug d => _20;
                      let _25: MyId;
                      scope 5 {
                          debug e => _25;
                          let _31: aggregate_struct_then_transmute::Pair;
                          scope 6 {
                              debug f => _31;
                              let _37: aggregate_struct_then_transmute::Pair;
                              scope 7 {
                                  debug g => _37;
                                  let _43: (u16,);
                                  scope 8 {
                                      debug h => _43;
                                      let _48: [u16; 1];
                                      scope 9 {
                                          debug i => _48;
                                          let _53: *const i32;
                                          scope 10 {
                                              debug j => _53;
                                          }
                                      }
                                  }
                              }
                          }
                      }
                  }
              }
          }
      }
  
      bb0: {
          StorageLive(_3);
-         StorageLive(_4);
+         nop;
          StorageLive(_5);
          _5 = copy _1;
-         _4 = move _5 as (u16) is 0..=55554 (Transmute);
+         _4 = copy _1 as (u16) is 0..=55554 (Transmute);
          StorageDead(_5);
-         _3 = MyId(move _4);
-         StorageDead(_4);
+         _3 = MyId(copy _4);
+         nop;
          StorageLive(_6);
          StorageLive(_7);
          StorageLive(_8);
-         _8 = move _3;
-         _7 = move _8 as u16 (Transmute);
+         _8 = copy _3;
+         _7 = copy _4 as u16 (Transmute);
          StorageDead(_8);
          _6 = opaque::<u16>(move _7) -> [return: bb1, unwind unreachable];
      }
  
      bb1: {
          StorageDead(_7);
          StorageDead(_6);
          StorageLive(_9);
          StorageLive(_10);
          _10 = copy _1;
          StorageLive(_11);
-         _11 = PhantomData::<String>;
-         _9 = TypedId::<String>(move _10, move _11);
+         _11 = const PhantomData::<String>;
+         _9 = TypedId::<String>(copy _1, const PhantomData::<String>);
          StorageDead(_11);
          StorageDead(_10);
          StorageLive(_12);
          StorageLive(_13);
          StorageLive(_14);
-         _14 = move _9;
-         _13 = move _14 as u16 (Transmute);
+         _14 = copy _9;
+         _13 = copy _1;
          StorageDead(_14);
-         _12 = opaque::<u16>(move _13) -> [return: bb2, unwind unreachable];
+         _12 = opaque::<u16>(copy _1) -> [return: bb2, unwind unreachable];
      }
  
      bb2: {
          StorageDead(_13);
          StorageDead(_12);
          StorageLive(_15);
          StorageLive(_16);
          _16 = copy _1;
-         _15 = Result::<Never, u16>::Err(move _16);
+         _15 = Result::<Never, u16>::Err(copy _1);
          StorageDead(_16);
          StorageLive(_17);
          StorageLive(_18);
          StorageLive(_19);
-         _19 = move _15;
-         _18 = move _19 as u16 (Transmute);
+         _19 = copy _15;
+         _18 = copy _1;
          StorageDead(_19);
-         _17 = opaque::<u16>(move _18) -> [return: bb3, unwind unreachable];
+         _17 = opaque::<u16>(copy _1) -> [return: bb3, unwind unreachable];
      }
  
      bb3: {
          StorageDead(_18);
          StorageDead(_17);
          StorageLive(_20);
          StorageLive(_21);
          _21 = copy _1;
-         _20 = Option::<u16>::Some(move _21);
+         _20 = Option::<u16>::Some(copy _1);
          StorageDead(_21);
          StorageLive(_22);
          StorageLive(_23);
          StorageLive(_24);
          _24 = copy _20;
-         _23 = move _24 as u32 (Transmute);
+         _23 = copy _20 as u32 (Transmute);
          StorageDead(_24);
          _22 = opaque::<u32>(move _23) -> [return: bb4, unwind unreachable];
      }
  
      bb4: {
          StorageDead(_23);
          StorageDead(_22);
          StorageLive(_25);
          StorageLive(_26);
          StorageLive(_27);
          _27 = copy _1;
-         _26 = move _27 as (u16) is 0..=55554 (Transmute);
+         _26 = copy _4;
          StorageDead(_27);
-         _25 = MyId(move _26);
+         _25 = copy _3;
          StorageDead(_26);
          StorageLive(_28);
          StorageLive(_29);
          StorageLive(_30);
-         _30 = move _25;
-         _29 = move _30 as i16 (Transmute);
+         _30 = copy _3;
+         _29 = copy _4 as i16 (Transmute);
          StorageDead(_30);
          _28 = opaque::<i16>(move _29) -> [return: bb5, unwind unreachable];
      }
  
      bb5: {
          StorageDead(_29);
          StorageDead(_28);
          StorageLive(_31);
          StorageLive(_32);
          _32 = copy _1;
          StorageLive(_33);
          _33 = copy _1;
-         _31 = Pair(move _32, move _33);
+         _31 = Pair(copy _1, copy _1);
          StorageDead(_33);
          StorageDead(_32);
          StorageLive(_34);
          StorageLive(_35);
          StorageLive(_36);
-         _36 = move _31;
-         _35 = move _36 as u32 (Transmute);
+         _36 = copy _31;
+         _35 = copy _31 as u32 (Transmute);
          StorageDead(_36);
          _34 = opaque::<u32>(move _35) -> [return: bb6, unwind unreachable];
      }
  
      bb6: {
          StorageDead(_35);
          StorageDead(_34);
          StorageLive(_37);
          StorageLive(_38);
          _38 = copy _1;
          StorageLive(_39);
          _39 = copy _1;
-         _37 = Pair(move _38, move _39);
+         _37 = copy _31;
          StorageDead(_39);
          StorageDead(_38);
          StorageLive(_40);
          StorageLive(_41);
          StorageLive(_42);
-         _42 = move _37;
-         _41 = move _42 as u16 (Transmute);
+         _42 = copy _31;
+         _41 = copy _31 as u16 (Transmute);
          StorageDead(_42);
          _40 = opaque::<u16>(move _41) -> [return: bb7, unwind unreachable];
      }
  
      bb7: {
          StorageDead(_41);
          StorageDead(_40);
          StorageLive(_43);
          StorageLive(_44);
          _44 = copy _1;
-         _43 = (move _44,);
+         _43 = (copy _1,);
          StorageDead(_44);
          StorageLive(_45);
          StorageLive(_46);
          StorageLive(_47);
          _47 = copy _43;
-         _46 = move _47 as u16 (Transmute);
+         _46 = copy _1;
          StorageDead(_47);
-         _45 = opaque::<u16>(move _46) -> [return: bb8, unwind unreachable];
+         _45 = opaque::<u16>(copy _1) -> [return: bb8, unwind unreachable];
      }
  
      bb8: {
          StorageDead(_46);
          StorageDead(_45);
          StorageLive(_48);
          StorageLive(_49);
          _49 = copy _1;
-         _48 = [move _49];
+         _48 = [copy _1];
          StorageDead(_49);
          StorageLive(_50);
          StorageLive(_51);
          StorageLive(_52);
          _52 = copy _48;
-         _51 = move _52 as u16 (Transmute);
+         _51 = copy _1;
          StorageDead(_52);
-         _50 = opaque::<u16>(move _51) -> [return: bb9, unwind unreachable];
+         _50 = opaque::<u16>(copy _1) -> [return: bb9, unwind unreachable];
      }
  
      bb9: {
          StorageDead(_51);
          StorageDead(_50);
          StorageLive(_53);
          StorageLive(_54);
          _54 = copy _2;
          StorageLive(_55);
-         _55 = ();
-         _53 = *const i32 from (move _54, move _55);
+         _55 = const ();
+         _53 = *const i32 from (copy _2, const ());
          StorageDead(_55);
          StorageDead(_54);
          StorageLive(_56);
          StorageLive(_57);
          StorageLive(_58);
          _58 = copy _53;
-         _57 = move _58 as *const u8 (Transmute);
+         _57 = copy _2;
          StorageDead(_58);
-         _56 = opaque::<*const u8>(move _57) -> [return: bb10, unwind unreachable];
+         _56 = opaque::<*const u8>(copy _2) -> [return: bb10, unwind unreachable];
      }
  
      bb10: {
          StorageDead(_57);
          StorageDead(_56);
          _0 = const ();
          StorageDead(_53);
          StorageDead(_48);
          StorageDead(_43);
          StorageDead(_37);
          StorageDead(_31);
          StorageDead(_25);
          StorageDead(_20);
          StorageDead(_15);
          StorageDead(_9);
          StorageDead(_3);
          return;
      }
  }
  
