@@ -32,7 +32,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
32
32
33
33
Misc => {
34
34
let src = self . read_immediate ( src) ?;
35
- let res = self . misc_cast ( src, cast_ty) ?;
35
+ let res = self . misc_cast ( & src, cast_ty) ?;
36
36
self . write_immediate ( res, dest) ?;
37
37
}
38
38
@@ -107,7 +107,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
107
107
108
108
fn misc_cast (
109
109
& self ,
110
- src : ImmTy < ' tcx , M :: PointerTag > ,
110
+ src : & ImmTy < ' tcx , M :: PointerTag > ,
111
111
cast_ty : Ty < ' tcx > ,
112
112
) -> InterpResult < ' tcx , Immediate < M :: PointerTag > > {
113
113
use rustc_middle:: ty:: TyKind :: * ;
@@ -158,13 +158,13 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
158
158
let dest_layout = self . layout_of ( cast_ty) ?;
159
159
if dest_layout. size == src. layout . size {
160
160
// Thin or fat pointer that just hast the ptr kind of target type changed.
161
- return Ok ( * src) ;
161
+ return Ok ( * * src) ;
162
162
} else {
163
163
// Casting the metadata away from a fat ptr.
164
164
assert_eq ! ( src. layout. size, 2 * self . memory. pointer_size( ) ) ;
165
165
assert_eq ! ( dest_layout. size, self . memory. pointer_size( ) ) ;
166
166
assert ! ( src. layout. ty. is_unsafe_ptr( ) ) ;
167
- return match * src {
167
+ return match * * src {
168
168
Immediate :: ScalarPair ( data, _) => Ok ( data. into ( ) ) ,
169
169
Immediate :: Scalar ( ..) => span_bug ! (
170
170
self . cur_span( ) ,
0 commit comments