LLVM 项目博客

LLVM 项目新闻和来自实战的细节

LLVM 每周 - 第 89 期,2015 年 9 月 14 日

欢迎来到 LLVM 每周的第 89 期,这是一个每周发布(每周一发布)的时事通讯,涵盖 LLVM、Clang 和相关项目的进展。LLVM 每周由 Alex Bradbury 为您带来。订阅未来期刊请访问 http://llvmweekly.org 并将其传递给您认为可能感兴趣的任何人。请将任何提示或反馈发送至 [email protected],或在 Twitter 上发送至 @llvmweekly@asbradbury

本期文章的官方链接 可在 llvmweekly.org 找到

网络上的新闻和文章

本周我没有发现任何新的与 LLVM 相关的文章或新闻。需要提醒的是,我始终欢迎通过电子邮件或 Twitter 提供的提示。既然没有新内容,现在似乎是提醒您 Stephen Diehl 关于 使用 Haskell 和 LLVM 实现 JIT 编译语言 的教程,或者 Adrian Sampson 的 'LLVM for grad students' 的好时机。

邮件列表上的内容

  • James Knight 提出要 弃用并删除旧的 SelectionDAG 调度程序,因为机器调度程序现在是首选方法。他指出,一些树内目标仍然使用 SelectionDAG 调度程序。看起来对于这个计划有 支持

  • Jauhien 对 ORC JIT 的 C API 的可用性 感兴趣,这里的主要用例是为 Rust 提供一个绑定。 主要问题 是 ORC API 尚未稳定,这意味着无法提供稳定的 C 绑定。提案是将它们放在 llvm/include/llvm-c/unstable 中。

  • Joseph Tremoulet 对 addrspacecast 语义提出了一系列问题,Chandler Carruth 对此 做出了详细的解答

  • David Chisnall 对如何用多个返回值实现 LLVM 内部函数的问题给出了一个 有用的回复。正如他指出的那样,这通常是通过返回一个结构体来完成的。

LLVM 提交

  • LLVM 的别名分析管理器进行了重大修改,以便将其移植到新的传递管理器。有关完整详细信息,请参见提交消息。 r247167

  • 聚合体的标量替换 (SROA) 传递已被移植到新的传递管理器。在提交消息中,Chandler 评论说,他希望这能成为将具有非平凡状态的转换传递移植到新的传递管理器的良好示例。 r247501

  • GlobalsModRef 别名分析传递现在默认情况下已启用。 r247264

  • Emacs 用户,请休息一下您疼痛的无名指,并欣喜若狂。针对 Emacs LLVM IR 模式的一系列改进已完成。 r247281

  • AArch64 后端现在可以选择 STNP(非临时存储指令)(这暗示该值不必保留在缓存中)。 r247231

  • 收缩包装优化在 PPC64 上已启用。 r247237

  • 一大堆 StringRef 函数已散布了 ALWAYS_INLINE 属性,以便即使在调试 LLVM 版本上也能减少字符串操作的开销。Chandler 还一直在进行其他更改,以提高调试版本的 check-llvm 的性能。 r247253

  • LLVM 性能提示文档已扩展,以详细说明 allocas 的使用以及何时指定对齐方式。 r247301

  • hasLoadLinkedStoreConditional TargetLoweringInformation 回调现已拆分为 bool shouldExpandAtomicCmpXchgInIR(inst)AtomicExpansionKind shouldExpandAtomicLoadInIR(inst)r247429

Clang 提交

  • 引入了一种新的控制流完整性变体,间接函数调用检查(使用 -fsanitize=cfi-icall 启用)。这会检查被调用函数的动态类型是否与调用时使用的静态类型匹配。 r247238

  • 现在可以使用新的 -analyzer-config 选项来修改内联器认为是大型函数的大小。 r247463

  • Clang 现在将尽力在 IR 生成期间保留对齐信息。 r246985

  • 引入了 __builtin_nontemporal_store__builtin_nontemporal_load 内置函数。 r247104r247374

其他项目提交

  • libcxx 获得了 Boyer-Moore 和 Boyer-Moore-Horspool 搜索器的实现(用于语言基础技术规范)。 r247036

  • 一个与新的 ELF lld 链接在一起的简单动态程序现在可以使用 musl 的动态链接器。 r247290

  • LLD 的 COFF 链接器学会了合并循环图,这意味着自链接现在会生成 27.7MB 的可执行文件,而不是 29.0MB 的可执行文件。MSVC 设法生成了 27.1MB 的可执行文件,所以还有改进的空间。 r247387