GCC 11.1已發布,這是其最重要的新聞和更改

經過一年的發展, GCC 11.1編譯器套件新版本發布,是新GCC 11.x分支中的第一個重要版本。 在新的版本編號方案下,在開發過程中使用了版本11.0,並且在GCC 11.1發布之前不久,已經對GCC 12.0的一個分支進行了分叉,以形成GCC 12.1的下一個主要版本。

GCC 11.1在過渡到默認調試文件格式DWARF 5方面表現出色,默認包含C ++ 17標準(“ -std = gnu ++ 17”),與C ++ 20標準的兼容性得到了顯著改善,對C ++ 23的實驗性支持,與該標準的未來標準相關的改進C語言(C2x),新的性能優化。

GCC 11.1主要新功能

C ++語言的默認模式已更改為使用C ++ 17標準,而不是先前提出的C ++ 14。 處理使用其他模板作為參數的模板時,可以有選擇地禁用新的C ++ 17行為(-fno-new-ttp-matching)。

增加了對硬件加速的支持 AddressSanitizer工具的功能,它使您可以確定訪問已釋放的內存區域,超出已分配緩衝區限制的事實以及使用內存時的一些其他類型的錯誤。 當前,硬件加速僅適用於AArch64架構,並著重於在編譯Linux內核時使用它。

提出的另一個新穎之處是 程序之間的優化和改進,因為添加了新的IPA-modref通行證 (-fipa-modref)跟踪函數調用中的副作用並提高分析準確性。 除了也 改進IPA-ICF通行證的實施 (-fipa-icf),可減少編譯內存消耗並增加合併了相同代碼塊的統一功能的數量。

El 配置文件驅動的優化引擎 (PGO), 改進的“ -fprofile-values”模式 通過跟踪更多用於間接調用的參數。

突出顯示了OpenMP 5.0標準的繼續實施 (開放式多處理),其中 增加了對賦值指令的初始支持以及使用非均勻循環的能力 在OpenMP版本中。 現在支持OMP_TARGET_OFFLOAD環境變量。

為C,C ++和Fortran語言提供的OpenACC 2.6並行編程規範的實現已得到改進,該規範定義了用於將操作卸載到GPU和專用處理器(例如NVIDIA PTX)的工具。

對於C系列的語言,已實現了新的屬性“ no_stack_protector”, 設計用於標記不應啟用堆棧保護的功能(“ -fstack-protector”)。 “ malloc”屬性已擴展,支持識別成對的調用以分配和釋放內存,它在靜態解析器中用於檢測典型的內存錯誤(內存洩漏,釋放後的使用,對釋放函數的兩次調用等)和編譯器警告“ -Wmismatched-dealloc”,“-Wmismatched- new-delete”和“ -Wfree-nonheap-object“報告不一致的解除分配和解除分配操作。

生成調試信息時,默認情況下使用DWARF 5格式,與以前的版本相比,該格式可使生成的調試數據緊湊25%。 完整的DWARF 5支持至少需要版本2.35.2的binutils。

增強的ThreadSanitizer模式功能(-fsanitize = thread),因為是e增加了對替代運行時和環境的支持, 以及對內核並發清理器(KCSAN)調試工具的支持,以動態檢測Linux內核中的競爭條件。 添加了新選項“ -param tsan-distinguish-volatile”和“ -param tsan-instrument-func-entry-exit”。

矢量化器提供功能的所有內容的核算以及與控制流程圖(CFG)中的交叉點和對先前塊的引用相關聯的功能的附加處理。

優化器具有將一系列條件操作轉換為更改表達式的能力,在該表達式中比較了相同的變量。 將來,可以使用位測試指令對變更表達式進行編碼(為控制此轉換,已添加了“ -fbit-tests”選項)。

對於C ++,已經實現了C ++ 20標準中提出的部分更改和創新,包括虛擬函數“ consteval virtual”,用於使用對象枚舉類終止對像生命週期的偽破壞者,使用枚舉類和計算方法。表達式“ new”中數組的大小。

如果您想了解更多,您可以在中查看詳細信息 以下鏈接。 


本文內容遵循我們的原則 編輯倫理。 要報告錯誤,請單擊 這裡.

成為第一個發表評論

發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。