C++への移行が完了、最適化機能も強化された「GCC 4.8」リリース

 GCC開発チームは3月22日、「GCC 4.8.0」を公開した。GCC自体のビルドにC++コンパイラが必須となったほか、最適化機能の強化などが行われている。

 GCC(GNU Complier Collection)はGNU Project傘下で開発されているコンパイラ。CやC++、Objective-C、Fortran、Java、Ada、Goなど多数の言語に対応する。

 GCC 4.8は、2012年3月に公開されたバージョン4.7に続くメジャーアップデート版となる。大きな変更点としては、ビルドにC++コンパイラが必須となった点がある。GCCは長らくCで実装されていたが、C++で実装したいという要求があり、C++への移行が進められていた。本バージョンではC++への移行が完了し、ソースコードからGCCをビルドする際にC++2003準拠のC++コンパイラが必要となった。また、ループ最適化機構「Graphite」を有効にするためには「CLooG 0.18.0」および「ISL 0.11.1」も必要となる。これらはGCCインフラディレクトリよりダウンロードできる。ループ最適化ではアグレッシブな解析を利用するようになったが、SPEC CPU 2006ベンチマークの「464.h264ref」など想定通りに動かない例もあるという。これを無効化するオプション-fno-aggressive-loop-optimizationsも用意する。

 そのほかの新機能としては、ia21およびx86-64をターゲットとしたコードの品質改善機能「Local Register Allocator」の導入がある。また、デバッグ情報形式DWARFでは、DWARF4がデフォルトになった。リンク時の最適化(Link-time optimization、LTO)機能ではパーティショニングの書き直しが行われ、信頼性や保守性を強化したという。

 最適化関連ではGoogleが開発した高速なメモリエラー検出ツール「AddressSanitizer」や、Valgrindを土台とする「ThreadSanitizer」が新たに加わった。このほか、「-Og」という新たな最適化レベルの導入も行われている。これにより、高速なコンパイルやデバッグを支援するという。新しいオプションとして部分冗長削除(PRE)を管理する-ftree-partial-preも加わった。

 言語別にも細かな機能強化が加わっている。たとえばGoogle Go言語では次期版となるGo 1.1の初期対応を実現している。C++ではOpenMPのthreadprivateサポートも強化した。アーキテクチャでは64ビットARM命令セットアーキテクチャ「AArch64」の対応などが強化点となる。

GCC
http://gcc.gnu.org/