Skip to content

Commit d27ec6c

Browse files
committed
Add flag for stricter checks on uninit/zeroed
1 parent 5011ae4 commit d27ec6c

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/intrinsics/mod.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ pub(crate) use llvm::codegen_llvm_intrinsic_call;
5858
use rustc_middle::ty::print::with_no_trimmed_paths;
5959
use rustc_middle::ty::subst::SubstsRef;
6060
use rustc_span::symbol::{kw, sym, Symbol};
61+
use rustc_target::abi::InitKind;
6162

6263
use crate::prelude::*;
6364
use cranelift_codegen::ir::AtomicRmwOp;
@@ -671,7 +672,12 @@ fn codegen_regular_intrinsic_call<'tcx>(
671672
return;
672673
}
673674

674-
if intrinsic == sym::assert_zero_valid && !layout.might_permit_raw_init(fx, /*zero:*/ true) {
675+
if intrinsic == sym::assert_zero_valid
676+
&& !layout.might_permit_raw_init(
677+
fx,
678+
InitKind::Zero,
679+
fx.tcx.sess.opts.debugging_opts.strict_init_checks) {
680+
675681
with_no_trimmed_paths!({
676682
crate::base::codegen_panic(
677683
fx,
@@ -682,7 +688,12 @@ fn codegen_regular_intrinsic_call<'tcx>(
682688
return;
683689
}
684690

685-
if intrinsic == sym::assert_uninit_valid && !layout.might_permit_raw_init(fx, /*zero:*/ false) {
691+
if intrinsic == sym::assert_uninit_valid
692+
&& !layout.might_permit_raw_init(
693+
fx,
694+
InitKind::Uninit,
695+
fx.tcx.sess.opts.debugging_opts.strict_init_checks) {
696+
686697
with_no_trimmed_paths!({
687698
crate::base::codegen_panic(
688699
fx,

0 commit comments

Comments
 (0)