Skip to content

Commit 86570b3

Browse files
topolarityandrewrk
authored andcommitted
stage2: Fix corrupted Type when de-referencing field pointer
1 parent 6fc9f6c commit 86570b3

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

src/Sema.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21614,10 +21614,10 @@ fn beginComptimePtrLoad(
2161421614
deref.ty_without_well_defined_layout = field_ptr.container_ty;
2161521615
}
2161621616

21617-
const tv = &(deref.pointee orelse {
21617+
const tv = deref.pointee orelse {
2161821618
deref.pointee = null;
2161921619
break :blk deref;
21620-
});
21620+
};
2162121621
const coerce_in_mem_ok =
2162221622
(try sema.coerceInMemoryAllowed(block, field_ptr.container_ty, tv.ty, false, target, src, src)) == .ok or
2162321623
(try sema.coerceInMemoryAllowed(block, tv.ty, field_ptr.container_ty, false, target, src, src)) == .ok;

test/behavior.zig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ test {
8282
_ = @import("behavior/bugs/11179.zig");
8383
_ = @import("behavior/bugs/11181.zig");
8484
_ = @import("behavior/bugs/11213.zig");
85+
_ = @import("behavior/bugs/12003.zig");
8586
_ = @import("behavior/byteswap.zig");
8687
_ = @import("behavior/byval_arg_var.zig");
8788
_ = @import("behavior/call.zig");

test/behavior/bugs/12003.zig

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
test {
2+
comptime {
3+
const tuple_with_ptrs = .{ &0, &0 };
4+
const field_ptr = (&tuple_with_ptrs.@"0");
5+
_ = field_ptr.*;
6+
}
7+
}

0 commit comments

Comments
 (0)