diff options
| author | Ben Kimock <kimockb@gmail.com> | 2023-06-13 18:25:15 -0400 |
|---|---|---|
| committer | Ben Kimock <kimockb@gmail.com> | 2023-06-16 09:20:33 -0400 |
| commit | 7a2490eba3f161c81ad243c7d957b337dd70a2af (patch) | |
| tree | a6a98955d8285cecb16912a6166637f0d3610321 /compiler/rustc_mir_transform/src/check_alignment.rs | |
| parent | 99b334696fffe8c08d2e6a978862849d5a89f875 (diff) | |
| download | rust-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.rs | 10 |
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, }, }); } |
