Skip to content

Commit 1979264

Browse files
Contextfix (#143)
* tweaked native_llvm_module for multiple functions to use the same context * added dispose * added kwarg before name while calling native_job * removed comments * wrapped multi function compilation in GPUCompiler.JuliaContext
1 parent f552ce0 commit 1979264

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

src/StaticCompiler.jl

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -595,13 +595,26 @@ end
595595
#Return an LLVM module for multiple functions
596596
function native_llvm_module(funcs::Union{Array,Tuple}; demangle=true, kwargs...)
597597
f,tt = funcs[1]
598-
mod = native_llvm_module(f,tt; demangle, kwargs...)
599-
if length(funcs) > 1
600-
for func in funcs[2:end]
601-
f,tt = func
602-
tmod = native_llvm_module(f,tt; demangle, kwargs...)
603-
link!(mod,tmod)
604-
end
598+
mod = GPUCompiler.JuliaContext() do context
599+
name_f = fix_name(f)
600+
if !demangle
601+
name_f = "julia_"*name_f
602+
end
603+
job, kwargs = native_job(f, tt, true; name = name_f, kwargs...)
604+
mod,_ = GPUCompiler.codegen(:llvm, job; strip=true, only_entry=false, validate=false)
605+
if length(funcs) > 1
606+
for func in funcs[2:end]
607+
f,tt = func
608+
name_f = fix_name(f)
609+
if !demangle
610+
name_f = "julia_"*name_f
611+
end
612+
job, kwargs = native_job(f, tt, true; name = name_f, kwargs...)
613+
tmod,_ = GPUCompiler.codegen(:llvm, job; strip=true, only_entry=false, validate=false)
614+
link!(mod,tmod)
615+
end
616+
end
617+
mod
605618
end
606619
# Just to be sure
607620
for (modfunc, func) in zip(functions(mod), funcs)

0 commit comments

Comments
 (0)