Skip to content

Commit 14ee66a

Browse files
committed
miri cast: avoid unnecessary to_scalar_ptr
1 parent e4931ea commit 14ee66a

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

src/librustc_mir/interpret/cast.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
260260

261261
match (&src_pointee_ty.kind, &dest_pointee_ty.kind) {
262262
(&ty::Array(_, length), &ty::Slice(_)) => {
263-
let ptr = self.read_immediate(src)?.to_scalar_ptr()?;
263+
let ptr = self.read_immediate(src)?.to_scalar()?;
264264
// u64 cast is from usize to u64, which is always good
265265
let val = Immediate::new_slice(
266266
ptr,
@@ -279,7 +279,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
279279
(_, &ty::Dynamic(ref data, _)) => {
280280
// Initial cast from sized to dyn trait
281281
let vtable = self.get_vtable(src_pointee_ty, data.principal())?;
282-
let ptr = self.read_immediate(src)?.to_scalar_ptr()?;
282+
let ptr = self.read_immediate(src)?.to_scalar()?;
283283
let val = Immediate::new_dyn_trait(ptr, vtable);
284284
self.write_immediate(val, dest)
285285
}

src/librustc_mir/interpret/place.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,9 @@ where
287287
&self,
288288
val: ImmTy<'tcx, M::PointerTag>,
289289
) -> InterpResult<'tcx, MPlaceTy<'tcx, M::PointerTag>> {
290-
let pointee_type = val.layout.ty.builtin_deref(true).unwrap().ty;
290+
let pointee_type = val.layout.ty.builtin_deref(true)
291+
.expect("`ref_to_mplace` called on non-ptr type")
292+
.ty;
291293
let layout = self.layout_of(pointee_type)?;
292294

293295
let mplace = MemPlace {

0 commit comments

Comments
 (0)