LLVM 兼容性

GraalVM 支持 LLVM 位码版本 4.0 到 12.0.1。建议使用 GraalVM 附带的 LLVM 工具链。

优化标志 #

与 LLVM 语言的静态编译模型不同,在 GraalVM 中,机器代码不是直接从 LLVM 位码生成。Graal 编译器会进行额外的动态编译步骤。

首先,LLVM 前端(例如,clang)在位码级别执行优化,然后 Graal 编译器在动态编译期间在此基础上执行自己的优化。一些优化在位码上提前执行效果更好,而其他优化则更适合在 Graal 编译器的动态编译期间执行,此时可以获得性能分析信息。

与 GraalVM 一起提供的 LLVM 工具链默认情况下会自动选择推荐的标志。

通常,所有优化级别都可以使用,但为了获得更好的结果,建议使用优化级别 -O1 编译位码。

为了实现跨语言互操作性,需要使用 -mem2reg 优化。有两种方法可以实现:要么使用至少 -O1 编译,要么使用 opt 工具手动应用 -mem2reg 优化。

与我们联系