LLVM 互換性

GraalVM は LLVM ビットコードバージョン 4.0 ~ 12.0.1 をサポートしています。GraalVM に同梱されている LLVM ツールチェーンを使用することをお勧めします。

最適化フラグ #

LLVM 言語の静的コンパイルモデルとは対照的に、GraalVM ではマシンコードは LLVM ビットコードから直接生成されません。Graal コンパイラによる追加の動的コンパイルステップがあります。

最初に、LLVM フロントエンド(例: clang)がビットコードレベルで最適化を実行し、次に Graal コンパイラはその上に独自の最適化を実行します。プロファイリング情報が利用可能なときに、ビットコードに対して事前に行うと効果的な最適化がある一方、Graal コンパイラの動的コンパイルに任せる方が最適な最適化もあります。

GraalVM に同梱されている LLVM ツールチェーンは、デフォルトで推奨フラグを自動的に選択します。

通常、すべての最適化レベルが機能しますが、より良い結果を得るには、ビットコードを最適化レベル -O1 でコンパイルすることをお勧めします。

クロス言語相互運用性の場合、-mem2reg 最適化が必要です。これには 2 つの方法があります。少なくとも -O1 でコンパイルするか、opt ツールを使用して -mem2reg 最適化を手動で適用します。

お問い合わせ