authorgravatar for topolarity@tapscott.meCody Tapscott <topolarity@tapscott.me> 2022-07-05 00:58:47-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-07-05 15:02:13-04:00
log86570b3e2c58da76d7e94531c1aa8017012b0521
treed99ede808fcb32307224875d9c642fe0c5d0989b
parent6fc9f6c5f6a067475f97cd16cb265332c8b7c6f3

stage2: Fix corrupted Type when de-referencing field pointer


3 files changed, 10 insertions(+), 2 deletions(-)

src/Sema.zig+2-2
...@@ -21614,10 +21614,10 @@ fn beginComptimePtrLoad(...@@ -21614,10 +21614,10 @@ fn beginComptimePtrLoad(
21614 deref.ty_without_well_defined_layout = field_ptr.container_ty;21614 deref.ty_without_well_defined_layout = field_ptr.container_ty;
21615 }21615 }
2161621616
21617 const tv = &(deref.pointee orelse {21617 const tv = deref.pointee orelse {
21618 deref.pointee = null;21618 deref.pointee = null;
21619 break :blk deref;21619 break :blk deref;
21620 });21620 };
21621 const coerce_in_mem_ok =21621 const coerce_in_mem_ok =
21622 (try sema.coerceInMemoryAllowed(block, field_ptr.container_ty, tv.ty, false, target, src, src)) == .ok or21622 (try sema.coerceInMemoryAllowed(block, field_ptr.container_ty, tv.ty, false, target, src, src)) == .ok or
21623 (try sema.coerceInMemoryAllowed(block, tv.ty, field_ptr.container_ty, false, target, src, src)) == .ok;21623 (try sema.coerceInMemoryAllowed(block, tv.ty, field_ptr.container_ty, false, target, src, src)) == .ok;
test/behavior.zig+1
...@@ -82,6 +82,7 @@ test {...@@ -82,6 +82,7 @@ test {
82 _ = @import("behavior/bugs/11179.zig");82 _ = @import("behavior/bugs/11179.zig");
83 _ = @import("behavior/bugs/11181.zig");83 _ = @import("behavior/bugs/11181.zig");
84 _ = @import("behavior/bugs/11213.zig");84 _ = @import("behavior/bugs/11213.zig");
85 _ = @import("behavior/bugs/12003.zig");
85 _ = @import("behavior/byteswap.zig");86 _ = @import("behavior/byteswap.zig");
86 _ = @import("behavior/byval_arg_var.zig");87 _ = @import("behavior/byval_arg_var.zig");
87 _ = @import("behavior/call.zig");88 _ = @import("behavior/call.zig");
test/behavior/bugs/12003.zig created+7
...@@ -0,0 +1,7 @@
1test {
2 comptime {
3 const tuple_with_ptrs = .{ &0, &0 };
4 const field_ptr = (&tuple_with_ptrs.@"0");
5 _ = field_ptr.*;
6 }
7}