从Julia脚本生成可运行的LLVM IR?

时间:2015-03-14 13:15:44

标签: llvm julia llvm-ir

我想知道如何将Julia代码转换为可运行的LLVM IR(* .ll文件)。

有一个名为code_llvm的命令可以将Julia函数编译为LLVM IR。但它的结果包含类似%jl_value_t*的东西,似乎是一个(隐藏?)对象类型,它看起来不像纯LLVM IR。

有没有办法从Julia生成可运行的LLVM IR,以便我可以使用lli xx.ll运行它(或做其他事情)?

1 个答案:

答案 0 :(得分:1)

code_llvm函数默认情况下仅显示该函数,但是您也可以将其打印出完整的模块:

open("file.ll", "w") do io
    code_llvm(io, +, (Int, Int); raw=true, dump_module=true, optimize=true)
end

此输出(file.ll)现在可以与其他llvm工具一起使用,例如llcopt。但是,由于这只是该功能的代码,并且假定存在所有其他代码和数据,因此不一定要与lli配合使用,因此请当心购买者。

如果您想要一个完整的系统,您可能会对Julia的--output-bc标志感兴趣,该标志将转储LLVM格式的完整目标文件。这在内部广泛用于构建和引导Julia。它还封装在https://github.com/JuliaLang/PackageCompiler.jl的实用工具中,以自动执行其中一些步骤。