From 70d418c315f663042636b3b63f4bbe003b4a22d8 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sat, 20 Nov 2021 12:33:04 -0500 Subject: [PATCH] Revert "require full validity when determining the discriminant of a value" This reverts commit 0a2b7d71d96a22126cce57f0dab5890d060f2259, reversing changes made to 47c1bd1bcc50b25d133f8be3d49825491c1df249. This caused several unforeseen problems: - https://github.com/rust-lang/rust/issues/91029 - https://github.com/rust-lang/rust/pull/89764#issuecomment-973588007 --- compiler/rustc_const_eval/src/interpret/intrinsics.rs | 6 ------ compiler/rustc_const_eval/src/interpret/step.rs | 6 ------ 2 files changed, 12 deletions(-) diff --git a/compiler/rustc_const_eval/src/interpret/intrinsics.rs b/compiler/rustc_const_eval/src/interpret/intrinsics.rs index 9bbb42eb01961..44da27a43db0a 100644 --- a/compiler/rustc_const_eval/src/interpret/intrinsics.rs +++ b/compiler/rustc_const_eval/src/interpret/intrinsics.rs @@ -265,12 +265,6 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { } sym::discriminant_value => { 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; self.write_scalar(discr_val, dest)?; } diff --git a/compiler/rustc_const_eval/src/interpret/step.rs b/compiler/rustc_const_eval/src/interpret/step.rs index 2759a7d9d268f..e6037d561dedc 100644 --- a/compiler/rustc_const_eval/src/interpret/step.rs +++ b/compiler/rustc_const_eval/src/interpret/step.rs @@ -304,12 +304,6 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { Discriminant(place) => { 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; self.write_scalar(discr_val, &dest)?; }