LLVM 每周 - 第 88 期,2015 年 9 月 7 日
欢迎来到 LLVM 每周的第 88 期,这是一份每周发布的通讯(每周一发布),涵盖 LLVM、Clang 和相关项目的最新进展。LLVM 每周由 Alex Bradbury 编写。在 http://llvmweekly.org 订阅未来期刊,并将其传递给您认为可能感兴趣的任何人。请将任何提示或反馈发送至 [email protected],或在 Twitter 上发送至 @llvmweekly 或 @asbradbury。
本期文章的规范网址 可以在 llvmweekly.org 上找到。
来自网络的新闻和文章
过去一周最大的新闻当然是 LLVM 和 Clang 3.7 的发布。有关更多详细信息,请参阅 LLVM 发行说明 和 Clang 发行说明。
2015 年 GNU Tools Cauldron 的幻灯片现已在线提供。
基于 TTA 的协同设计环境 TCE 的 1.12 版本 已发布。
邮件列表中的内容
David Li 发表了一篇关于 减少概要引导优化大小开销的 RFC。他观察到,目前 Clang 的 PGO 检测导致二进制文件大小比 GCC 大 4.6 倍,而 GCC 大 2.8 倍。
Hip-Hop 虚拟机团队(一个针对 PHP 和 Hack 的 JIT 虚拟机)一直在研究 将 LLVM 用作后端。作为这项工作的一部分,他们生成了许多补丁,现在他们希望将其上游。Sanjoy 和 Philip(Azul)自愿帮助审查补丁。随着 Azul 上的 Java、Microsoft 上的 MSIL/C#、Dropbox 上的 Python 以及现在 Facebook 上的 PHP/Hack 的积极工作,似乎越来越多的团队希望在使用 LLVM 优化高级语言时改进 LLVM。
Dylan McKay 一直在树外维护和开发 LLVM 的 AVR 后端,现在他 有兴趣将其合并到上游。
Steve King 提出了一项新的 LoopExitValues 传递,旨在删除循环退出值的重新计算。这 后续消息 或许更清楚地说明了传递的作用。
Teresa Johnson 继续致力于 ThinLTO,现在她 分享了一份重新设计的 ThinLTO 文件格式文档。她还创建了 一个方便的网站 来跟踪 ThinLTO 的当前 RFC 和补丁。
John Regehr 分享了 Souper 的一些结果,这些结果指出了 computeKnownBits 可以改进的领域。
我上周错过了这个,但 Ben Craig 一直在 寻找提高 Clang 静态分析器速度的方法。Ted Kremenek 给出了 一些有用的通用指导。
LLVM 提交
gold 链接器的 LLVM 插件现在支持并行 LTO 代码生成。 r246584。
现在支持“不可预测”元数据注释。这可以用来表明分支或 switch 不可预测。 r246888。
添加了一个基于 libFuzzer 的工具来模糊 llvm-as。 r246458。
FunctionAttrs 传递学会了推断返回值的非空属性。 r246476。
Windows 异常处理的工作继续进行,添加了 cleanupendpad 指令和 llvm.eh.exceptionpointer 本征函数。 r246751、r246752。
Clang 提交
Clang 中添加了对 WebAssembly 目标的基本支持。基本代码生成得到支持,但尚未进行汇编或链接。 r246814。
当您从构造函数/析构函数函数-try-块的处理程序中引用对象成员时,Clang 现在会发出警告。 r246548。
Clang 了解了
__builtin_unpredictable
内建函数,它将生成新添加的不可预测元数据。 r246699。