diff --git a/src/Sema.zig b/src/Sema.zig index e234255c6e..60d636b81e 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -21614,10 +21614,10 @@ fn beginComptimePtrLoad( deref.ty_without_well_defined_layout = field_ptr.container_ty; } - const tv = &(deref.pointee orelse { + const tv = deref.pointee orelse { deref.pointee = null; break :blk deref; - }); + }; const coerce_in_mem_ok = (try sema.coerceInMemoryAllowed(block, field_ptr.container_ty, tv.ty, false, target, src, src)) == .ok or (try sema.coerceInMemoryAllowed(block, tv.ty, field_ptr.container_ty, false, target, src, src)) == .ok; diff --git a/test/behavior.zig b/test/behavior.zig index 18e65564ad..087b821c7d 100644 --- a/test/behavior.zig +++ b/test/behavior.zig @@ -82,6 +82,7 @@ test { _ = @import("behavior/bugs/11179.zig"); _ = @import("behavior/bugs/11181.zig"); _ = @import("behavior/bugs/11213.zig"); + _ = @import("behavior/bugs/12003.zig"); _ = @import("behavior/byteswap.zig"); _ = @import("behavior/byval_arg_var.zig"); _ = @import("behavior/call.zig"); diff --git a/test/behavior/bugs/12003.zig b/test/behavior/bugs/12003.zig new file mode 100644 index 0000000000..98c74b77ab --- /dev/null +++ b/test/behavior/bugs/12003.zig @@ -0,0 +1,7 @@ +test { + comptime { + const tuple_with_ptrs = .{ &0, &0 }; + const field_ptr = (&tuple_with_ptrs.@"0"); + _ = field_ptr.*; + } +}