about summary refs log tree commit diff
diff options
context:
space:
mode:
author5225225 <5225225@mailbox.org>2022-05-23 16:44:05 +0100
committer5225225 <5225225@mailbox.org>2022-05-24 14:26:52 +0100
commitd27ec6c86d0c3464b5da71c86f0db53ff59242c0 (patch)
tree2767f3c13783bb2f383a67514ded1941acb58152
parent5011ae46a14fa30fd247b51ffe71e0bab1a63d04 (diff)
downloadrust-d27ec6c86d0c3464b5da71c86f0db53ff59242c0.tar.gz
rust-d27ec6c86d0c3464b5da71c86f0db53ff59242c0.zip
Add flag for stricter checks on uninit/zeroed
-rw-r--r--src/intrinsics/mod.rs15
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,