LLVM 每周 - 第 123 期,2016 年 5 月 9 日
欢迎阅读 LLVM 每周的第 123 期,这是一个每周发布的新闻稿(每周一发布),涵盖 LLVM、Clang 和相关项目的进展。LLVM 每周由 Alex Bradbury 提供。在 http://llvmweekly.org 订阅未来的期刊,并将其传递给您认为可能感兴趣的任何人。请将任何建议或反馈发送至 [email protected],或在 Twitter 上发送至 @llvmweekly 或 @asbradbury。
如果您明天在伦敦,您可能会对 NMI 开源大会 感兴趣。您可以在今天中午之前注册。我将在 lowRISC 上进行简短的演讲。说到会议,如果您对计算机教育中的多样性和包容性感兴趣,您可能想看看 6 月 11 日在曼彻斯特举行的 CAS #include 多样性大会。
本期期刊的规范地址 可以在 llvmweekly.org 找到。
来自网络的新闻和文章
Fabien Giesen 撰写了一篇简短的文章,解释了 为什么编译器利用未定义的有符号溢出。
Google 开源博客有一篇关于 XRay 函数调用跟踪系统 的 简短文章,该系统在上周的 LLVM 邮件列表中被提议用于上游。
邮件列表上的讨论
本周邮件列表上最活跃的讨论话题无疑是 关于添加 LLVM 行为准则的讨论的恢复。草案文本可以 在这里找到。除了许多提供对当前文本“+1”的消息之外,一些人对“在这些空间之外违反此准则可能会影响一个人在其中参与的能力”以及如何选择执行行为准则的委员会表示担忧。
Amos Robinson 在邮件列表上写了一篇关于 LLVM 当前全局值编号传递所遗漏的优化 的文章。令人兴奋的是,Daniel Berlin 报告说他正在开发一个 新的 GVN 实现。
Chandler Carruth 撰写了一篇关于 迁移到新的传递管理器的进展 的更新。他指出,目前主要的缺失部分是在传递管理器的两个部分之间传递无效信息的能力。
Jonas Hahnfield 分享了一份关于 自动生成非临时加载和存储 的 RFC。一些回复者强烈反对这样做,建议将其留给程序员来指定。
今年与 LLVM 相关的项目参加 Google 暑期实习计划的一些学生已经在邮件列表上介绍了自己。Utpal Bora 将致力于 在 LLVM 中实现 Polly 作为分析传递。Bianca-Cristina Cristescu 将致力于 使用 libstdc++ 启用 LLVM 的自托管模块构建,而 Roman Gareev 将 改进 Polly 中的向量化过程。
Chris Bieneman 指出,他最近在 LLVM 的 CMake 构建系统中引入了一个新选项,这可能对软件包维护人员特别有用。 LLVM_DISTRIBUTION_COMPONENTS 允许您指定要安装 LLVM 的哪些组件。
Peter Collingbourne 发布了一份关于 扩展 ThinLTO 以允许一个位码模块嵌入另一个包含 CFI 和全程序反虚拟化摘要信息的位码模块 的 RFC。
Adam Nemet 对 按代码区域的热门程度过滤优化备注 的想法感兴趣。
Justin Bogner 向树外后端维护人员发出预警,他 打算更改 SelectionDAGISel::Select 的 API,以便该函数直接替换节点,而不是返回所需的替换。
Quentin Colombet 分享了一份关于 LLVM 贡献者如何更好地帮助发布管理 的 RFC。这种方向得到了很多支持,大多数评论都在讨论如何更好地标记提交消息(在 phabricator/bugzilla 中提交后,或通过让提交者以特定格式编写提交消息)。
LLVM 提交
LLVM 的 CppBackend 已被删除。正如提交消息所说,这个后端已经腐烂到无法用于其最初目的,并且生成的代码无法编译。 r268631。
AVR 后端已将大量代码合并到 LLVM 中。 r268722。
MIPS 后端在重新定位的处理方式上发生了一些重大变化。这些现在使用 MipsMCExpr 而不是 MCSymbolRefExpr 来表示。作为做过很多(树外)LLVM 后端工作的人,我一直觉得有些架构在 include/llvm/MC/MCExpr.h 中有全局可见的枚举成员很奇怪。 r268379。
LLVM 构建现在应该默认情况下是确定性的,因为
LLVM_ENABLE_TIMESTAMPS
现在是选择加入而不是选择退出。事实上,一个后续补丁完全删除了该选项。 r268441,r268670。AARch64 后端学习了如何将对堆栈指针的调整组合起来,用于被调用方保存的堆栈内存和局部堆栈内存。 r268746。
Clang 提交
Clang 现在支持 x86 的
-malign-double
。这与 x86-64 上的默认行为一致,在 x86-64 上,i64 和 f64 类型对齐到 8 字节而不是 4 字节。 r268473。循环展开不再完全禁用
-Os
。 r268509。Clang 的发行说明(反映当前主干的状态)已更新,以便更多地说明 C++1z 支持的状态。 r268663。