LLVM 每周 - 第 61 期,2015 年 3 月 2 日
欢迎来到 LLVM 每周的第 61 期,这是一份每周发布的简报(每周一发布),涵盖 LLVM、Clang 和相关项目的最新进展。LLVM 每周由 Alex Bradbury 为您带来。在 http://llvmweekly.org 订阅未来的问题,并将它传递给您认为可能感兴趣的任何人。请将任何提示或反馈发送至 [email protected],或在 Twitter 上关注 @llvmweekly 或 @asbradbury。
本期文章的官方地址 可在 llvmweekly.org 找到。
来自网络的新闻和文章
本周最大的新闻无疑是 LLVM/Clang 3.6 的发布。请参阅 LLVM 3.6 版本说明 和 Clang 3.6 版本说明,了解主要变更的完整概述。
LLVMSharp 已经发布,它是一个针对 LLVM 的 C# 和 .NET 绑定。
Pyston 是 Dropbox 开发的基于 LLVM 的 Python JIT,它发布了 0.3 版本。它现在最小程度地实现了自托管。您也可以在线查看 性能结果。
读者可能会喜欢这个 使用 LLVM 创建基本编译器的演练。
邮件列表
Diego Novillo 宣布了 Google 在 LLVM 中开发 PGO 剖析支持的意图。我们可以很快期待一份文件,详细说明计划并促进进一步的讨论。
Ashutosh Nema 提议了一种新的循环版本优化。在这种优化中,会生成循环的多个版本,并根据运行时内存别名测试选择实现。有建议称,最近关于循环访问分析的一些工作提供了其中的一些功能。
Philip Reames 建议为前端作者编写性能指南。不出所料,这个想法很受欢迎。
Zachary Turner 建议 将嵌入式 Python 与 LLDB 的其余部分分离。正如帖子中所述,很难为 Windows 提供与标准 Python 二进制构建和预编译 Python 模块的兼容性。
Ahmed Bougacha 开始了一场关于 禁用 GlobalMerge 的讨论,GlobalMerge 目前在 ARM 和 AARch64 上启用。随后的大部分讨论都集中在理解为什么在 LTO 中使用 GlobalMerge 似乎会导致性能下降。
Katya Romanova 将 关于跳跃线程优化错误的讨论 移至 llvm-dev。该问题是由于生成了一个包含格式错误指令的不可达块,并且有很多后续讨论关于传递是否应该生成不可达块。
Dibyendu Majumdar 在邮件列表中 询问了消除冗余加载的问题。他设法 解决了这个问题。
LLVM 提交
向不透明指针类型的迁移工作已经开始。请参阅提交消息,了解更多详细信息以及有关迁移现有文本 IR 的帮助。 r230786,r230794。
PlaceSafepoints 和 RewriteGCForStatepoints 传递已经记录。 r230420。
GC 状态点文档已经清理并扩展了示例 IR、汇编和栈图。 r230601。
循环不变代码移动传递已经重构,以将其实现的核心功能作为其他转换可以使用的实用程序函数公开。 r230178。
针对 MIPS fast-isel 的 alloca 支持的实现已经开始。 r230300。
PowerPC 后端获得了对 QPX 矢量指令集的支持。 r230413。
InductiveRangeCheckElimination 现在可以处理具有递减归纳变量的循环。 r230618。
在其他改进中,llvm-pdbdump 获得了彩色输出。 r230476。
Forward Control Flow Integrity Pass 已经移除,因为它正在重新设计,目前尚未使用。 r230780。
面向前端作者的性能提示文档诞生。 r230807。