LLVM 21.0.0git 版本发布说明

警告

这些是即将发布的 LLVM 21.0.0git 版本的进行中说明。先前版本的发布说明可以在下载页面上找到。

简介

本文档包含 LLVM 编译器基础设施版本 21.0.0git 的发布说明。在此,我们描述 LLVM 的状态,包括先前版本的主要改进、LLVM 各个子项目的改进以及代码的当前一些用户。LLVM 发布网站提供了所有 LLVM 版本的下载。

有关 LLVM 的更多信息,包括有关最新版本的信息,请查看LLVM 主网站。如果您有任何问题或意见,Discourse 论坛是提问的好地方。

请注意,如果您是从 Git 结账或 LLVM 主网页阅读此文件,则本文档适用于下一个版本,而不是当前版本。要查看特定版本的发布说明,请参阅发布页面

此版本中的非详尽更改列表

LLVM IR 的更改

  • nocapture 属性已被 captures(none) 替换。

  • 以下指令的常量表达式变体已被删除

    • mul

LLVM 基础设施的更改

  • 删除了对目标内在函数在目标目录本身中定义的支持(即 TargetIntrinsicInfo 类)。

LLVM 构建的更改

TableGen 的更改

过程间优化的更改

AArch64 后端的更改

AMDGPU 后端的更改

ARM 后端的更改

AVR 后端的更改

DirectX 后端的更改

Hexagon 后端的更改

LoongArch 后端的更改

MIPS 后端的更改

PowerPC 后端的更改

RISC-V 后端的更改

  • 为 Qualcomm uC ‘Xqcilia` (Large Immediate Arithmetic) 扩展添加了实验性汇编器支持。

  • 为 Qualcomm uC ‘Xqcibm` (Bit Manipulation) 扩展添加了实验性汇编器支持。

  • 为 Qualcomm ‘Xqccmp’ 扩展添加了实验性汇编器和代码生成支持,该扩展是与 Zcmp 兼容的帧指针约定版本。

  • vrgather.vv 指令添加了非二次 log-vrgather 成本模型

WebAssembly 后端的更改

Windows 目标的更改

  • fp128 现在是间接传递的,这意味着它使用与 i128 相同的调用约定。

X86 后端的更改

OCaml 绑定的更改

Python 绑定的更改

C API 的更改

  • 以下用于创建常量表达式的函数已被删除,因为不再支持底层常量表达式。相反,应使用 LLVMBuildXYZ API 创建指令,如果可能,它将常量折叠操作数,否则将创建指令

    • LLVMConstMul

    • LLVMConstNUWMul

    • LLVMConstNSWMul

CodeGen 基础设施的更改

元数据信息的更改

调试信息的更改

LLVM 工具的更改

  • llvm-objcopy 现在支持用于中间 Mach-O 对象文件的 --update-section 标志。

  • llvm-strip 现在支持在遇到错误时继续处理文件。

LLDB 的更改

  • 使用 Python 支持构建 LLDB 时,Python 的最低版本现在为 3.8。

  • LLDB 现在支持 AArch64 Windows 目标的硬件断点。Windows 不提供 API 来查询支持的硬件断点数量。因此,当前实现仅允许 1 个断点,这是在 Microsoft SQ2 和 Snapdragon Elite X 平台上使用 Windows 11 测试的。

  • LLDB 现在单步执行 C++ thunk。这修复了先前无法单步进入多重继承虚函数的问题。

lldb-dap 的更改

  • 现在可以为行内的特定列设置断点。

  • 函数返回值现在在单步跳出时显示。

BOLT 的更改

Sanitizers 的更改

其他更改

使用 LLVM 21.0.0git 的外部开源项目

  • 一个项目…

附加信息

有关更多其他信息,请访问 LLVM 网页,特别是在文档部分。该网页还包含与源代码的 Git 版本保持同步的 API 文档版本。您可以通过进入 LLVM 树中的 llvm/docs/ 目录来访问特定于此版本的这些文档版本。

如果您对 LLVM 有任何疑问或意见,请随时通过 Discourse 论坛 与我们联系。