mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-04 19:29:07 +00:00
Rollup merge of #91088 - RalfJung:revert, r=oli-obk
Revert "require full validity when determining the discriminant of a value" This reverts commit0a2b7d71d9
, reversing changes made to47c1bd1bcc
. This caused several unforeseen problems: - https://github.com/rust-lang/rust/issues/91029 - https://github.com/rust-lang/rust/pull/89764#issuecomment-973588007 So I think it's best to revert for now while we keep discussing the MIR semantics of getting a discriminant. r? `@oli-obk`
This commit is contained in:
commit
83c83d4dd7
@ -265,12 +265,6 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
|
|||||||
}
|
}
|
||||||
sym::discriminant_value => {
|
sym::discriminant_value => {
|
||||||
let place = self.deref_operand(&args[0])?;
|
let place = self.deref_operand(&args[0])?;
|
||||||
if M::enforce_validity(self) {
|
|
||||||
// This is 'using' the value, so make sure the validity invariant is satisfied.
|
|
||||||
// (Also see https://github.com/rust-lang/rust/pull/89764.)
|
|
||||||
self.validate_operand(&place.into())?;
|
|
||||||
}
|
|
||||||
|
|
||||||
let discr_val = self.read_discriminant(&place.into())?.0;
|
let discr_val = self.read_discriminant(&place.into())?.0;
|
||||||
self.write_scalar(discr_val, dest)?;
|
self.write_scalar(discr_val, dest)?;
|
||||||
}
|
}
|
||||||
|
@ -304,12 +304,6 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
|
|||||||
|
|
||||||
Discriminant(place) => {
|
Discriminant(place) => {
|
||||||
let op = self.eval_place_to_op(place, None)?;
|
let op = self.eval_place_to_op(place, None)?;
|
||||||
if M::enforce_validity(self) {
|
|
||||||
// This is 'using' the value, so make sure the validity invariant is satisfied.
|
|
||||||
// (Also see https://github.com/rust-lang/rust/pull/89764.)
|
|
||||||
self.validate_operand(&op)?;
|
|
||||||
}
|
|
||||||
|
|
||||||
let discr_val = self.read_discriminant(&op)?.0;
|
let discr_val = self.read_discriminant(&op)?.0;
|
||||||
self.write_scalar(discr_val, &dest)?;
|
self.write_scalar(discr_val, &dest)?;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user