aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
authorRobin Voetter <robin@voetter.nl>2021-10-24 20:37:09 +0200
committerRobin Voetter <robin@voetter.nl>2021-10-25 20:41:15 +0200
commit7062c8a8865bbd2fb8181b579da552295cd68e6a (patch)
treeafa5a38081c75c63599a1642a78266b347b1b5fd /src/Sema.zig
parent0942bf73c90eabf87d0ca965b50beb0fd9a8fc8c (diff)
downloadzig-7062c8a8865bbd2fb8181b579da552295cd68e6a.tar.gz
zig-7062c8a8865bbd2fb8181b579da552295cd68e6a.zip
stage2: comptime slice of pointer to hardcoded address
Diffstat (limited to 'src/Sema.zig')
-rw-r--r--src/Sema.zig7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/Sema.zig b/src/Sema.zig
index d290ea8ec0..eaa99a42a7 100644
--- a/src/Sema.zig
+++ b/src/Sema.zig
@@ -8001,7 +8001,12 @@ fn analyzePtrArithmetic(
const offset_int = offset_val.toUnsignedInt();
if (ptr_val.getUnsignedInt()) |addr| {
const target = sema.mod.getTarget();
- const elem_ty = ptr_ty.childType();
+ const ptr_child_ty = ptr_ty.childType();
+ const elem_ty = if (ptr_ty.isSinglePointer() and ptr_child_ty.zigTypeTag() == .Array)
+ ptr_child_ty.childType()
+ else
+ ptr_child_ty;
+
const elem_size = elem_ty.abiSize(target);
const new_addr = switch (air_tag) {
.ptr_add => addr + elem_size * offset_int,