about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJannis Christopher Köhl <mail@koehl.dev>2022-10-23 15:31:46 +0200
committerJannis Christopher Köhl <mail@koehl.dev>2022-11-07 10:35:25 +0100
commitefc7ca8c7d7db6a14b04e9931c75ee3e61ca718f (patch)
tree12fdd4bf8dbf50434a673ef5d0b60b0da451906d
parentde69d088a46e8f9a70e2ac4b3477211fbaa01580 (diff)
downloadrust-efc7ca8c7d7db6a14b04e9931c75ee3e61ca718f.tar.gz
rust-efc7ca8c7d7db6a14b04e9931c75ee3e61ca718f.zip
Use ParamEnv consistently
-rw-r--r--compiler/rustc_mir_transform/src/dataflow_const_prop.rs17
1 files changed, 8 insertions, 9 deletions
diff --git a/compiler/rustc_mir_transform/src/dataflow_const_prop.rs b/compiler/rustc_mir_transform/src/dataflow_const_prop.rs
index 8cb1a9dc4a1..aae7fefd112 100644
--- a/compiler/rustc_mir_transform/src/dataflow_const_prop.rs
+++ b/compiler/rustc_mir_transform/src/dataflow_const_prop.rs
@@ -217,11 +217,12 @@ impl<'tcx> std::fmt::Debug for ScalarTy<'tcx> {
 
 impl<'tcx> ConstAnalysis<'tcx> {
     pub fn new(tcx: TyCtxt<'tcx>, body: &Body<'tcx>, map: Map) -> Self {
+        let param_env = tcx.param_env(body.source.def_id());
         Self {
             map,
             tcx,
-            ecx: InterpCx::new(tcx, DUMMY_SP, ty::ParamEnv::empty(), DummyMachine),
-            param_env: tcx.param_env(body.source.def_id()),
+            ecx: InterpCx::new(tcx, DUMMY_SP, param_env, DummyMachine),
+            param_env: param_env,
         }
     }
 
@@ -260,13 +261,11 @@ impl<'tcx> ConstAnalysis<'tcx> {
         };
         match value {
             FlatSet::Top => FlatSet::Top,
-            FlatSet::Elem(ScalarTy(scalar, ty)) => {
-                let layout = self
-                    .tcx
-                    .layout_of(ty::ParamEnv::empty().and(ty))
-                    .expect("this should not happen"); // FIXME
-                FlatSet::Elem(ImmTy::from_scalar(scalar, layout))
-            }
+            FlatSet::Elem(ScalarTy(scalar, ty)) => self
+                .tcx
+                .layout_of(self.param_env.and(ty))
+                .map(|layout| FlatSet::Elem(ImmTy::from_scalar(scalar, layout)))
+                .unwrap_or(FlatSet::Top),
             FlatSet::Bottom => FlatSet::Bottom,
         }
     }