don't try to remove `drop_in_place` calls in `RemoveUnneededDrops`
diff --git a/compiler/rustc_mir_transform/src/remove_unneeded_drops.rs b/compiler/rustc_mir_transform/src/remove_unneeded_drops.rs
index 6c2dfc5..132dc85 100644
--- a/compiler/rustc_mir_transform/src/remove_unneeded_drops.rs
+++ b/compiler/rustc_mir_transform/src/remove_unneeded_drops.rs
@@ -4,13 +4,7 @@
 //! useful because (unlike MIR building) it runs after type checking, so it can make use of
 //! `TypingMode::PostAnalysis` to provide more precise type information, especially about opaque
 //! types.
-//!
-//! When we're optimizing, we also remove calls to `drop_in_place<T>` when `T` isn't `needs_drop`,
-//! as those are essentially equivalent to `Drop` terminators. While the compiler doesn't insert
-//! them automatically, preferring the built-in instead, they're common in generic code (such as
-//! `Vec::truncate`) so removing them from things like inlined `Vec<u8>` is helpful.
 
-use rustc_hir::LangItem;
 use rustc_middle::mir::*;
 use rustc_middle::ty::TyCtxt;
 use tracing::{debug, trace};
@@ -27,19 +21,8 @@ fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
         let mut should_simplify = false;
         for block in body.basic_blocks.as_mut() {
             let terminator = block.terminator_mut();
-            let (ty, target) = match terminator.kind {
-                TerminatorKind::Drop { place, target, .. } => {
-                    (place.ty(&body.local_decls, tcx).ty, target)
-                }
-                TerminatorKind::Call { ref func, target: Some(target), .. }
-                    if tcx.sess.mir_opt_level() > 0
-                        && let Some((def_id, generics)) = func.const_fn_def()
-                        && tcx.is_lang_item(def_id, LangItem::DropInPlace) =>
-                {
-                    (generics.type_at(0), target)
-                }
-                _ => continue,
-            };
+            let TerminatorKind::Drop { place, target, .. } = terminator.kind else { continue };
+            let ty = place.ty(&body.local_decls, tcx).ty;
 
             if ty.needs_drop(tcx, typing_env) {
                 continue;
diff --git a/tests/mir-opt/inline/inline_empty_drop_glue.rs b/tests/mir-opt/inline/inline_empty_drop_glue.rs
new file mode 100644
index 0000000..ad7dbb0
--- /dev/null
+++ b/tests/mir-opt/inline/inline_empty_drop_glue.rs
@@ -0,0 +1,17 @@
+//@ test-mir-pass: Inline
+//@ needs-unwind
+//@ compile-flags: -Zmir-opt-level=1
+
+// EMIT_MIR inline_empty_drop_glue.slice_in_place.Inline.diff
+unsafe fn slice_in_place(ptr: *mut [char]) {
+    // CHECK-LABEL: fn slice_in_place(_1: *mut [char])
+    // CHECK:      bb0: {
+    // CHECK-NEXT:   return;
+    // CHECK-NEXT: }
+    std::ptr::drop_in_place(ptr)
+}
+
+fn main() {
+    let mut a = ['o', 'k'];
+    unsafe { slice_in_place(&raw mut a) };
+}
diff --git a/tests/mir-opt/remove_unneeded_drop_in_place.slice_in_place.RemoveUnneededDrops.diff b/tests/mir-opt/inline/inline_empty_drop_glue.slice_in_place.Inline.diff
similarity index 68%
rename from tests/mir-opt/remove_unneeded_drop_in_place.slice_in_place.RemoveUnneededDrops.diff
rename to tests/mir-opt/inline/inline_empty_drop_glue.slice_in_place.Inline.diff
index 4d70e71..68136b0 100644
--- a/tests/mir-opt/remove_unneeded_drop_in_place.slice_in_place.RemoveUnneededDrops.diff
+++ b/tests/mir-opt/inline/inline_empty_drop_glue.slice_in_place.Inline.diff
@@ -1,10 +1,12 @@
-- // MIR for `slice_in_place` before RemoveUnneededDrops
-+ // MIR for `slice_in_place` after RemoveUnneededDrops
+- // MIR for `slice_in_place` before Inline
++ // MIR for `slice_in_place` after Inline
   
   fn slice_in_place(_1: *mut [char]) -> () {
       debug ptr => _1;
       let mut _0: ();
       let mut _2: *mut [char];
++     scope 1 (inlined drop_in_place::<[char]> - shim(None)) {
++     }
   
       bb0: {
           StorageLive(_2);
diff --git a/tests/mir-opt/remove_unneeded_drop_in_place.rs b/tests/mir-opt/remove_unneeded_drop_in_place.rs
deleted file mode 100644
index 470c649..0000000
--- a/tests/mir-opt/remove_unneeded_drop_in_place.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-//@ test-mir-pass: RemoveUnneededDrops
-//@ needs-unwind
-//@ compile-flags: -Z mir-opt-level=1
-
-// EMIT_MIR remove_unneeded_drop_in_place.slice_in_place.RemoveUnneededDrops.diff
-unsafe fn slice_in_place(ptr: *mut [char]) {
-    // CHECK-LABEL: fn slice_in_place(_1: *mut [char])
-    // CHECK: bb0: {
-    // CHECK-NEXT: return;
-    // CHECK-NEXT: }
-    std::ptr::drop_in_place(ptr)
-}
-
-fn main() {
-    let mut a = ['o', 'k'];
-    unsafe { slice_in_place(&raw mut a) };
-}