将函数添加到我们JIT的LLVM模块中

时间:2017-01-10 00:56:35

标签: c++ llvm jit

目前我正在尝试使用llvm::ExecutionEngine到JIT llvm::Function,我是通过代码生成器一个接一个地生成的。

某些功能的内容取决于对其他功能的评估,这意味着某些功能需要准备好在JIT中执行,而其他功能尚未生成。

这导致有向非循环代码生成图:

func_1 ---> func_2 (depends on fn1)
    \
     \-> func_3 -> func_4 (depends on func_1 and func_3)

time -------------->

理论上所有函数都属于同一个编译单元, 并应作为{{1>} 合并返回。

每次我想向JIT添加一个新函数时,是否有可能以某种方式向ExecutionEngine提供新函数而不添加带前向声明的模块(llvm::Module(这基本上意味着每个函数的1个模块递归生成)?

因为那时我必须通过engine->addModule(...);将所有函数克隆到合并中(或者再次生成它),这对我来说似乎不是一个好的解决方案。

0 个答案:

没有答案