| author | |
| committer | |
| log | 8d1fdfc8ede94b1aea524041c1df10c42d4002e4 |
| tree | cb57b64f9eb88c2352bc488a6c6ae2ec0b3242bc |
| parent | cae76d8293f6416ff698171c2ae10552fa014587 |
Closes #129283 files changed, 30 insertions(+), 0 deletions(-)
src/Sema.zig+3| ... | ... | @@ -22027,6 +22027,7 @@ fn structFieldPtrByIndex( |
| 22027 | 22027 | var ptr_ty_data: Type.Payload.Pointer.Data = .{ |
| 22028 | 22028 | .pointee_type = field.ty, |
| 22029 | 22029 | .mutable = struct_ptr_ty_info.mutable, |
| 22030 | .@"volatile" = struct_ptr_ty_info.@"volatile", | |
| 22030 | 22031 | .@"addrspace" = struct_ptr_ty_info.@"addrspace", |
| 22031 | 22032 | }; |
| 22032 | 22033 | |
| ... | ... | @@ -22246,6 +22247,7 @@ fn unionFieldPtr( |
| 22246 | 22247 | const ptr_field_ty = try Type.ptr(arena, sema.mod, .{ |
| 22247 | 22248 | .pointee_type = field.ty, |
| 22248 | 22249 | .mutable = union_ptr_ty.ptrIsMutable(), |
| 22250 | .@"volatile" = union_ptr_ty.isVolatilePtr(), | |
| 22249 | 22251 | .@"addrspace" = union_ptr_ty.ptrAddressSpace(), |
| 22250 | 22252 | }); |
| 22251 | 22253 | const enum_field_index = @intCast(u32, union_obj.tag_ty.enumFieldIndex(field_name).?); |
| ... | ... | @@ -22568,6 +22570,7 @@ fn tupleFieldPtr( |
| 22568 | 22570 | const ptr_field_ty = try Type.ptr(sema.arena, sema.mod, .{ |
| 22569 | 22571 | .pointee_type = field_ty, |
| 22570 | 22572 | .mutable = tuple_ptr_ty.ptrIsMutable(), |
| 22573 | .@"volatile" = tuple_ptr_ty.isVolatilePtr(), | |
| 22571 | 22574 | .@"addrspace" = tuple_ptr_ty.ptrAddressSpace(), |
| 22572 | 22575 | }); |
| 22573 | 22576 |
test/behavior.zig+1| ... | ... | @@ -93,6 +93,7 @@ test { |
| 93 | 93 | _ = @import("behavior/bugs/12794.zig"); |
| 94 | 94 | _ = @import("behavior/bugs/12801-1.zig"); |
| 95 | 95 | _ = @import("behavior/bugs/12801-2.zig"); |
| 96 | _ = @import("behavior/bugs/12928.zig"); | |
| 96 | 97 | _ = @import("behavior/byteswap.zig"); |
| 97 | 98 | _ = @import("behavior/byval_arg_var.zig"); |
| 98 | 99 | _ = @import("behavior/call.zig"); |
test/behavior/bugs/12928.zig created+26| ... | ... | @@ -0,0 +1,26 @@ |
| 1 | const std = @import("std"); | |
| 2 | const expect = std.testing.expect; | |
| 3 | const A = extern struct { | |
| 4 | value: *volatile B, | |
| 5 | }; | |
| 6 | const B = extern struct { | |
| 7 | a: u32, | |
| 8 | b: i32, | |
| 9 | }; | |
| 10 | test { | |
| 11 | var a: *A = undefined; | |
| 12 | try expect(@TypeOf(&a.value.a) == *volatile u32); | |
| 13 | try expect(@TypeOf(&a.value.b) == *volatile i32); | |
| 14 | } | |
| 15 | const C = extern struct { | |
| 16 | value: *volatile D, | |
| 17 | }; | |
| 18 | const D = extern union { | |
| 19 | a: u32, | |
| 20 | b: i32, | |
| 21 | }; | |
| 22 | test { | |
| 23 | var c: *C = undefined; | |
| 24 | try expect(@TypeOf(&c.value.a) == *volatile u32); | |
| 25 | try expect(@TypeOf(&c.value.b) == *volatile i32); | |
| 26 | } |