LLVM 每周 - #111,2016 年 2 月 15 日
欢迎来到 LLVM 每周的第 111 期,这是一份每周发布(每周一发布)的时事通讯,涵盖 LLVM、Clang 和相关项目的进展。LLVM 每周由 Alex Bradbury 为您带来。订阅未来期数请访问 http://llvmweekly.org,并将其转发给您认为可能感兴趣的任何人。如有任何建议或反馈,请发送至 [email protected],或在 Twitter 上通过 @llvmweekly 或 @asbradbury 联系。
本期的规范主页 可以在 llvmweekly.org 上找到.
来自网络的新闻和文章
已经发布了 CilkPlus 编译器的最新版本。这包括对最新 LLVM 和 Clang 主干的更新。CilkPlus 在 Clang 中实现了 Cilk Plus 语言扩展,用于数据和任务并行。
C++ 标准委员会已经发布了一些新论文。P0225R0,或者您可能更喜欢称之为 "为什么我想要概念,以及为什么我想要它们尽快出现",值得一读。最近还发布了几篇关于迭代器外观、文件系统技术规范和统一函数调用语法的 其他论文。
在邮件列表上
Jacques Pienaar 已经提出了 'Lanai' 后端的向上游移植。这是针对 Google 内部使用的 CPU 设计,这些补丁的发布确实吸引了 媒体的关注。随之而来的讨论中,很大一部分集中在将新的后端向上游移植的标准应该是什么。最终,似乎支持向上游移植的人远多于反对的人,但有些人担心其他人能否在没有硬件或甚至模拟器的情况下测试生成的代码。
Natanael Ramos 最近在其学士学位论文中使用了 LLVM,因此 编写并提交了编写新的 LLVM 寄存器分配器教程。它也可以在 github 上找到。
Nolan 一直在开发 一个实验性的 6502 后端,并寻求 内存操作数折叠问题的帮助。他后来在列表中跟进了 他的解决方案,David Chisnall 添加了一些关于 针对 6502 或类似架构的潜在方法的额外想法。
Hans Wennborg 正在 寻求帮助扩展 3.8 版本的发布说明。
Vaivaswatha Nagaraj 一直在开发一种 控制结构分析,它能够在 CFG 中检测控制结构,并正在寻求对其代码的反馈。
Lang Hames 在其关于 LLVM 库中错误处理的 RFC 后跟进了一篇详细的帖子 总结了他的想法并回应了一些反馈。
遗憾的是,CMake 当前的 Ninja 生成器 是非确定性的。好消息是 CMake 上游已经有了修复。
Peter Collingbourne 对 减少 DWARF 发射器内存消耗进行了原型设计。初步结果非常积极。
Philip Reames 提出 从 3.8 分支中删除 inaccessiblememonly 属性,理由是主要的激励补丁已被恢复,没有进一步的开发,将其包含在版本中可能会带来向后兼容性问题。从回复来看,目前似乎达成了一致意见。
LLVM 将申请今年的 Google 暑期代码库。如果您在“开放项目”页面上列出了一个项目,请在必要时审查并更新它,或建议新的项目。
LLVM 提交
WholeProgramDevirt 通道已添加。这实现了虚拟调用的整个程序优化,其中调用者列表已知是固定的。 r260312。
AVR 后端的向上游移植继续进行,添加了 AVR tablegen 指令定义。 r260363。
本周,新的全局指令选择机制还进行了大量其他工作,但我重点介绍的提交是添加了对翻译 Add 指令和降低返回值的支持。它目前正在使用 AArch64 后端进行测试。 r260549、r260562、r260600。
AArch64 后端获得了对 Qualcomm Kryo CPU 的支持(包括调度模型)。 r260686。
LoopUnrollAnalyzer 已从 LoopUnrollPass 中抽象出来,并获得了对其功能的单元测试。 r260169。
llvm-config 获得了初步的 Windows 支持。 r260263。
语言参考中澄清了收敛属性的详细信息。现在,对于可证明不收敛或调用任何收敛函数的函数,将删除收敛属性。 r260316、r260319。
Clang 提交
现在可以使用 CMake 执行 3 阶段 Clang 构建。在提交消息中建议,这可能有助于通过验证第 2 阶段和第 3 阶段是否相同来检测编译器中的非确定性。 r260261。
可以使用适当的 Clang 选项来定位 ARMv8.2-A。 r260533。
Clang 的 CMake 构建系统了解了
CLANG_DEFAULT_CXX_STDLIB
来设置默认的 C++ 标准库。 r260662。