File tree Expand file tree Collapse file tree 1 file changed +20
-0
lines changed Expand file tree Collapse file tree 1 file changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -817,6 +817,26 @@ function compile_method_instance(@nospecialize(job::CompilerJob))
817
817
compiled[mi] = (; ci, func= llvm_func, specfunc= llvm_specfunc)
818
818
end
819
819
820
+ # We don't control the interp that codegen constructs for us above.
821
+ # So we have to scan the IR manually.
822
+ for (mi, (ci:: CodeInstance , _, _)) in compiled
823
+ src = @atomic :monotonic ci. inferred
824
+ if src isa String
825
+ src = Core. Compiler. _uncompressed_ir (mi. def, src)
826
+ end
827
+ for expr in src. code
828
+ expr isa Expr || continue
829
+ if expr. head === :foreigncall &&
830
+ expr. args[1 ] == " extern gpuc.lookup"
831
+ deferred_mi = expr. args[6 ]
832
+ # Now push to a worklist and process...
833
+ # TODO : How do we deal with call duplication?
834
+ # Can we codegen into the same module, or do we merge?
835
+ # we can check against "compiled" to avoid recursion?
836
+ end
837
+ end
838
+ end
839
+
820
840
# ensure that the requested method instance was compiled
821
841
@assert haskey (compiled, job. source)
822
842
You can’t perform that action at this time.
0 commit comments