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. 权利:您可以随时限制,恢复和删除您的信息。