Apply suggestions from code review

Co-authored-by: Ralf Jung <post@ralfj.de>
This commit is contained in:
Camille Gillot 2023-10-27 20:51:25 +02:00 committed by GitHub
parent 856161886a
commit 24be43356e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 6 deletions

View file

@ -917,6 +917,7 @@ fn op_to_prop_const<'tcx>(
// Do not try interning a value that contains provenance.
// Due to https://github.com/rust-lang/rust/issues/79738, doing so could lead to bugs.
// FIXME: remove this hack once that issue is fixed.
let alloc_ref = ecx.get_ptr_alloc(mplace.ptr(), size).ok()??;
if alloc_ref.has_provenance() {
return None;
@ -928,6 +929,8 @@ fn op_to_prop_const<'tcx>(
if matches!(ecx.tcx.global_alloc(alloc_id), GlobalAlloc::Memory(_)) {
// `alloc_id` may point to a static. Codegen will choke on an `Indirect` with anything
// by `GlobalAlloc::Memory`, so do fall through to copying if needed.
// FIXME: find a way to treat this more uniformly
// (probably by fixing codegen)
return Some(ConstValue::Indirect { alloc_id, offset });
}
}
@ -939,7 +942,7 @@ fn op_to_prop_const<'tcx>(
// Check that we do not leak a pointer.
// Those pointers may lose part of their identity in codegen.
// See https://github.com/rust-lang/rust/issues/79738.
// FIXME: remove this hack once https://github.com/rust-lang/rust/issues/79738 is fixed.
if ecx.tcx.global_alloc(alloc_id).unwrap_memory().inner().provenance().ptrs().is_empty() {
return Some(value);
}
@ -969,7 +972,7 @@ impl<'tcx> VnState<'_, 'tcx> {
// Check that we do not leak a pointer.
// Those pointers may lose part of their identity in codegen.
// See https://github.com/rust-lang/rust/issues/79738.
// FIXME: remove this hack once https://github.com/rust-lang/rust/issues/79738 is fixed.
assert!(!value.may_have_provenance(self.tcx, op.layout.size));
let const_ = Const::Val(value, op.layout.ty);