LLVM is a robust system, particularly well suited for developing new mid-level language-independent analyses and optimizations.

LLVMプロジェクトは4月6日(米国時間)、LLVMの最新版となるLLVM 2.9を公開した。LLVMはコンパイル時、リンク時、実行時、インストール後などのシーンで効率のいい最適化を提供するコンパイラインフラストラクチャ。LLVM 2.9は7ヶ月にわたる開発の成果物であり、新機能追加、改善、バグ修正が実施されたメジャーバージョン。LLVM 2.9における主な新機能は次のとおり。

  • 型ベースエイリアス解析(Type Based Alias Analysis: TBAA)の実装。Clangではデフォルトで有効化。TBAAが有効になることで特定ケースにおけるロード/ストアの最適化が優れたものとなる。「-fno-strict-aliasing」オプションを指定することで無効化。
  • デバッグ情報品質の向上。特にデバッグ向けにコンパイルされたコードは以前のバージョンよりも正確な情報を出力。
  • インラインアセンブラにおける複数alternative制約のサポート。
  • NVIDIA PTX virtual ISAのGPU機能を活用するための新しいバックエンドの導入。2.9では一般的に活用できる段階ではないが、開発は急速に進んでいる。

LLVM 2.9はllvm-gccフロントエンドをサポートする最後のバージョンになる。LLVMはGCCとの互換性を実現する目的でLLVMバックエンドとGCCフロントエンドを組み合わせた機能を提供してきた。GCCからの移行を手助けするもの。

LLVMはC/C++/Objective-Cをはじめ、さまざまなプログラミング言語とアーキテクチャをサポートしたコンパイラインフラストラクチャ。BSDライセンスを採用していることや、新しいプログラミング言語を対応させることが比較的簡単であることなどから、GCCからLLVMへと移行するOSSプロジェクトも多い。