about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--compiler/rustc_symbol_mangling/src/legacy.rs30
1 files changed, 9 insertions, 21 deletions
diff --git a/compiler/rustc_symbol_mangling/src/legacy.rs b/compiler/rustc_symbol_mangling/src/legacy.rs
index 60b60db6493..fd35915f644 100644
--- a/compiler/rustc_symbol_mangling/src/legacy.rs
+++ b/compiler/rustc_symbol_mangling/src/legacy.rs
@@ -55,28 +55,16 @@ pub(super) fn mangle(
 
     let hash = get_symbol_hash(tcx, instance, instance_ty, instantiating_crate);
 
-    if let ty::InstanceDef::DropGlue(_drop_in_place, ty) = instance.def {
-        // Use `{{drop}}::<$TYPE>::$hash` as name for the drop glue instead of
-        // `core::mem::drop_in_place::$hash`.
-        let mut printer =
-            SymbolPrinter { tcx, path: SymbolPath::new(), keep_within_component: false };
-        printer.write_str("{{drop}}").unwrap();
-        printer.path.finalize_pending_component();
-        let printer = printer
-            .generic_delimiters(|mut printer| {
-                if let Some(ty) = ty {
-                    printer.print_type(ty)
-                } else {
-                    printer.write_str("_")?;
-                    Ok(printer)
-                }
-            })
-            .unwrap();
-        return printer.path.finish(hash);
-    }
-
     let mut printer = SymbolPrinter { tcx, path: SymbolPath::new(), keep_within_component: false }
-        .print_def_path(def_id, &[])
+        .print_def_path(
+            def_id,
+            if let ty::InstanceDef::DropGlue(_, _) = instance.def {
+                // Add the name of the dropped type to the symbol name
+                &*instance.substs
+            } else {
+                &[]
+            },
+        )
         .unwrap();
 
     if let ty::InstanceDef::VtableShim(..) = instance.def {