LLVM 13.0 带来支持改进等

LLVM

经过六个月的开发, 刚刚推出了新版本的项目«LLVM 13.0» 兼容GCC(编译器,优化器和代码生成器),可将程序编译为类似于RISC(具有多级优化系统的低级虚拟机)的虚拟指令的中间位代码

在这个新版本中,增加了各种变化和新颖之处,其中 突出显示支持增强功能 以及 C++20 和 C++2b 的新特性的实现等等。

LLVM 13.0的主要新功能

在这个新版本中,我们可以发现并添加了“-ehcontguard”选项以使用 CET 技术 (Windows 控制流强制技术)在异常处理阶段保护使用面向返回编程 (ROP) 技术构建的漏洞利用的执行。

而且debuginfo-test 项目已重命名为 cross-project-tests 它旨在测试来自多个项目的组件,不限于调试信息,并且构建系统支持构建多个发行版,例如一个带有实用程序,另一个带有开发人员库。

而且 Libc++ 继续实现 C++20 和 C++2b 标准的新特性,包括完成“概念”库,加上 添加了对 std: 文件系统的支持,基于 MinGW, 也分开头文件, 和并且添加了 LIBCXX_ENABLE_INCOMPLETE_FEATURES 构建选项以禁用功能未完全实现的头文件。

AArch64 架构的后端支持 Armv9-A RME 扩展 (领域管理扩展)和 SME(可扩展矩阵扩展)在汇编程序中, 添加了 ISA V68 / HVX 支持 到 Hexagon 架构后端和 x86 后端 改进了与 AMD Zen 3 处理器的兼容性 并向 AMDGPU 后端添加了对 GFX1013 RDNA2 APU 的支持。

实现对Big-endian Aarch64处理器的支持的LLD链接器的功能也得到了扩展,并且Mach-O后端已经达到了允许链接普通程序的状态。 它包括使用 LLD 链接 Glibc 的必要增强。

llvm-mca(机器代码分析器)实用程序增加了对有序超标量管道处理器的支持,例如 ARM Cortex-A55。

AArch64 平台的 LLDB 调试器提供对指针认证的全面支持, MTE(MemTag,内存标记扩展)和 SVE 寄存器,以及添加命令,允许您将标签绑定到每个内存分配操作,并在访问内存时组织检查应该与标签正确关联的指针。
LLDB 调试器和 Fortran - Flang 接口已添加到项目生成的二进制程序集中。

至于 Clang 13.0 重点改进:

  • 支持有保证的队列调用(函数末尾的子例程调用,如果子例程调用自身,则形成尾递归)已经实现。
  • 添加了“-Wunused-but-set-parameter”和“-Wunused-but-set-variable”标志以在设置但未使用参数或变量时显示警告。
  • 添加了“-Wnull-pointer-subtraction”标志以在代码可能由于在减法运算中使用空指针而导致未定义行为时显示警告。
  • 添加了“-fstack-use”标志,为每个代码文件生成一个额外的“.su”文件,其中包含有关处理文件中定义的每个函数的堆栈帧大小的信息。
  • 静态解析器中添加了一种新的输出类型“sarif-html”,它可以同时生成 HTML 和 Sarif 格式的报告。
  • 添加了对 allocClassWithName 的新检查。 当指定“-analyzer-display-progress”选项时,会显示每个函数的解析时间。 智能指针解析器 (alpha.cplusplus.SmartPtr) 几乎准备就绪。
  • 已实现对 OpenMP 5.1 规范中定义的循环转换指令(“#pragma omp unrol”和“#pragma omp tile”)的支持。
  • 大部分新检查已添加到 linter clang-tidy 中。

最后 如果您有兴趣了解更多信息, 您可以查看详细信息 在下面的链接中。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。