about summary refs log tree commit diff
path: root/src/librustc_codegen_ssa/mir
diff options
context:
space:
mode:
authorWesley Wiser <wwiser@gmail.com>2019-08-16 20:31:28 -0400
committerWesley Wiser <wwiser@gmail.com>2019-08-22 06:36:31 -0400
commit84556502e69e1741938610e4af5800fe0cee9975 (patch)
tree555e9e8018ed51871faaace15535f0f5d7c7a86e /src/librustc_codegen_ssa/mir
parente63b9920302e860b4f50968eb332f534d62b8055 (diff)
downloadrust-84556502e69e1741938610e4af5800fe0cee9975.tar.gz
rust-84556502e69e1741938610e4af5800fe0cee9975.zip
Handle statics in `Subst::subst()` by implementing `TypeFoldable`
Diffstat (limited to 'src/librustc_codegen_ssa/mir')
-rw-r--r--src/librustc_codegen_ssa/mir/place.rs11
1 files changed, 2 insertions, 9 deletions
diff --git a/src/librustc_codegen_ssa/mir/place.rs b/src/librustc_codegen_ssa/mir/place.rs
index b08093c3a71..ac72928a896 100644
--- a/src/librustc_codegen_ssa/mir/place.rs
+++ b/src/librustc_codegen_ssa/mir/place.rs
@@ -1,5 +1,4 @@
 use rustc::ty::{self, Instance, Ty};
-use rustc::ty::subst::Subst;
 use rustc::ty::layout::{self, Align, TyLayout, LayoutOf, VariantIdx, HasTyCtxt};
 use rustc::mir;
 use rustc::mir::tcx::PlaceTy;
@@ -461,18 +460,12 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
                 projection: None,
             } => {
                 let param_env = ty::ParamEnv::reveal_all();
-                let instance = Instance::new(*def_id, substs.subst(bx.tcx(), self.instance.substs));
-                debug!("instance: {:?}", instance);
+                let instance = Instance::new(*def_id, self.monomorphize(substs));
                 let cid = mir::interpret::GlobalId {
                     instance: instance,
                     promoted: Some(*promoted),
                 };
-                let mono_ty = tcx.subst_and_normalize_erasing_regions(
-                    instance.substs,
-                    param_env,
-                    ty,
-                );
-                let layout = cx.layout_of(mono_ty);
+                let layout = cx.layout_of(self.monomorphize(&ty));
                 match bx.tcx().const_eval(param_env.and(cid)) {
                     Ok(val) => match val.val {
                         mir::interpret::ConstValue::ByRef { alloc, offset } => {