GCC 9.1

3 月 9.1 日、GCC の XNUMX 番目のバージョンである GCC XNUMX の最初の公開リリースが行われました。
XNUMX 番目のバージョンと比較して、多くの重要な改善と追加が含まれています。
バージョン。

一般的な変更

オプション
  • サイズを受け入れるコマンドは、サイズを指定するための 64 ビット値とサフィックスをサポートするようになりました。
  • 追加されたオプション -flive-パッチング動的コード置換に破壊的な影響を与える可能性のある最適化を制御するため。
  • コマンド シェルでのオートコンプリートをサポートするために --completion オプションを追加しました。
  • コンパイラ診断に行番号が含まれるようになりました (-fno-diagnostics-show-line-numbers)そして、
    型情報 (fno-diagnostics-show-labels);
  • 追加されたオプション -fdiagnostics-format=json 診断を JSON 形式で出力します。
  • 配置を指定するためのオプション (-falign-関数、たとえば) は、いくつかの位置合わせオプションを受け入れることができるようになりました。
  • ファイルのリストをフィルタリングするためのオプションを追加しました (-fprofile-フィルターファイル, -fprofile-除外ファイル)、プロファイラーによって計測されます。
  • AddressSanitizer は、スタック上の変数への無効なアクセスを捕捉するために、よりコンパクトなアライメントを使用するようになりました。
  • 多数の出力の改善 -fopt-情報;
  • 追加されたオプション -fsave 最適化レコード 最適化レポートをファイルに保存します。
  • 追加されたオプション -fipa-スタックアライメント и -fipa-reference-addressable.
新しい組み込み機能
新しい属性
その他

以下に関連するコード生成の多数の改善。

  • スイッチ構造の生成。
  • プロシージャ間の最適化。
  • プロファイリング情報に基づく最適化。
  • 組み立て段階での最適化(LTO)。

また、gcov の内部形式は JSON になり、新しいオプションが追加されました。 --辛さの色を使用 使用頻度に基づいてコード行を色分けする必要があります。

言語

実装の品質と完全性 OpenACC C、C++、Fortran 言語は改良され続けています。

C に似た言語
  • OpenMP 5.0 の部分的なサポートが実装されました。
  • 追加機能 __builtin_convertvector;
  • 警告を追加しました -パックメンバーのアドレス;
  • 多数の既存の警告が改善されました。
  • 間違った数の引数をマクロに渡した場合のエラー テキストに、マクロ自体の宣言が含まれるようになりました。
  • タイプミスの修正提案を改善しました。
C
  • -std=c2x (将来の C 標準) の XNUMX つの引数を持つ _Static_assert をサポートします。
  • 新たな警告 -絶対値これは、abs() のような関数の間違った引数の型を検出します。
C + +
  • 新しい警告: -W非推奨のコピー,
    -Winit-list-lifetime,
    -冗長な動き,
    -Wpessimizing-move,
    -Wclass-変換;
  • 将来の標準からの新機能を実装する作業が進行中です C++2a;
  • フロントエンドは、多数のソース コード要素に関するより正確な情報を保存するようになり、診断でより詳細な情報を表示できるようになりました。
  • オーバーロードされた関数、二項演算子、関数呼び出し、およびフォーマット文字列の診断が改善されました。
  • いくつかの開発環境でサポートされる、多くの一般的なエラー (括弧の欠落、名前空間、タイプミスなど) に対して自動修正を追加しました。
libstdc ++
  • C++17 実装は実験的ではなくなりました。
  • 並列アルゴリズムを追加しました。 、 、A -lstdc++fs は必要なくなりました。
  • C++2a の実験的サポートの改善 ( 、 、std::bind_front など);
  • パスに非文字が含まれる Windows 上でファイル ストリームを開くためのサポート。
  • 初期サポートWindows の場合。
  • ネットワーキング TS の初期サポート。
D

D 言語バージョン 2.076 は GCC に含まれています。

Fortran
  • 非同期 I/O を完全にサポート。
  • MINLOC および MAXLOC の BACK 引数を実装しました。
  • FINDLOC 関数と IS_CONTIGOUS 関数を実装しました。
  • 複素数の成分にアクセスするための構文 c%re および c%im が実装されました。
  • 構文 str%len および a%kind を実装しました。
  • C 記述子と ISO_Fortran_binding.h ヘッダーを実装しました。
  • 引数の XNUMX つが NaN である場合の MAX 関数と MIN 関数の結果の要件が緩和されました。
  • 追加されたオプション -fdec-include;
  • ディレクティブが追加されました ビルティン.
libgccjit

その他

アーキテクチャおよび OS 固有の多くの変更。

出所: linux.org.ru

コメントを追加します