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 最佳化。

與我們聯繫