@@ -1069,6 +1069,12 @@ function annotate_air_intrinsics!(@nospecialize(job::CompilerJob), mod::LLVM.Mod
1069
1069
attrs = function_attributes (f)
1070
1070
function add_attributes (names... )
1071
1071
for name in names
1072
+ if LLVM. version () >= v " 16" && name in [" argmemonly" , " inaccessiblememonly" ,
1073
+ " inaccessiblemem_or_argmemonly" ,
1074
+ " readnone" , " readonly" , " writeonly" ]
1075
+ # XXX : workaround for changes from https://reviews.llvm.org/D135780
1076
+ continue
1077
+ end
1072
1078
push! (attrs, EnumAttribute (name, 0 ))
1073
1079
end
1074
1080
changed = true
@@ -1080,12 +1086,16 @@ function annotate_air_intrinsics!(@nospecialize(job::CompilerJob), mod::LLVM.Mod
1080
1086
1081
1087
# atomics
1082
1088
elseif match (r" air.atomic.(local|global).load" , fn) != = nothing
1083
- add_attributes (" argmemonly" , " nounwind" , " readonly" )
1089
+ # TODO : "memory(argmem: read)" on LLVM 16+
1090
+ add_attributes (" argmemonly" , " readonly" , " nounwind" )
1084
1091
elseif match (r" air.atomic.(local|global).store" , fn) != = nothing
1085
- add_attributes (" argmemonly" , " nounwind" , " writeonly" )
1092
+ # TODO : "memory(argmem: write)" on LLVM 16+
1093
+ add_attributes (" argmemonly" , " writeonly" , " nounwind" )
1086
1094
elseif match (r" air.atomic.(local|global).(xchg|cmpxchg)" , fn) != = nothing
1095
+ # TODO : "memory(argmem: readwrite)" on LLVM 16+
1087
1096
add_attributes (" argmemonly" , " nounwind" )
1088
1097
elseif match (r" ^air.atomic.(local|global).(add|sub|min|max|and|or|xor)" , fn) != = nothing
1098
+ # TODO : "memory(argmem: readwrite)" on LLVM 16+
1089
1099
add_attributes (" argmemonly" , " nounwind" )
1090
1100
end
1091
1101
end
0 commit comments