「LLVM 6.0」リリース

 LLVMプロジェクトは3月8日、オープンソースのコンパイラ基盤「LLVM 6.0」を公開した。Spectre脆弱性への対応としてRetpolineのサポートが加わり、新しい機能も導入した。

 LLVMはモジュラー型で再利用可能なコンパイラとツールチェーンのセット。LLVM Core、LLVMネイティブのC/C++/Objective-CコンパイラClangなど多数のサブプロジェクトを持つ。

 LLVM 6.0は、2017年9月に公開したバージョン5.0に続くメジャーリリース。年始に報告されたCPUの脆弱性「Meltdown」および「Spectre」に対するGoogleの対策「Retpoline」をサポート、Spectreを利用したブランチターゲットインジェクションに対する保護ができるという。Retpolineのサポートはバージョン5系にもバックポートされている。

 llvm::sys::ExecuteAndWait及びllvm::sys::ExecuteNoWaitでのRedirects引数がArrayRefに変更、安全性と利便性を改善するという。

 IntelのSandy Bridge以降やAMDのJaguarといったいくつかのx86マイクロアーキテクチャ向けのスケジューラーモデルを改善した。AArch 64ターゲットでGlobalISel命令選択フレームワークが有効になり、-O0で設定されている。x86ターゲットでは、IntelのIcelake CPUのサポートも加わった。

 ターゲットレジストリにバックエンド名が加わり、ランタイム情報をTableGenにフィードできるようになった。optにDebugifyパスが加わり、デバッグ情報保存のテストが容易になるという。また、Windows向けのCodeViewデバッグ情報の品質を改善した。

 Clangでは、C++98ではなくC++14がデフォルトとなり、C++2Aのサポートも実験的に加わった。

 このほか多数の細かな修正や最適化が計られている。

LLVM
https://llvm.org/