aboutsummaryrefslogtreecommitdiff
path: root/src/Sema.zig
diff options
context:
space:
mode:
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,