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

CやC++でアプリケーションを開発する場合、またはC/C++で開発されたオープンソースソフトウェアをコンパイルする場合に遭遇するコンパイルエラーや出力されるエラーメッセージは、C/C++に精通していなければ原因を予測しにくいことが多く、C/C++初心者を萎縮させる原因のひとつになっている。移植する段階でインクルードが必要になったとか、typedefを追加するといった簡単な対処でコンパイルできるものが、エラーメッセージの内容が理解できないために解決できないということはままある。

LLVM Project Blog: Amazing feats of Clang Error Recoveryにおいて、LLVM Clangコンパイラフロントエンドが出力するメッセージに関する利点が紹介されている。LLVM ClangとGCC 4.2のエラーメッセージをそれぞれ比較しながら、LLVM Clangの出力するメッセージがいかに理解しやすいものであるかが主張されている。

LLVM ClangとGCC 4.2のメッセージ比較例 - Amazing feats of Clang Error Recoveryより抜粋

LLVM ClangとGCC 4.2のメッセージ比較例 - Amazing feats of Clang Error Recoveryより抜粋

LLVM ClangとGCC 4.2のメッセージ比較例 - Amazing feats of Clang Error Recoveryより抜粋

LLVM ClangとGCC 4.2のメッセージ比較例 - Amazing feats of Clang Error Recoveryより抜粋

LLVM ClangとGCC 4.2のメッセージ比較例 - Amazing feats of Clang Error Recoveryより抜粋

LLVM ClangとGCC 4.2のメッセージ比較例 - Amazing feats of Clang Error Recoveryより抜粋

LLVMはコンパイル時、リンク時、実行時、インストール後などのシーンで効率のいい最適化を提供するコンパイラインフラストラクチャ。LLVMはAppleがサポートしているほか、Adobe Systemsもフロントエンドの開発を実施するなど注目が集まっている。FreeBSDプロジェクトでもシステムコンパイラとしての取り組みが進められているほか、GCCからLLVMへと以降するOSSプロジェクトが増えている。LLVM ClangはLLVMフロントエンドのひとつでC、C++、Objective Cに対応している。

LLVM Project Blog: Amazing feats of Clang Error RecoveryではGCC 4.2のみならず、ほかのコンパイラともビルド結果を比較してみて欲しいとしている。最終的にOSが提供しているコンパイラでビルドするとしても、開発やデバッグの段階でLLVMを使うというのはひとつの有効な方法と言える。