GCC10シリーズコンパイラがメジャーアップグレードで登場

プラットフォームのメジャーリリースであるGCC(GNUコンパイラコレクション)10.1は、2020年5月7日に公開され、C ++ 20機能やC2X言語サポートなどのハイライトが含まれています。C2Xは、2022年に予定されているC言語の次のメジャーリビジョンです。 

GCC 10のリリースノートには、constexpr関数でのインラインアセンブリの許可や構造化バインディングの拡張など、多数のC ++ 20機能が実装されていることが示されています。また、C ++ 20の場合、GCC 10は未知の境界の配列への変換を許可し、constexprコンテキストでの簡単なデフォルトの初期化を許可し、constinitキーワードを追加し、キーワードを非推奨にし volatile ます。

ISO C標準の今後のリビジョンであるC2Xの場合、構文-std=c2xとでいくつかの機能がサポートされます -std+gnu2x。これらの中にはstrftime%OBおよび%Obフォーマットをサポートするフォーマットチェックと、u8 ''構文を使用したUTF-8文字定数があります。

33年以上前から存在しているGCCには、C、C ++、Fortran、Ada、Go、およびDのフロントエンドとライブラリが含まれています。GCC10への移植に関するセキュリティ情報が投稿されています。GCC10.1のその他の新機能には次のものがあります。

  • has_builtinGCCおよびそれをサポートする他のコンパイラによって提供される組み込み関数のサポートを照会するために使用できるプリプロセッサ演算子を含む、組み込み関数が追加されました。 
  • コマンドオプションが追加されました。これらには -fallocation-dcenewdelete演算子の不要なペアを削除するため、および-fanalyzer、新しい静的分析パスと関連する警告を有効にするためが含まれます。後者のオプションは、実験段階にあると見なす必要があります。
  • 手続き間の最適化の改善が行われました。これらには、リンク時に機能するように再実装された、アグリゲートのプロシージャ間スカラー置換(IPA-SRA)パスの再実装が含まれます。IPA-SRAは、計算を削除して未使用の戻り値を返すこともできるようになりました。
  • リンク時の最適化の改善には、新しいバイナリが含まれますito-dump。プログラムは、LTObyteオブジェクトファイルに関するさまざまな情報をダンプできます。
  • コンパイル中のプロファイルメンテナンスやホット/コールドパーティショニングの改善など、プロファイル主導の最適化の改善が行われました。
  • Cファミリの場合、access関数とtype属性が追加され、関数がポインタまたは参照によって渡されたオブジェクトにアクセスする方法を記述し、そのような引数をオブジェクトサイズを示す整数引数に関連付けます。この属性は、ユーザー定義関数による無効なアクセスの検出を有効にするために使用されます。新しい警告と既存の警告の機能強化もあります。1つの警告、-Wzero-length-boundsは、同じオブジェクトの他のメンバーと重複する可能性のある長さゼロの配列の要素へのアクセスについて警告します。
  • C ++ 14とC ++ 17の間のABIの非互換性が修正されました。一部のターゲットでは、C ++ 17またはC ++ 20としてコンパイルすると、サイズがゼロのサブオブジェクトを持つクラスが誤って渡されていました。