「LLVM 3.9」リリース

 オープンソースのコンパイラスタックを開発するLLVM Projectは9月2日、最新版となる「LLVM 3.9」を公開した。ThinLTOのサポートなど多数の機能強化が加わった。

 3月に公開した「LLVM 3.8」に続く最新版。Linuxディストリビューターの多くが、libstdc+におけるC++11の非互換性を回避するためにGCC ABIを導入しており、これがClangなどのコンパイラの互換性問題につながっているとし、これに対する修正パッチが適用された。ただしすべてのバグを修正するものではなく、後方互換性もないとしている。

 また、LLVMContextでランタイムチェックが加わった。この機能は、CPU/メモリをできるだけ保存したいクライアントによるリリースビルド向けとしている。C API以外ではグローバルコンテキストが利用できなくなったほか、C APIの関数も整理された。ビルド関連ではCMakeを優先させるため、autoconfビルドシステムが削除された。LLVM 3.9ではCMake 3.4.3以上が必要となる。

 リンク時に最適化を行う「LTO」機能では、スケーラブルかつインクリメンタルに最適化を行える「ThinLTO」がサポートされた。コンパイルまたはリンク時に「-flto=thin」オプションを指定することで利用できる。また、IPO(Interprecedual optimization、プロシージャ間最適化)モデルも変更されている。

 ARM、MIPS、PowerPC、x86、AMDGPUなど各ターゲット向けにも強化が加わった。たとえばARMでは、AArch64バックエンドでハードウェアサポートが加わったほか、TargetParserを利用するなどの変更が加わっている。ARMとMIPSで、リンカーのLLDやLLBDが強化されている。

 このほか多数のバグも修正されている。

LLVM
http://llvm.org/