「LLVM 7.0」リリース

 LLVM Projectは9月19日、コンパイラ基盤の最新版「LLVM 7.0」を公開した。サブプロジェクトのClangやCompiler-RT、libc++、libunwind、LLDBなども新しくなった。

 LLVMはコンパイラを実装するのに利用できる汎用的な機能や最適化エンジン(オプティマイザ)、各種ライブラリなどを提供するソフトウェア集。さまざまなプログラミング言語の処理系でバックエンドとして採用されている。LLVM 7.0は、3月に公開されたバージョン6に続く最新版となる。

 OpenBSD向けのUBsan、X-Ray、libFuzzer、FreeBSD向けのMSan、X-Ray、libFuzzerのサポートが加わった。DWARF v5デバッグ情報の初期サポート、perfでのJIT化コードのプロファイルのサポートなども実現している。

 浮動小数点数キャストオプティマイザの改善など、オプティマイザでも多数の機能強化が図られている。LoopInstSimplifyパスは削除された。

 また、LLVMにある情報を使って特定のCPU向けのマシンコードの性能を静的に予想する性能解析ツールllvm-mca、命令スケジュールプロパティを自動測定してスケジュールモデルの編集を行うllvm-exegesisなどが加わった。

 C/C++/Objective-CフロントエンドのClangでは、GNU風の「__attribute__((target(“OPTIONS”)))」属性をサポートした。これにより、ELFベースのx86/x86-64環境下で関数のマルチバージョン化をサポートした。UBSanサポートに合わせ、Implicit Conversion Sanitizerグループが加わった。

 Windowsのサポートも強化し、ELFプラットフォーム上のGNUstep Objective-C ABI v2のサポートなども加わっている。

 このほか多数のバグ修正や細かな機能強化が加わっている。

LLVM Project
https://llvm.org/