From 0e00885f9c3d54a6b999e84d58d6ac6cfbdc0023 Mon Sep 17 00:00:00 2001 From: Valentin Churavy Date: Tue, 26 Mar 2024 18:28:05 -0400 Subject: [PATCH 1/2] Allow for deferred codegen in !toplevel --- src/driver.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/driver.jl b/src/driver.jl index bc12fd87..d2b0b6e9 100644 --- a/src/driver.jl +++ b/src/driver.jl @@ -220,7 +220,7 @@ const __llvm_initialized = Ref(false) entry = finish_module!(job, ir, entry) # deferred code generation - has_deferred_jobs = !only_entry && toplevel && + has_deferred_jobs = !only_entry && haskey(functions(ir), "deferred_codegen") jobs = Dict{CompilerJob, String}(job => entry_fn) if has_deferred_jobs From da0e76741ac5a0aed49f05df878f07f7e2d5295b Mon Sep 17 00:00:00 2001 From: Valentin Churavy Date: Thu, 16 May 2024 10:46:20 -0400 Subject: [PATCH 2/2] thread jobs variable through --- src/driver.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/driver.jl b/src/driver.jl index d2b0b6e9..a636e224 100644 --- a/src/driver.jl +++ b/src/driver.jl @@ -265,6 +265,7 @@ const __llvm_initialized = Ref(false) parent_job=job) dyn_entry_fn = LLVM.name(dyn_meta.entry) merge!(compiled, dyn_meta.compiled) + merge!(jobs, dyn_meta.jobs) @assert context(dyn_ir) == context(ir) link!(ir, dyn_ir) changed = true @@ -457,7 +458,7 @@ const __llvm_initialized = Ref(false) @timeit_debug to "verification" verify(ir) end - return ir, (; entry, compiled) + return ir, (; entry, compiled, jobs) end @locked function emit_asm(@nospecialize(job::CompilerJob), ir::LLVM.Module;