diff options
| author | Robin Voetter <robin@voetter.nl> | 2024-10-31 20:24:37 +0100 |
|---|---|---|
| committer | Robin Voetter <robin@voetter.nl> | 2024-11-08 20:38:20 +0100 |
| commit | 08ad7afc1e90c68409e9dc869d9dc1dceb3e8564 (patch) | |
| tree | 9e301aab7d78f1c1897dda1f56c61c48f9ab1a51 /src/Sema.zig | |
| parent | e5f5229fd6f9d0fe684ab32cce8f2b18e02c115b (diff) | |
| download | zig-08ad7afc1e90c68409e9dc869d9dc1dceb3e8564.tar.gz zig-08ad7afc1e90c68409e9dc869d9dc1dceb3e8564.zip | |
spirv: forbid pointer arithmetic
Diffstat (limited to 'src/Sema.zig')
| -rw-r--r-- | src/Sema.zig | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index 65805b6a67..771f4a0540 100644 --- 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, |
