Rollup merge of #108364 - Nilstrieb:validity-checks-refactor, r=compiler-errors
Unify validity checks into a single query Previously, there were two queries to check whether a type allows the 0x01 or zeroed bitpattern. I am planning on adding a further initness to check in #100423, truly uninit for MaybeUninit, which would make this three queries. This seems overkill for such a small feature, so this PR unifies them into one. I am not entirely happy with the naming and key type and open for improvements. r? oli-obk
This commit is contained in:
commit
32317b5a5b
@ -21,7 +21,8 @@ mod simd;
|
|||||||
pub(crate) use cpuid::codegen_cpuid_call;
|
pub(crate) use cpuid::codegen_cpuid_call;
|
||||||
pub(crate) use llvm::codegen_llvm_intrinsic_call;
|
pub(crate) use llvm::codegen_llvm_intrinsic_call;
|
||||||
|
|
||||||
use rustc_middle::ty::layout::HasParamEnv;
|
use rustc_middle::ty;
|
||||||
|
use rustc_middle::ty::layout::{HasParamEnv, InitKind};
|
||||||
use rustc_middle::ty::print::with_no_trimmed_paths;
|
use rustc_middle::ty::print::with_no_trimmed_paths;
|
||||||
use rustc_middle::ty::subst::SubstsRef;
|
use rustc_middle::ty::subst::SubstsRef;
|
||||||
use rustc_span::symbol::{kw, sym, Symbol};
|
use rustc_span::symbol::{kw, sym, Symbol};
|
||||||
@ -642,7 +643,7 @@ fn codegen_regular_intrinsic_call<'tcx>(
|
|||||||
if intrinsic == sym::assert_zero_valid
|
if intrinsic == sym::assert_zero_valid
|
||||||
&& !fx
|
&& !fx
|
||||||
.tcx
|
.tcx
|
||||||
.permits_zero_init(fx.param_env().and(ty))
|
.check_validity_of_init((InitKind::Zero, fx.param_env().and(ty)))
|
||||||
.expect("expected to have layout during codegen")
|
.expect("expected to have layout during codegen")
|
||||||
{
|
{
|
||||||
with_no_trimmed_paths!({
|
with_no_trimmed_paths!({
|
||||||
@ -661,7 +662,10 @@ fn codegen_regular_intrinsic_call<'tcx>(
|
|||||||
if intrinsic == sym::assert_mem_uninitialized_valid
|
if intrinsic == sym::assert_mem_uninitialized_valid
|
||||||
&& !fx
|
&& !fx
|
||||||
.tcx
|
.tcx
|
||||||
.permits_uninit_init(fx.param_env().and(ty))
|
.check_validity_of_init((
|
||||||
|
InitKind::UninitMitigated0x01Fill,
|
||||||
|
fx.param_env().and(ty),
|
||||||
|
))
|
||||||
.expect("expected to have layout during codegen")
|
.expect("expected to have layout during codegen")
|
||||||
{
|
{
|
||||||
with_no_trimmed_paths!({
|
with_no_trimmed_paths!({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user