Skip to content

Commit 801b1a1

Browse files
committed
Auto merge of rust-lang#105582 - saethlin:instcombine-assert-inhabited, r=cjgillot
InstCombine away intrinsic validity assertions This optimization (currently) fires 246 times on the standard library. It seems to fire hardly at all on the big crates in the benchmark suite. Interesting.
2 parents 739938d + 39b34dc commit 801b1a1

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/intrinsics/mod.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ mod simd;
2121
pub(crate) use cpuid::codegen_cpuid_call;
2222
pub(crate) use llvm::codegen_llvm_intrinsic_call;
2323

24+
use rustc_middle::ty::layout::HasParamEnv;
2425
use rustc_middle::ty::print::with_no_trimmed_paths;
2526
use rustc_middle::ty::subst::SubstsRef;
2627
use rustc_span::symbol::{kw, sym, Symbol};
@@ -659,7 +660,9 @@ fn codegen_regular_intrinsic_call<'tcx>(
659660
return;
660661
}
661662

662-
if intrinsic == sym::assert_zero_valid && !fx.tcx.permits_zero_init(layout) {
663+
if intrinsic == sym::assert_zero_valid
664+
&& !fx.tcx.permits_zero_init(fx.param_env().and(layout))
665+
{
663666
with_no_trimmed_paths!({
664667
crate::base::codegen_panic(
665668
fx,
@@ -674,7 +677,7 @@ fn codegen_regular_intrinsic_call<'tcx>(
674677
}
675678

676679
if intrinsic == sym::assert_mem_uninitialized_valid
677-
&& !fx.tcx.permits_uninit_init(layout)
680+
&& !fx.tcx.permits_uninit_init(fx.param_env().and(layout))
678681
{
679682
with_no_trimmed_paths!({
680683
crate::base::codegen_panic(

0 commit comments

Comments
 (0)