LLVM 项目博客

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

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 支持。 r258333r258344

  • getCacheLineSize 已添加到 TargetTransformInfo 中。它目前仅由 PPCLoopDataPrefetch 使用。 r258419

  • LoopIdiomRecognize 在识别 memsets 方面的能力得到了提升。 r258620

Clang 提交

  • 添加了许多新的 AST 匹配器。 r258042r258072,等等。

  • LeakSanitizer 文档已更新,并添加了一个使用示例。 r258476

其他项目提交

  • 新的 ELF 链接器获得了对 MIPS 本地 GOT(全局偏移表)条目的初步支持。 r2583888

  • LLVM 测试套件现在包含一个 ClangAnalyzer 子目录,其中包含对静态分析器的测试。 r258336