zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit a4ff94804cfcdee49fb9c70812c15ff7d2829ee5 (tree)
parent 1f16b07d6fe43f96287b6cca8e8b58996199481f
Author: Andrew Kelley <andrew@ziglang.org>
Date:   Tue, 24 May 2022 18:20:03 -0700

Sema: additional check for one-possible-value types in analyzeLoad

This is needed because pointers to zero-bit types are not necessarily
comptime known, but when doing a load, only the element type having one
possible value is relevant.

Diffstat:
Msrc/Sema.zig | 5+++++
1 file changed, 5 insertions(+), 0 deletions(-)

diff --git a/src/Sema.zig b/src/Sema.zig @@ -20950,6 +20950,11 @@ fn analyzeLoad( .Pointer => ptr_ty.childType(), else => return sema.fail(block, ptr_src, "expected pointer, found '{}'", .{ptr_ty.fmt(sema.mod)}), }; + + if (try sema.typeHasOnePossibleValue(block, src, elem_ty)) |opv| { + return sema.addConstant(elem_ty, opv); + } + if (try sema.resolveDefinedValue(block, ptr_src, ptr)) |ptr_val| { if (try sema.pointerDeref(block, ptr_src, ptr_val, ptr_ty)) |elem_val| { return sema.addConstant(elem_ty, elem_val);