zig

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

commit 08ad7afc1e90c68409e9dc869d9dc1dceb3e8564 (tree)
parent e5f5229fd6f9d0fe684ab32cce8f2b18e02c115b
Author: Robin Voetter <robin@voetter.nl>
Date:   Thu, 31 Oct 2024 20:24:37 +0100

spirv: forbid pointer arithmetic

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

diff --git a/src/Sema.zig b/src/Sema.zig @@ -17605,6 +17605,24 @@ fn analyzePtrArithmetic( } else break :rs ptr_src; }; + const target = zcu.getTarget(); + if (target_util.arePointersLogical(target, ptr_info.flags.address_space)) { + return sema.failWithOwnedErrorMsg(block, msg: { + const msg = try sema.errMsg(op_src, "illegal pointer arithmetic on pointer of type '{}'", .{ptr_ty.fmt(pt)}); + errdefer msg.destroy(sema.gpa); + + const backend = target_util.zigBackend(target, zcu.comp.config.use_llvm); + try sema.errNote(op_src, msg, "arithmetic cannot be performed on pointers with address space '{s}' on target {s}-{s} by compiler backend {s}", .{ + @tagName(ptr_info.flags.address_space), + target.cpu.arch.genericName(), + @tagName(target.os.tag), + @tagName(backend), + }); + + break :msg msg; + }); + } + try sema.requireRuntimeBlock(block, op_src, runtime_src); return block.addInst(.{ .tag = air_tag,