miri cast: avoid unnecessary to_scalar_ptr
This commit is contained in:
parent
e4931eaaa3
commit
14ee66acec
2 changed files with 5 additions and 3 deletions
|
@ -260,7 +260,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
|
|||
|
||||
match (&src_pointee_ty.kind, &dest_pointee_ty.kind) {
|
||||
(&ty::Array(_, length), &ty::Slice(_)) => {
|
||||
let ptr = self.read_immediate(src)?.to_scalar_ptr()?;
|
||||
let ptr = self.read_immediate(src)?.to_scalar()?;
|
||||
// u64 cast is from usize to u64, which is always good
|
||||
let val = Immediate::new_slice(
|
||||
ptr,
|
||||
|
@ -279,7 +279,7 @@ impl<'mir, 'tcx, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
|
|||
(_, &ty::Dynamic(ref data, _)) => {
|
||||
// Initial cast from sized to dyn trait
|
||||
let vtable = self.get_vtable(src_pointee_ty, data.principal())?;
|
||||
let ptr = self.read_immediate(src)?.to_scalar_ptr()?;
|
||||
let ptr = self.read_immediate(src)?.to_scalar()?;
|
||||
let val = Immediate::new_dyn_trait(ptr, vtable);
|
||||
self.write_immediate(val, dest)
|
||||
}
|
||||
|
|
|
@ -287,7 +287,9 @@ where
|
|||
&self,
|
||||
val: ImmTy<'tcx, M::PointerTag>,
|
||||
) -> InterpResult<'tcx, MPlaceTy<'tcx, M::PointerTag>> {
|
||||
let pointee_type = val.layout.ty.builtin_deref(true).unwrap().ty;
|
||||
let pointee_type = val.layout.ty.builtin_deref(true)
|
||||
.expect("`ref_to_mplace` called on non-ptr type")
|
||||
.ty;
|
||||
let layout = self.layout_of(pointee_type)?;
|
||||
|
||||
let mplace = MemPlace {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue