aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2023-05-31 23:46:39 -0400
committerAndrew Kelley <andrew@ziglang.org>2023-06-10 20:47:58 -0700
commit828756ceebaed09a90da81a5fc9a492443e2e8bb (patch)
treec5d2ca56e670558e96fbcc6d9020ef61d7f2ea4e /src/Sema.zig
parent08ae212772c38d6149464274edc07282e5418570 (diff)
downloadzig-828756ceebaed09a90da81a5fc9a492443e2e8bb.tar.gz
zig-828756ceebaed09a90da81a5fc9a492443e2e8bb.zip
InternPool: fix element pointer type computations
Diffstat (limited to 'src/Sema.zig')
-rw-r--r--src/Sema.zig8
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