diff options
| author | lcnr <rust@lcnr.de> | 2022-12-08 11:24:25 +0100 |
|---|---|---|
| committer | lcnr <rust@lcnr.de> | 2022-12-08 11:24:25 +0100 |
| commit | dd9d05cec43deec3918aff7cfee2136c1f366420 (patch) | |
| tree | 7371927ef39053f27235695136ee46528d0d3c6c | |
| parent | f5418b09e84883c4de2e652a147ab9faff4eee29 (diff) | |
| download | rust-dd9d05cec43deec3918aff7cfee2136c1f366420.tar.gz rust-dd9d05cec43deec3918aff7cfee2136c1f366420.zip | |
validate: use the correct reveal during opts
| -rw-r--r-- | compiler/rustc_const_eval/src/transform/validate.rs | 6 | ||||
| -rw-r--r-- | compiler/rustc_middle/src/mir/syntax.rs | 8 |
2 files changed, 13 insertions, 1 deletions
diff --git a/compiler/rustc_const_eval/src/transform/validate.rs b/compiler/rustc_const_eval/src/transform/validate.rs index bf700d31224..5c9263dc5e3 100644 --- a/compiler/rustc_const_eval/src/transform/validate.rs +++ b/compiler/rustc_const_eval/src/transform/validate.rs @@ -2,6 +2,7 @@ use rustc_data_structures::fx::FxHashSet; use rustc_index::bit_set::BitSet; +use rustc_infer::traits::Reveal; use rustc_middle::mir::interpret::Scalar; use rustc_middle::mir::visit::NonUseContext::VarDebugInfo; use rustc_middle::mir::visit::{PlaceContext, Visitor}; @@ -44,8 +45,11 @@ impl<'tcx> MirPass<'tcx> for Validator { return; } let def_id = body.source.def_id(); - let param_env = tcx.param_env(def_id); let mir_phase = self.mir_phase; + let param_env = match mir_phase.reveal() { + Reveal::UserFacing => tcx.param_env(def_id), + Reveal::All => tcx.param_env_reveal_all_normalized(def_id), + }; let always_live_locals = always_storage_live_locals(body); let storage_liveness = MaybeStorageLive::new(always_live_locals) diff --git a/compiler/rustc_middle/src/mir/syntax.rs b/compiler/rustc_middle/src/mir/syntax.rs index 7d2a6bda569..988d27ba262 100644 --- a/compiler/rustc_middle/src/mir/syntax.rs +++ b/compiler/rustc_middle/src/mir/syntax.rs @@ -6,6 +6,7 @@ use super::{BasicBlock, Constant, Field, Local, SwitchTargets, UserTypeProjection}; use crate::mir::coverage::{CodeRegion, CoverageKind}; +use crate::traits::Reveal; use crate::ty::adjustment::PointerCast; use crate::ty::subst::SubstsRef; use crate::ty::{self, List, Ty}; @@ -100,6 +101,13 @@ impl MirPhase { MirPhase::Runtime(RuntimePhase::Optimized) => "runtime-optimized", } } + + pub fn reveal(&self) -> Reveal { + match *self { + MirPhase::Built | MirPhase::Analysis(_) => Reveal::UserFacing, + MirPhase::Runtime(_) => Reveal::All, + } + } } /// See [`MirPhase::Analysis`]. |
