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;
- 前端现在存储有关许多源代码元素的更准确的信息,这使您可以在诊断中显示更详细的信息;
- 改进了对重载函数、二元运算符、函数调用和格式字符串的诊断;
- 添加了一些开发环境支持的针对一些常见错误(缺少括号、命名空间、拼写错误等)的自动修复。
库标准++
- C++17 实现不再是实验性的;
- 添加了并行算法, , , A 不再需要 -lstdc++fs;
- 改进了对 C++2a 的实验支持( , 、std::bind_front 等);
- 支持在Windows上打开路径包含非char字符的文件流;
- 初步支持在 Windows 上;
- 对 Networking TS 的初步支持。
D
D 语言版本 2.076 包含在 GCC 中。
Fortran语言
- 全面支持异步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