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
内置函数。 r247104,r247374。