LLVM 每周 - 第 108 期,2016 年 1 月 25 日
欢迎来到 LLVM 每周的第 108 期,这是一个每周发布的时事通讯(每周一发布),涵盖 LLVM、Clang 和相关项目的进展。LLVM 每周由 Alex Bradbury 编写。订阅未来的问题,请访问 http://llvmweekly.org,并将其转发给您认为可能感兴趣的其他人。请将任何建议或反馈发送至 [email protected],或在 Twitter 上通过 @llvmweekly 或 @asbradbury 发送。
本期在 llvmweekly.org 上的规范主页。
来自网络的新闻和文章
LLVM 3.8 RC1 已发布。现在是时候使用您最喜欢的项目对其进行测试并报告任何问题了。
提交 EuroLLVM 征文 的截止日期是今天。
Rust 编程语言的 1.6 版本 已发布,上周发布了。Rust 使用 LLVM 进行代码生成。
LLVM 在巴黎的社交活动将在本周 星期三举行。
在邮件列表上
Quentin Colombet 发布了一个 RFC 请求对添加一种 MachineModulePass 类型的意见。问题包括谁会感兴趣以及为什么。John Criswell 的 回复 包含了一些有趣的用例。
Eduard-Mihai Burtescu 发布了一个 RFC 关于 使 byval 参数传递与不透明指针一起工作。
Quentin Colombet 发布了一个 RFC,寻求对 LLVM IR 和后端之间用于指令选择 的合约的意见。特别是,后端是否能够对任何有效的 LLVM IR 执行指令选择。有几个人反馈说,在实践中,后端不需要能够选择任何指令,只要它提供 IR 到 IR 的转换,这些转换可以在指令选择之前执行必要的修改即可。
Jonas Wagner 希望获得有关如何在 LLVM 中支持 自修改分支 的反馈。该线程包含了一些关于 预测良好的分支成本 的有趣讨论。深入研究以了解 LLVM 的逐个基本块指令调度器中的限制所造成的开销的多少,肯定值得一试。
Philip Reames 写信给列表,警告 RewriteStatePointsForGC 的用户 目前在表达任意异常控制流方面存在问题。该线程讨论了一些解决当前问题的潜在解决方案。
Ed Maste 一直在努力在 FreeBSD 的基本系统中使用 libunwind,并 查询其堆栈使用情况。LLVM 的 libunwind 允许在所有架构上保存 120 个寄存器,而相比之下,GCC unwinder 的最大值是目标相关的(在 x86-64 上是 18 个)。
LLVM 提交
llvm::SplitModule
获得了一个新标志,可用于让它尝试在不全局化局部对象的情况下拆分模块。 r258083。WebAssembly 后端现在将重新物化具有多个使用的常量,而不是将它们保存在寄存器中,因为在大多数情况下,在 WebAssembly 编码中,使用寄存器保存常量不会节省代码大小。 r258142。
来自全局指令选择工作的一些小补丁已开始落地,例如,为 ADD 引入通用机器操作码 (
G_ADD
) 以及构建它的重要 CMake 支持。 r258333,r258344。getCacheLineSize
已添加到 TargetTransformInfo 中。它目前仅由 PPCLoopDataPrefetch 使用。 r258419。LoopIdiomRecognize 在识别 memsets 方面的能力得到了提升。 r258620。