附录 A. 版本 9.0 的更改
以下章节记录了 Red Hat Developer Toolset 9.0 中引入的功能和兼容性更改。
A.1. GCC 的更改 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Red Hat Developer Toolset 9.0 带有 GCC 9.3.1。
从以前的 Red Hat Developer Toolset 版本开始添加了或修改了以下功能:
常规改进
- 接受 byte-size 参数的所有命令行选项现在接受 64 位整数和标准 SI 和 IEC 后缀。
-
添加了一个新选项:
-flive-patching=[inline-only-static|inline-clone]。它为实时补丁提供了安全编译。 改进了 GCC 诊断:
-
左侧边缘现在显示行号。要配置此功能,请使用 the
-fno-diagnostics-show-line-numbers选项。 -
现在,源代码的区域可以标记为显示相关信息,例如表达式中的类型。要禁用标签,请使用 the
-fno-diagnostics-show-labels选项。
-
左侧边缘现在显示行号。要配置此功能,请使用 the
-
校准相关的选项
-falign-functions,-falign-labels,-falign-loops, and-falign-jumps现在支持二级对齐,如 example-falign-loops=n:m:n2:m2。 -
添加了一个新的性能分析选项:
-fprofile-filter-files和-fprofile-exclude-files。这些选项有助于过滤检测哪些源文件。 添加了以下内置功能:
-
__builtin_expect_with_probability函数为 optimizer 提供分支预测可能提示。 -
__builtin_has_attribute函数决定是否使用属性声明函数、类型或变量。 -
__builtin_speculation_safe_value函数可帮助缓解不安全的规范执行。
-
-
添加了新的
copy功能属性。将其与功能、变量或类型一起使用。 添加了大量代码生成改进,包括流程间、配置集驱动的和链接时间优化改进,例如:
- 通过将不同的策略用于交换机问题单的子集,改进了切换扩展。策略包括跳过表、位测试和决策树。
- GCOV 命令行工具有所改进。例如,GCOV 工具的中间格式现在是一个新的 JSON 格式。
语言功能
与语言相关的显著变化包括:
C 系列
- C 和 C++ 编译器现在部分支持 OpenMP 规范的版本 5.0。
-
为向量转换添加了新的扩展
__builtin_convervector。 -
添加了一个新的 warning
-Waddress-of-packed-member。它默认是启用的,并从 struct 或 union 中打包成员的地址发出与未对齐的指针值相关的警告。 - 一些现有警告会被改进。
C
-
添加了对
-std=c2x的实验性支持。 -
添加了一个新的 warning
-Wabsolute-value。当有更合适的标准功能可用时,它会警告调用标准函数,以计算参数的绝对值。
C++
添加了新警告:
-
-Wredundant-move选项由-Wextra表示,警告针对冗余调用std::move。 -
当调用 std::
move 时,-Wpessimizing-move 选项表示,在调用std::move时警告。 -
默认情况下,
-Winit-list-lifetime选项为 on。在使用std::initializer_list时,它会发出警告,可能会导致悬停的指针。
-
-
C++ 前端现在对某些 C++2a 草案功能具有实验性支持,并带有
-std=c++2aor-std=gnu++2a标志。 - 改进了错误诊断。
架构和处理器支持
构架和处理器支持的更改包括:
64 位 ARM 架构
现在支持以下处理器(GCC 标识符在括号中提供):
- ARM Cortex-A76 (cortex-a76)
- ARM Cortex-A55/Cortex-A76 DynamIQ big.LITTLE (cortex-a76.cortex-a55)
- ARM Neoverse N1 (neoverse-n1)
- ARM Neoverse E1 处理器(-mcpu=neoverse-e1)
AMD64 和 Intel 64
- 不再支持 Intel MPX (内存保护扩展)。
- 添加了对 Intel PTWRITE 的新 ISA 扩展支持。
- 现在支持名为 Cascade Lake 的 Intel CPU,带有 AVX512 扩展。
IBM Z
- 现在支持 ARCH (13)架构。
-
添加了新向量指令的内置功能。使用
-mzvector选项启用它们。 - 对 ESA 架构 G5 和 G6 的支持已弃用。