LLVM 每周 - 第 97 期,2015 年 11 月 9 日
欢迎来到 LLVM 每周的第 97 期,这是一份每周发布的新闻稿(每周一发布),涵盖 LLVM、Clang 和相关项目的最新进展。LLVM 每周由 Alex Bradbury 为您提供。在 http://llvmweekly.org 订阅未来期数,并将其传递给您认为可能感兴趣的任何人。请将任何提示或反馈发送至 [email protected],或在 Twitter 上 @llvmweekly 或 @asbradbury。
本期在 llvmweekly.org 上的规范主页。
来自网络的新闻和文章
上周 LLVM 开发会议的许多幻灯片演示文稿已经开始出现。第一组视频在 这里 短暂出现,但显然它们还没有准备好分发,并且已经被重新删除。与此同时,您可能对以下幻灯片感兴趣:Living downstream without drowning,Automated performance tracking of LLVM-generated code,opaque pointer types 和 debug info on a diet。
Pyston 0.4 已经 发布。它现在除了 LLVM JIT 之外还具有一个基线 JIT。
基于 LLVM 的 ELLCC 交叉编译工具链已经有了 新的版本,版本 0.1.18。此版本已针对构建 Linux 内核进行测试。
FOSDEM 2016 将举办一个 LLVM 演示室。查看 此处以了解征文和参与情况。提交截止日期为 12 月 1 日。
在邮件列表上
正如忠实的 LLVM 每周读者所知,长期以来一直有一项运动旨在用 CMake 替换 LLVM 构建系统中的 autoconf。现在,Chris Bieneman 建议我们应该考虑 弃用 autoconf。他的提议建议将其标记为 3.8 版本已弃用,并在 3.8 分支之后从主开发树中删除。此提议得到了很多积极的反馈。
在关于传递中
DEBUG_TYPE
用于在调试消息前缀中的零星使用进行了讨论之后,Daniel Berlin 建议 引入一个新的DEBUG_MSG
宏,该宏将始终包含DEBUG_TYPE
。虽然有一些回复表明他们发现将调试消息加上前缀非常有用,但似乎还没有就是否值得用类似的东西替换所有DEBUG(dbgs() << ..)
达成共识。George Burgess 正在 寻求对其在 Clang 中执行可空性分析的提议的反馈。
Richard Diamond 已经编写了一份 关于引入 llvm.blackbox 本征函数的提议,其目的是明确防止某些优化。到目前为止,关于这个本征函数究竟做什么以及是否有其他方法可以实现相同目标,还存在一些困惑。
James Molloy 提议添加一个新的 norecurse 属性。除了没有重大例外之外,实际上已经提交了这个属性。有关更多信息,请参见下面的提交摘要。
David Blaikie 计划实现一个 llvm-dwp 工具来支持从多个 .dwo 分割调试文件中构建 DWARF 包文件。他正在 寻求对其计划的反馈。
Chris Bieneman 一直在改进 CMake 构建系统对引导交叉编译器工具链的支持,并且 遇到了涉及编译器运行时和引导内置函数的问题。似乎有一些人支持第三种提议的选项,即拆分内置函数和运行时库。
LLVM 提交
SimplifyCFG 添加了一个新的优化,用于合并条件存储。提交消息指出它对标准 LLVM 测试套件的影响很小,但它显然在第三方套件中引起了许多变化。 r252051。
现在禁用了 ilist 迭代器和指针之间的隐式转换。所有树内代码都已更新为使用显式转换,但树外开发者可能需要暂时还原此补丁或更新其代码。 r252380。
引入了 LoopLoadElimination 遍历,它可以发现 store-to-load 转发机会。 r251972,r252017。
操作数捆绑的工作继续进行,添加了
data_operand
抽象。 r252077。LLVM 获得了用于打包结构定义的可移植辅助宏。 r252099。
DebugInfo 已修改,以便对子程序的引用存储在函数级元数据中,而不是子程序包含对它们描述的函数的元数据引用。在 此处 附加了一个用于更新树外文本 IR 的脚本。 r252219,r252268。
引入了
norecurse
属性。这表示该函数永远不会递归调用自身,无论是直接还是间接,并且可以用于将全局变量降级为局部变量。 r252282。为调用指令添加了
notail
标记,该标记可以防止优化器添加尾部或必须尾部标记。 r252368。
Clang 提交
引入了“模块文件扩展”的概念。这些扩展为模块文件添加了额外的信息,可以在读取时查询这些信息,从而允许基于 Clang 构建的工具将其自己的数据存储在模块文件中。有关更多详细信息,请参见 原始邮件列表 RFC。 r251955。
Clang 现在支持
__make_integer_seq
模板。__make_integer_seq<std::integer_sequence, int, 90000>
需要 0.25 秒,而std::make_integer_sequence<int, 90000>
需要很长时间,补丁作者没有等到它完成。 r252036。新引入的 VforkChecker 将在 vfork 进程中查找不安全的代码。 r252285。
其他项目提交
LLDB 获得了一个初始的 Go 表达式解析器。 r251820。
编译器运行时现在支持 32 位 mingw-w64。 r251928。
已经编写了一些关于 向 LLDB 添加编程语言支持 的初始文档。 r251831。
LLDB 现在应该能够直接在 iOS 模拟器上启动处理器。 r252112。