aboutsummaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2024-10-31 09:25:16 +0100
committerAlex Rønne Petersen <alex@alexrp.com>2025-05-12 17:07:50 +0200
commit427810f3edea1beba77e3f84dd695dd0a8c35f00 (patch)
tree3aa1e32ff3770317ba7266fc9713def8e87add72 /src/codegen
parente9ae9a5fc45a6ee85d988372a4d150032f52ef4c (diff)
downloadzig-427810f3edea1beba77e3f84dd695dd0a8c35f00.tar.gz
zig-427810f3edea1beba77e3f84dd695dd0a8c35f00.zip
llvm: Don't set nonnull attribute on pointers in non-generic address spaces.
LLVM considers null pointers to be valid for such address spaces.
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/llvm.zig15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index 0bbc3aee46..c74f54b461 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -1341,7 +1341,10 @@ pub const Object = struct {
try attributes.addParamAttr(llvm_arg_i, .@"noalias", &o.builder);
}
}
- if (param_ty.zigTypeTag(zcu) != .optional and !ptr_info.flags.is_allowzero) {
+ if (param_ty.zigTypeTag(zcu) != .optional and
+ !ptr_info.flags.is_allowzero and
+ ptr_info.flags.address_space == .generic)
+ {
try attributes.addParamAttr(llvm_arg_i, .nonnull, &o.builder);
}
if (ptr_info.flags.is_const) {
@@ -4358,7 +4361,10 @@ pub const Object = struct {
try attributes.addParamAttr(llvm_arg_i, .@"noalias", &o.builder);
}
}
- if (!param_ty.isPtrLikeOptional(zcu) and !ptr_info.flags.is_allowzero) {
+ if (!param_ty.isPtrLikeOptional(zcu) and
+ !ptr_info.flags.is_allowzero and
+ ptr_info.flags.address_space == .generic)
+ {
try attributes.addParamAttr(llvm_arg_i, .nonnull, &o.builder);
}
switch (fn_info.cc) {
@@ -5410,7 +5416,10 @@ pub const FuncGen = struct {
try attributes.addParamAttr(llvm_arg_i, .@"noalias", &o.builder);
}
}
- if (param_ty.zigTypeTag(zcu) != .optional and !ptr_info.flags.is_allowzero) {
+ if (param_ty.zigTypeTag(zcu) != .optional and
+ !ptr_info.flags.is_allowzero and
+ ptr_info.flags.address_space == .generic)
+ {
try attributes.addParamAttr(llvm_arg_i, .nonnull, &o.builder);
}
if (ptr_info.flags.is_const) {