diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2023-05-31 23:46:39 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2023-06-10 20:47:58 -0700 |
| commit | 828756ceebaed09a90da81a5fc9a492443e2e8bb (patch) | |
| tree | c5d2ca56e670558e96fbcc6d9020ef61d7f2ea4e /src/Sema.zig | |
| parent | 08ae212772c38d6149464274edc07282e5418570 (diff) | |
| download | zig-828756ceebaed09a90da81a5fc9a492443e2e8bb.tar.gz zig-828756ceebaed09a90da81a5fc9a492443e2e8bb.zip | |
InternPool: fix element pointer type computations
Diffstat (limited to 'src/Sema.zig')
| -rw-r--r-- | src/Sema.zig | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index be531af60f..0cc657ba01 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -28508,7 +28508,11 @@ fn beginComptimePtrLoad( .int => return error.RuntimeLoad, .eu_payload, .opt_payload => |container_ptr| blk: { const container_ty = mod.intern_pool.typeOf(container_ptr).toType().childType(mod); - const payload_ty = ptr.ty.toType().childType(mod); + const payload_ty = switch (ptr.addr) { + .eu_payload => container_ty.errorUnionPayload(mod), + .opt_payload => container_ty.optionalChild(mod), + else => unreachable, + }; var deref = try sema.beginComptimePtrLoad(block, src, container_ptr.toValue(), container_ty); // eu_payload and opt_payload never have a well-defined layout @@ -28554,7 +28558,7 @@ fn beginComptimePtrLoad( }; }, .elem => |elem_ptr| blk: { - const elem_ty = ptr.ty.toType().elemType2(mod); + const elem_ty = mod.intern_pool.typeOf(elem_ptr.base).toType().elemType2(mod); var deref = try sema.beginComptimePtrLoad(block, src, elem_ptr.base.toValue(), null); // This code assumes that elem_ptrs have been "flattened" in order for direct dereference |
