@@ -32,7 +32,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
3232
3333 Misc => {
3434 let src = self . read_immediate ( src) ?;
35- let res = self . misc_cast ( src, cast_ty) ?;
35+ let res = self . misc_cast ( & src, cast_ty) ?;
3636 self . write_immediate ( res, dest) ?;
3737 }
3838
@@ -107,7 +107,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
107107
108108 fn misc_cast (
109109 & self ,
110- src : ImmTy < ' tcx , M :: PointerTag > ,
110+ src : & ImmTy < ' tcx , M :: PointerTag > ,
111111 cast_ty : Ty < ' tcx > ,
112112 ) -> InterpResult < ' tcx , Immediate < M :: PointerTag > > {
113113 use rustc_middle:: ty:: TyKind :: * ;
@@ -158,13 +158,13 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
158158 let dest_layout = self . layout_of ( cast_ty) ?;
159159 if dest_layout. size == src. layout . size {
160160 // Thin or fat pointer that just hast the ptr kind of target type changed.
161- return Ok ( * src) ;
161+ return Ok ( * * src) ;
162162 } else {
163163 // Casting the metadata away from a fat ptr.
164164 assert_eq ! ( src. layout. size, 2 * self . memory. pointer_size( ) ) ;
165165 assert_eq ! ( dest_layout. size, self . memory. pointer_size( ) ) ;
166166 assert ! ( src. layout. ty. is_unsafe_ptr( ) ) ;
167- return match * src {
167+ return match * * src {
168168 Immediate :: ScalarPair ( data, _) => Ok ( data. into ( ) ) ,
169169 Immediate :: Scalar ( ..) => span_bug ! (
170170 self . cur_span( ) ,
0 commit comments