diff options
| author | Wesley Wiser <wwiser@gmail.com> | 2019-08-16 20:31:28 -0400 |
|---|---|---|
| committer | Wesley Wiser <wwiser@gmail.com> | 2019-08-22 06:36:31 -0400 |
| commit | 84556502e69e1741938610e4af5800fe0cee9975 (patch) | |
| tree | 555e9e8018ed51871faaace15535f0f5d7c7a86e /src/librustc_codegen_ssa/mir | |
| parent | e63b9920302e860b4f50968eb332f534d62b8055 (diff) | |
| download | rust-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.rs | 11 |
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 } => { |
