BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース LLVM 3.3、C++11に完全準拠

LLVM 3.3、C++11に完全準拠

原文(投稿日:2013/06/28)へのリンク

LLVMプロジェクトの最新リリースがたくさんの新機能とともに登場した。これにはClangサブプロジェクトで開発されたC++11コンパイラのフルサポートも含まれている。一番の新機能は、いくつかの新しいCPUアーキテクチャのサポートだ。これには、AArch64 (64-bit ARM)、AMDのR600 GPU、IBMのz/Architecture (s390x)、MIPSおよびPowerPCターゲットの改善が含まれる。 

LLVMはloopと新たに追加されたSLPという2つのベクタライザを持っている。3.3では、loopベクタライザによりよいコードを生成するためのいくつかの改善がなされており、–O3フラグを使うとデフォルトで有効になる。新たに追加されたものには、ポインタ、リバースポインタ、If変換のランタイムチェックが含まれる。SLPベクタライザ (superword-level parallelism) は、類似の独立したインストラクションをベクトル化したインストラクションに変換するものだ。SLPベクタライザは“-fslp-vectorize”フラグを使うと有効になる。

Dragon EggはLLVMのサブプロジェクトで、LLVMテクノロジをGCCにもたらすものだ。DragonEggはGCCのオプティマイザとコードジェネレータをLLVMのものに置き換える。LLVM 3.3ですばらしいのは、gcc-4.8.1+とよりよいデバッグ情報のサポートだ。LLDB (Low Level Debugger) には、いくつかのLinuxフィーチャーが追加された。

  • ウォッチポイントのサポート
  • vimプラグインを利用した、lldbコマンドおよびプログラムステータスのvim統合
  • ベクターレジスタを含むレジスタサポートの改善
  • cmake/ninja/auto-tools/clang 3.3/gcc 4.6でのビルド

C++11を使っている開発者(あるいは、既存コードでの利用を検討している人)は、LLVMのC++11移行ツール、cpp11-migrateを調べるとよいだろう。LLVMのブログに書かれているように、「C++11 Migratorの目的は、保守性、可読性、ランタイム性能、コンパイル時性能を高めるために、C++11機能を利用するよう既存のC++コードをソースコードレベルで変換することだ。」

LLVM 3.3はソースやプレビルドバイナリなど、さまざまな形で配布されている。Linux、FreeBSD、Mac OS Xのユーザはプロジェクトのサイトから直接インストーラをダウンロードしてもよい。あるいは、使っているOSのディストリビューションをチェックしたり、ソースからコンパイルしよう。コンパイル方法について、LLVMチームが詳しい手順を説明している。

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT