BT

新しいGCC 8.1がC++2aのいくつかの機能をサポート

| 作者: Sergio De Simone フォローする 17 人のフォロワー , 翻訳者 編集部T _ フォローする 0 人のフォロワー 投稿日 2018年5月8日. 推定読書時間: 3 分 |

原文(投稿日:2018/05/07)へのリンク

読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます新機能の詳細をご覧ください。

GCC 8.1は、GNU Compiler Collectionの最新メジャーリリースであり、今後のC++2a標準の一部を実験的にサポートしている。さらに、GCC 8.1はプロファイル駆動型の最適化を改善し、Goサポートをバージョン1.10.1まで提供する。

GCC C++フロントエンドは、既に事前承認されているいくつかの新しいC++機能を有効にするために、-std=c++2a-std=gnu++2aの2つの新しいフラグを提供する。新しい機能には、指定イニシャライザビットフィールド用のデフォルトメンバイニシャライザプリプロセッサによるカンマ消去のための__VA_OPT__ラムダ[=, this]キャプチャ単純な暗黙のラムダキャプチャなどがある。GCC 8のC++2a機能の完全なリストについては、C++のステータスページをチェックしてください。

これに加えて、C++フロントでは診断が改善され、その改善には、ロケーションとロケーション範囲の改善や複数の新しい修正ヒントが含まれる。たとえば、コンパイラでは、定義する前にマクロを使用するとき、クラスまたは構造体のプライベートフィールドにアクセスしようとするとき、古いスタイルのキャストをstatic_castconst_castreinterpret_castで置き換えることができるときに、ヒントを提供できるようになった。

GCC 8.1はプロファイル駆動型の最適化を大幅に改善している。その最適化では、コードのどの部分を最適化するかを決定するために、インスツルメントコードのパフォーマンスをプロファイリングした結果を使用する。たとえば、GCCはデフォルトでx86ターゲットの機能をホット領域とコールド領域に分割するようになった。ホット機能はより積極的に最適化され、同じ領域に配置することで局所性を改善している。その上、GCCは、あるポイントで未定義の動作をトリガするときのような、プログラムの正当な実行中に実行されないコードを検出できるようになった。

最適化については、-floop-unroll-and-jam-floop-interchangeのような新しいループオプティマイザが追加された。-floop-unroll-and-jamでは、外側ループのアンロールと内部ループのコピーの組み合わせを実行する。-floop-interchangeでは、ループネスト内でループを交換してデータのローカリティを改善する。そして、-floop-nest-optimize-ftree-loop-distributionを含むいくつかの既存のオプティマイザが改善された。これらの最適化はすべて、-O3フラグを使用するとデフォルトで有効になる。

前述のように、Goの最新の公式バージョンであるGo 1.10.1の完全な実装のおかげでGoサポートが改善された。さらに、ガベージコレクタは完全に並列実行可能となった。

最後の注目点として、GCC 8.1では、Armv8.4-Aアーキテクチャもサポートを開始し、-march=armv8.4-aオプションを指定することで有効化される。また、Scalable Vector Extension (SVE)は、 Armv8.2-Aアーキテクチャおよびそれ以降のバージョンに対する拡張オプションとしてサポートされるようになった。

GCC 8.1には、本稿に記載できる、多くの興味深い変更がある。詳細をすべて知るには、公式のリリースノートをお見逃しなく。

Rate this Article

Adoption Stage
Style

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT