LLVM Git 仓库的代码提交记录显示,它已初步支持 Fat LTO 对象。预计今年秋季的 LLVM/Clang 17 将提供"-ffat-lto-objects"支持。
据介绍,为编译器启用 Fat LTO 对象支持可以让编译器 IR 与最终目标代码一起保存。因此,这些 "fat" 对象可以用于开发构建和优化构建的生产,但代价是增加了对象大小和更长的构建时间。然后在链接时间阶段确定是否丢弃 link-time 优化 (LTO) 信息,或者是否使用它。
GCC 支持 Fat LTO 对象已经有一段时间,本周 LLVM 也提供了初步支持,其实现与 GCC 类似。添加初步 Fat LTO 支持的 commit 解释道:
“Fat LTO 对象包含 LTO 兼容的 IR 以及生成的目标代码。该特性为开发者提供推迟是否使用 LTO 的 link-time。GCC 已提供此特性。”
按照 LLVM 的发布节奏,当 LLVM 17 于 9 月份左右首次亮相时,这将与许多其他新的编译器功能一起发布。