3 月 9.1 日,GCC 第九版首次公開發布:GCC XNUMX。
與第八版相比,它包含許多重大改進和補充
版本。
一般變化
選項
- 接受大小的命令現在支援 64 位元值和後綴來指定大小;
- 添加選項 -即時修補,控制對動態程式碼替換有潛在破壞性的最佳化;
- 新增了 --completion 選項以支援命令 shell 中的自動完成;
- 編譯器診斷現在包括行號(-fno-診斷-顯示行號)和
類型資訊(fno-診斷-顯示標籤); - 添加選項 -fdiagnostics-format=json 以 JSON 格式輸出診斷資訊;
- 用於指定對齊方式的選項(-falign 函數,例如)現在可以接受幾個對齊選項;
- 新增了用於過濾文件列表的選項(-fprofile-過濾器文件, -fprofile-排除文件),由分析器檢測;
- AddressSanitizer 現在使用更緊湊的對齊來捕獲對堆疊上變數的無效存取;
- 大量輸出改進 -fopt-訊息;
- 添加選項 -fsave-優化記錄 將優化報告儲存到文件中;
- 添加選項 -fipa-堆疊對齊 и -fipa-參考可尋址.
新的內建功能
- __builtin_expect_with_probability __builtin_expect_with_probability;
- __builtin_has_attribute __builtin_has_attribute;
- __builtin_推測_安全性_值.
新屬性
- 複製.
其他
許多程式碼生成改進涉及:
- 開關結構的生成;
- 程式間優化;
- 基於分析資訊的優化;
- 裝配階段最佳化(LTO);
另外,gcov 的內部格式現在是 JSON,並且新選項 --使用熱度顏色 涉及根據程式碼行的使用頻率對程式碼行進行著色。
語言
實施的品質和完整性 開放ACC C、C++ 和 Fortran 語言不斷改進。
類別C語言
- 已實現對OpenMP 5.0的部分支援;
- 添加了功能 __builtin_convertvector;
- 添加警告 -打包會員的W地址;
- 改進了一些現有的警告;
- 將錯誤數量的參數傳遞給巨集時的錯誤文字現在包括巨集本身的聲明;
- 改進了拼字錯誤糾正建議。
C
- 支援 _Static_assert,並帶有一個參數 -std=c2x(未來的 C 標準);
- 新警告 -W絕對值,它捕獲像abs()這樣的函數的錯誤參數類型。
C + +中
- 新警告: -W已棄用的副本,
-Winit-列表-生命週期,
-無冗餘移動,
-W悲觀移動,
-Wclass 轉換; - 正在努力實施未來標準的新功能 C++2a;
- 前端現在儲存有關許多原始程式碼元素的更準確的信息,這使您可以在診斷中顯示更詳細的資訊;
- 改進了對重載函數、二元運算子、函數呼叫和格式字串的診斷;
- 新增了一些開發環境支援的針對一些常見錯誤(缺少括號、命名空間、拼字錯誤等)的自動修復。
libstdc++ 函式庫
- C++17 實作不再是實驗性的;
- 新增了並行演算法, , , A 不再需要 -lstdc++fs;
- 改進了對 C++2a 的實驗支援( , 、std::bind_front 等);
- 支援在Windows上開啟路徑包含非char字元的檔案流;
- 初步支持在 Windows 上;
- 對 Networking TS 的初步支持。
D
D 語言版本 2.076 包含在 GCC 中。
複式
- 全面支援異步I/O;
- 為 MILOC 和 MAXLOC 實作了 BACK 參數;
- 實現了FINDLOC和IS_CONTIGOUS函數;
- 已實現存取複數分量的語法:c%re 和 c%im;
- 實作語法 str%len 和 a%kind;
- 實作了 C 描述符和 ISO_Fortran_binding.h 標頭;
- 當參數之一為 NaN 時,放寬了 MAX 和 MIN 函數結果的要求;
- 添加選項 -fdec-包括;
- 新增指令 內建.
libgccjit
其他
許多特定於體系結構和作業系統的變更。
來源: linux.org.ru