「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/