about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform/src/check_alignment.rs
diff options
context:
space:
mode:
authorBen Kimock <kimockb@gmail.com>2023-06-13 18:25:15 -0400
committerBen Kimock <kimockb@gmail.com>2023-06-16 09:20:33 -0400
commit7a2490eba3f161c81ad243c7d957b337dd70a2af (patch)
treea6a98955d8285cecb16912a6166637f0d3610321 /compiler/rustc_mir_transform/src/check_alignment.rs
parent99b334696fffe8c08d2e6a978862849d5a89f875 (diff)
downloadrust-7a2490eba3f161c81ad243c7d957b337dd70a2af.tar.gz
rust-7a2490eba3f161c81ad243c7d957b337dd70a2af.zip
Launch a non-unwinding panic for misaligned pointer deref
Diffstat (limited to 'compiler/rustc_mir_transform/src/check_alignment.rs')
-rw-r--r--compiler/rustc_mir_transform/src/check_alignment.rs10
1 files changed, 4 insertions, 6 deletions
diff --git a/compiler/rustc_mir_transform/src/check_alignment.rs b/compiler/rustc_mir_transform/src/check_alignment.rs
index ef64f70fdf3..2787092566f 100644
--- a/compiler/rustc_mir_transform/src/check_alignment.rs
+++ b/compiler/rustc_mir_transform/src/check_alignment.rs
@@ -9,7 +9,6 @@ use rustc_middle::mir::{
 };
 use rustc_middle::ty::{Ty, TyCtxt, TypeAndMut};
 use rustc_session::Session;
-use rustc_target::spec::PanicStrategy;
 
 pub struct CheckAlignment;
 
@@ -237,11 +236,10 @@ fn insert_alignment_check<'tcx>(
                 required: Operand::Copy(alignment),
                 found: Operand::Copy(addr),
             }),
-            unwind: if tcx.sess.panic_strategy() == PanicStrategy::Unwind {
-                UnwindAction::Terminate
-            } else {
-                UnwindAction::Unreachable
-            },
+            // The panic symbol that this calls is #[rustc_nounwind]. We never want to insert an
+            // unwind into unsafe code, because unwinding could make a failing UB check turn into
+            // much worse UB when we start unwinding.
+            unwind: UnwindAction::Unreachable,
         },
     });
 }