Refactor const_to_op
This commit is contained in:
parent
ed9227abbd
commit
de4478af91
1 changed files with 4 additions and 9 deletions
|
|
@ -589,17 +589,12 @@ impl<'a, 'mir, 'tcx, M: Machine<'a, 'mir, 'tcx>> EvalContext<'a, 'mir, 'tcx, M>
|
|||
val: ty::Const<'tcx>,
|
||||
layout: Option<TyLayout<'tcx>>,
|
||||
) -> 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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue