aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-09-23 12:00:02 +0300
committerVeikka Tuominen <git@vexu.eu>2022-09-23 17:39:06 +0300
commit8d1fdfc8ede94b1aea524041c1df10c42d4002e4 (patch)
treecb57b64f9eb88c2352bc488a6c6ae2ec0b3242bc /src
parentcae76d8293f6416ff698171c2ae10552fa014587 (diff)
downloadzig-8d1fdfc8ede94b1aea524041c1df10c42d4002e4.tar.gz
zig-8d1fdfc8ede94b1aea524041c1df10c42d4002e4.zip
Sema: preserve volatileness when constructing field pointers
Closes #12928
Diffstat (limited to 'src')
-rw-r--r--src/Sema.zig3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index 932a379232..be53c99f24 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -22027,6 +22027,7 @@ fn structFieldPtrByIndex(
var ptr_ty_data: Type.Payload.Pointer.Data = .{
.pointee_type = field.ty,
.mutable = struct_ptr_ty_info.mutable,
+ .@"volatile" = struct_ptr_ty_info.@"volatile",
.@"addrspace" = struct_ptr_ty_info.@"addrspace",
};
@@ -22246,6 +22247,7 @@ fn unionFieldPtr(
const ptr_field_ty = try Type.ptr(arena, sema.mod, .{
.pointee_type = field.ty,
.mutable = union_ptr_ty.ptrIsMutable(),
+ .@"volatile" = union_ptr_ty.isVolatilePtr(),
.@"addrspace" = union_ptr_ty.ptrAddressSpace(),
});
const enum_field_index = @intCast(u32, union_obj.tag_ty.enumFieldIndex(field_name).?);
@@ -22568,6 +22570,7 @@ fn tupleFieldPtr(
const ptr_field_ty = try Type.ptr(sema.arena, sema.mod, .{
.pointee_type = field_ty,
.mutable = tuple_ptr_ty.ptrIsMutable(),
+ .@"volatile" = tuple_ptr_ty.isVolatilePtr(),
.@"addrspace" = tuple_ptr_ty.ptrAddressSpace(),
});