about summary refs log tree commit diff
path: root/tests/codegen/panic-in-drop-abort.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/codegen/panic-in-drop-abort.rs')
-rw-r--r--tests/codegen/panic-in-drop-abort.rs57
1 files changed, 0 insertions, 57 deletions
diff --git a/tests/codegen/panic-in-drop-abort.rs b/tests/codegen/panic-in-drop-abort.rs
deleted file mode 100644
index e89170e56ed..00000000000
--- a/tests/codegen/panic-in-drop-abort.rs
+++ /dev/null
@@ -1,57 +0,0 @@
-//@ compile-flags: -Z panic-in-drop=abort -Copt-level=3
-//@ ignore-msvc
-
-// Ensure that unwinding code paths are eliminated from the output after
-// optimization.
-
-// This test uses ignore-msvc, because the expected optimization does not happen on targets using
-// SEH exceptions with the new LLVM pass manager anymore, see
-// https://github.com/llvm/llvm-project/issues/51311.
-
-// CHECK-NOT: {{(call|invoke).*}}should_not_appear_in_output
-
-#![crate_type = "lib"]
-use std::any::Any;
-use std::mem::forget;
-
-pub struct ExternDrop;
-impl Drop for ExternDrop {
-    #[inline(always)]
-    fn drop(&mut self) {
-        // This call may potentially unwind.
-        extern "Rust" {
-            fn extern_drop();
-        }
-        unsafe {
-            extern_drop();
-        }
-    }
-}
-
-struct AssertNeverDrop;
-impl Drop for AssertNeverDrop {
-    #[inline(always)]
-    fn drop(&mut self) {
-        // This call should be optimized away as unreachable.
-        extern "C" {
-            fn should_not_appear_in_output();
-        }
-        unsafe {
-            should_not_appear_in_output();
-        }
-    }
-}
-
-#[no_mangle]
-pub fn normal_drop(x: ExternDrop) {
-    let guard = AssertNeverDrop;
-    drop(x);
-    forget(guard);
-}
-
-#[no_mangle]
-pub fn indirect_drop(x: Box<dyn Any>) {
-    let guard = AssertNeverDrop;
-    drop(x);
-    forget(guard);
-}