diff options
| author | 5225225 <5225225@mailbox.org> | 2022-05-23 16:44:05 +0100 |
|---|---|---|
| committer | 5225225 <5225225@mailbox.org> | 2022-05-24 14:26:52 +0100 |
| commit | d27ec6c86d0c3464b5da71c86f0db53ff59242c0 (patch) | |
| tree | 2767f3c13783bb2f383a67514ded1941acb58152 | |
| parent | 5011ae46a14fa30fd247b51ffe71e0bab1a63d04 (diff) | |
| download | rust-d27ec6c86d0c3464b5da71c86f0db53ff59242c0.tar.gz rust-d27ec6c86d0c3464b5da71c86f0db53ff59242c0.zip | |
Add flag for stricter checks on uninit/zeroed
| -rw-r--r-- | src/intrinsics/mod.rs | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/intrinsics/mod.rs b/src/intrinsics/mod.rs index f8c69d46d1f..6937e658ed5 100644 --- a/src/intrinsics/mod.rs +++ b/src/intrinsics/mod.rs @@ -58,6 +58,7 @@ pub(crate) use llvm::codegen_llvm_intrinsic_call; use rustc_middle::ty::print::with_no_trimmed_paths; use rustc_middle::ty::subst::SubstsRef; use rustc_span::symbol::{kw, sym, Symbol}; +use rustc_target::abi::InitKind; use crate::prelude::*; use cranelift_codegen::ir::AtomicRmwOp; @@ -671,7 +672,12 @@ fn codegen_regular_intrinsic_call<'tcx>( return; } - if intrinsic == sym::assert_zero_valid && !layout.might_permit_raw_init(fx, /*zero:*/ true) { + if intrinsic == sym::assert_zero_valid + && !layout.might_permit_raw_init( + fx, + InitKind::Zero, + fx.tcx.sess.opts.debugging_opts.strict_init_checks) { + with_no_trimmed_paths!({ crate::base::codegen_panic( fx, @@ -682,7 +688,12 @@ fn codegen_regular_intrinsic_call<'tcx>( return; } - if intrinsic == sym::assert_uninit_valid && !layout.might_permit_raw_init(fx, /*zero:*/ false) { + if intrinsic == sym::assert_uninit_valid + && !layout.might_permit_raw_init( + fx, + InitKind::Uninit, + fx.tcx.sess.opts.debugging_opts.strict_init_checks) { + with_no_trimmed_paths!({ crate::base::codegen_panic( fx, |
