| ... | @@ -17605,6 +17605,24 @@ fn analyzePtrArithmetic( | ... | @@ -17605,6 +17605,24 @@ fn analyzePtrArithmetic( |
| 17605 | } else break :rs ptr_src; | 17605 | } else break :rs ptr_src; |
| 17606 | }; | 17606 | }; |
| 17607 | | 17607 | |
| | 17608 | const target = zcu.getTarget(); |
| | 17609 | if (target_util.arePointersLogical(target, ptr_info.flags.address_space)) { |
| | 17610 | return sema.failWithOwnedErrorMsg(block, msg: { |
| | 17611 | const msg = try sema.errMsg(op_src, "illegal pointer arithmetic on pointer of type '{}'", .{ptr_ty.fmt(pt)}); |
| | 17612 | errdefer msg.destroy(sema.gpa); |
| | 17613 | |
| | 17614 | const backend = target_util.zigBackend(target, zcu.comp.config.use_llvm); |
| | 17615 | try sema.errNote(op_src, msg, "arithmetic cannot be performed on pointers with address space '{s}' on target {s}-{s} by compiler backend {s}", .{ |
| | 17616 | @tagName(ptr_info.flags.address_space), |
| | 17617 | target.cpu.arch.genericName(), |
| | 17618 | @tagName(target.os.tag), |
| | 17619 | @tagName(backend), |
| | 17620 | }); |
| | 17621 | |
| | 17622 | break :msg msg; |
| | 17623 | }); |
| | 17624 | } |
| | 17625 | |
| 17608 | try sema.requireRuntimeBlock(block, op_src, runtime_src); | 17626 | try sema.requireRuntimeBlock(block, op_src, runtime_src); |
| 17609 | return block.addInst(.{ | 17627 | return block.addInst(.{ |
| 17610 | .tag = air_tag, | 17628 | .tag = air_tag, |