summaryrefslogtreecommitdiffstats
path: root/src/test/codegen/panic-in-drop-abort.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
commit218caa410aa38c29984be31a5229b9fa717560ee (patch)
treec54bd55eeb6e4c508940a30e94c0032fbd45d677 /src/test/codegen/panic-in-drop-abort.rs
parentReleasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz
rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/codegen/panic-in-drop-abort.rs')
-rw-r--r--src/test/codegen/panic-in-drop-abort.rs57
1 files changed, 0 insertions, 57 deletions
diff --git a/src/test/codegen/panic-in-drop-abort.rs b/src/test/codegen/panic-in-drop-abort.rs
deleted file mode 100644
index 7a84484c4..000000000
--- a/src/test/codegen/panic-in-drop-abort.rs
+++ /dev/null
@@ -1,57 +0,0 @@
-// compile-flags: -Z panic-in-drop=abort -O
-// 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);
-}