@@ -150,45 +150,56 @@ isintrinsic(f::Function) = API.LLVMGetIntrinsicID(ref(f)) != 0
150150struct Intrinsic
151151 id:: UInt32
152152
153- function Intrinsic (name:: String )
154- new (API. LLVMLookupIntrinsicID (name, length (name)))
155- end
156-
157153 function Intrinsic (f:: Function )
158154 id = API. LLVMGetIntrinsicID (ref (f))
159155 id == 0 && throw (ArgumentError (" Function is not an intrinsic" ))
160156 new (id)
161157 end
158+
159+ function Intrinsic (name:: String )
160+ @assert version () >= v " 9"
161+ new (API. LLVMLookupIntrinsicID (name, length (name)))
162+ end
162163end
163164
164165Base. convert (:: Type{UInt32} , intr:: Intrinsic ) = intr. id
165166
166167function name (intr:: Intrinsic )
168+ @assert version () >= v " 8"
167169 len = Ref {Csize_t} ()
168170 str = API. LLVMIntrinsicGetName (intr, len)
169171 unsafe_string (convert (Ptr{Cchar}, str), len[])
170172end
171173
172174function name (intr:: Intrinsic , params:: Vector{<:LLVMType} )
175+ @assert version () >= v " 8"
173176 len = Ref {Csize_t} ()
174177 str = API. LLVMIntrinsicCopyOverloadedName (intr, ref .(params), length (params), len)
175178 unsafe_message (convert (Ptr{Cchar}, str), len[])
176179end
177180
178- function FunctionType (intr:: Intrinsic , params :: Vector{<:LLVMType} = LLVMType[];
179- ctx :: Context = GlobalContext ())
180- LLVMType (API . LLVMIntrinsicGetType ( ref (ctx), intr, ref .(params), length (params) ))
181+ function isoverloaded (intr:: Intrinsic )
182+ @assert version () >= v " 8 "
183+ convert (Core . Bool, API . LLVMIntrinsicIsOverloaded (intr ))
181184end
182185
183186function Function (mod:: Module , intr:: Intrinsic , params:: Vector{<:LLVMType} = LLVMType[])
187+ @assert version () >= v " 8"
184188 Value (API. LLVMGetIntrinsicDeclaration (ref (mod), intr, ref .(params), length (params)))
185189end
186190
191+ function FunctionType (intr:: Intrinsic , params:: Vector{<:LLVMType} = LLVMType[];
192+ ctx:: Context = GlobalContext ())
193+ @assert version () >= v " 8"
194+ LLVMType (API. LLVMIntrinsicGetType (ref (ctx), intr, ref .(params), length (params)))
195+ end
196+
187197function Base. show (io:: IO , intr:: Intrinsic )
188- print (io, " Intrinsic($(intr. id) ): \" $(name (intr)) \" " )
189- if isoverloaded (intr)
190- print (io, " (overloaded)" )
198+ print (io, " Intrinsic($(intr. id) )" )
199+ if version () >= v " 8"
200+ print (io, " : \" $(name (intr)) \" " )
201+ if isoverloaded (intr)
202+ print (io, " (overloaded)" )
203+ end
191204 end
192205end
193-
194- isoverloaded (intr:: Intrinsic ) = convert (Core. Bool, API. LLVMIntrinsicIsOverloaded (intr))
0 commit comments