From de4478af91765999f51b2950bea16686ee4cd60a Mon Sep 17 00:00:00 2001 From: varkor Date: Wed, 6 Mar 2019 09:58:27 +0000 Subject: [PATCH] Refactor const_to_op --- src/librustc_mir/interpret/operand.rs | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/librustc_mir/interpret/operand.rs b/src/librustc_mir/interpret/operand.rs index 1ebff4115101..206eaaf1787c 100644 --- a/src/librustc_mir/interpret/operand.rs +++ b/src/librustc_mir/interpret/operand.rs @@ -589,17 +589,12 @@ impl<'a, 'mir, 'tcx, M: Machine<'a, 'mir, 'tcx>> EvalContext<'a, 'mir, 'tcx, M> val: ty::Const<'tcx>, layout: Option>, ) -> EvalResult<'tcx, OpTy<'tcx, M::PointerTag>> { + let val = self.monomorphize(val)?; let layout = from_known_layout(layout, || { - let ty = self.monomorphize(val.ty)?; - self.layout_of(ty) + self.layout_of(val.ty) })?; - let val = match val.val { - ConstValue::Param(_) => self.monomorphize(val)?.val, - ConstValue::Infer(_) => bug!(), - val => val, - }; - let op = match val { - ConstValue::Param(_) | ConstValue::Infer(_) => unreachable!(), + let op = match val.val { + ConstValue::Param(_) | ConstValue::Infer(_) => bug!(), ConstValue::ByRef(ptr, alloc) => { // We rely on mutability being set correctly in that allocation to prevent writes // where none should happen -- and for `static mut`, we copy on demand anyway.