「LLVM 3.4」リリース、C++14の全仕様をサポートへ

 コンパイラ環境LLVM(Low Level Virtual Machine)を開発するLLVM Projectは6月18日、最新版となる「LLVM 3.4」をリリースした。C/C++フロントエンド「Clang」も新しくなり、自動フォーマットツールなどが加わっている。

 LLVMは強力な最適化機能を特徴とするコンパイラフレームワーク。イリノイ大学の研究プロジェクトとしてスタートしたもので、任意のプログラム言語の静的/動的コンパイルをサポートするコンパイラの構築を目指している。ソースコードやターゲットに依存しないコアライブラリを中心に、C/C++/Objective-CコンパイラのClang、GCCと連携してAdaやFortranなどGCCがサポートする言語をLLVMでコンパイル可能にする「dragonegg」など多数のサブプロジェクトを持つ。

 LLVM 3.4は2013年6月に公開されたバージョン3.3以来の最新版となる。LLVMプロジェクトでは半年に一度のリリースを予定しており、バージョン3.4も本来は12月の公開予定だったが、1月にずれ込んでのリリースとなった。

 ClangではC++の次期標準規格であるC++14において、現時点でドラフト仕様にある機能をすべて実装した。IDEまたはテキストエディタで利用できるコードの自動フォーマットツール「clang-format」も加わっている。また、Visual Studioとの連携機能が実験的ながら導入されている。一方で「-O4」オプションによるリンク時最適化は利用できなくなった。「-flto」オプションによるリンク時最適化は継続して利用できるため、「-O3」オプションに「-flto」オプションを組み合わせることでこれまでの「-O4」オプションと同じような振る舞いを得られるという。

 コードジェネレーターの性能も改善された。ループ自動ベクトル化は「-O3」オプション指定時だけでなく「-Os」や「-O2」オプションの指定時でも有効化でき、SLP(Straight-Line Code)自動ベクトル化はデフォルトで有効になった。プロセッササポートも改善され、今までは実験的な位置付けだったR600バックエンドがデフォルトでサポートされるよう変更されたほか、PowerPCバックエンドでは組み込みアセンブラの改善やfast-iselサポートなどの強化によりコード生成の品質とコンパイル時間を改善できるという。x86、SPARC、ARM32、Aarch64などのバックエンドも強化された。

 なお開発チームによると、LLVM 3.4はC++98対応のコンパイラでコンパイルできるが、今後のリリースではLLVM自体のコンパイルにC++11をサポートするコンパイラが必要になる見通しになるとのことだ。

 LLVMはプロジェクトのWebサイトよりダウンロードできる。

LLVM Project
http://llvm.org/