File tree Expand file tree Collapse file tree 2 files changed +8
-1
lines changed
Expand file tree Collapse file tree 2 files changed +8
-1
lines changed Original file line number Diff line number Diff line change @@ -201,7 +201,8 @@ fn is_cast_to_bigger_memory_layout<'tcx>(
201201
202202 // if the current expr looks like this `&mut expr[index]` then just looking
203203 // at `expr[index]` won't give us the underlying allocation, so we just skip it
204- if let ExprKind :: Index ( ..) = e_alloc. kind {
204+ // the same logic applies field access like `&mut expr.field`
205+ if let ExprKind :: Index ( ..) | ExprKind :: Field ( ..) = e_alloc. kind {
205206 return None ;
206207 }
207208
Original file line number Diff line number Diff line change @@ -255,6 +255,12 @@ unsafe fn bigger_layout() {
255255 let a3 = a2 as * mut u64 ;
256256 unsafe { * a3 = 3 } ;
257257 }
258+
259+ unsafe fn field_access ( v : & mut Vec3 < i32 > ) {
260+ let r = & mut v. 0 ;
261+ let ptr = r as * mut i32 as * mut Vec3 < i32 > ;
262+ unsafe { * ptr = Vec3 ( 0 , 0 , 0 ) }
263+ }
258264}
259265
260266const RAW_PTR : * mut u8 = 1 as * mut u8 ;
You can’t perform that action at this time.
0 commit comments