LLVM 周刊 - 第 6 期,2014 年 2 月 10 日
欢迎来到 LLVM 周刊的第六期,这是一个每周发布(每周一发布)的时事通讯,涵盖 LLVM、Clang 和相关项目的最新进展。LLVM 周刊由 Alex Bradbury 提供。订阅未来期刊请访问 http://llvmweekly.org,并将它传递给您认为可能感兴趣的任何人。请将任何提示或反馈发送到 [email protected],或 @llvmweekly 或 @asbradbury 在 Twitter 上。我一直在更新 @llvmweekly Twitter 帐户 整个星期,所以如果你想要更频繁的新闻更新,请关注它。
本期文章的规范地址 可以在 llvmweekly.org 找到。
来自网络的新闻和文章
Alexi Starovoitov 已 发布了针对 Linux 内核的 BPF 扩展版本的 LLVM 后端。可以通过 BPF 编译和运行的程序类型示例可以 在此处找到。
现在距离提交即将举行的 EuroLLVM 2014 的演示文稿、教程、海报等的提案还有不到一周的时间。开始写吧!
LWN 对最近关于 GCC 邮件列表上 LLVM 及其许可证的讨论的报道现在 对非订阅者开放。
Renato Golin 在 GCC 邮件列表上发帖,建议在可能的情况下进行更多合作,例如标准化命令行界面、语言扩展或一般的技术讨论。我知道一个 GCC 开发人员的邮件列表,他们希望了解 LLVM/Clang 的最新进展,应该订阅......
Phoronix 已 发布了一个基准测试,在 Intel Core i5-4670 系统上比较了 GCC 4.8.2、GCC 4.9 快照和 Clang 3.4。
在邮件列表上
索尼电脑娱乐美国正在 寻找实习生加入他们的编译器工程团队。
Venkatraman Govindaraju 报告说 Clang 现在可以在 Linux/sparc64 和 FreeBSD/sparc64 上自行托管。
Paul Vario 要求提供有关 RegionInfo 中使用的算法的更多信息,并指出实现的算法与标题注释中引用的论文 中的算法大不相同。该代码的最初作者 Tobias Grosser 随后 解释了与该论文的差异。
Gordon Keiser 有助于提醒我们 clang 可以很高兴地接受 LLVM 位代码作为输入。
Stephen Kelly,一位上游 CMake 开发人员 加入了,为 LLVM 目前的 CMake 使用提供建议,并了解该项目遇到了哪些 CMake 问题。许多回复对使用 CMake 同时构建多个 LLVM 子项目或针对已安装的 LLVM 树构建 clang 的能力感兴趣。
上周的 RFC 对 BlockFrequency 的使用提出了质疑,现在已经有了很多后续回复。我在这里不会总结,因为担心会误解人们,但如果这个话题让你感兴趣,请务必看看。
Tom Stellard 正在 寻找应该合并到未来的 3.4.1 版本中的错误修复补丁。
Renato Goling 开始了关于 LLVM/Clang 中 展开和异常处理行为的讨论,列出了他对代码现状的四个问题。
Vassil Vassilev 询问是否有人为 Clang 的静态分析器 实现了复制粘贴检测器。Nick Lewycky 分享了他的实现,该实现与该方向的实现类似。
Ben Langmuir 发布了一个关于 clang 的虚拟文件系统的 RFC。其目标是“允许构建系统向 clang 提供文件/目录布局,而无需在磁盘上‘真正’构造它”。
LLVM 提交
x86 后端通过将一些 x86 位操作指令的匹配从 X86ISelLowering.cpp 移动到 X86InstrInfo.td 而略微简化。我提到这个提交主要是作为对那些正在处理 LLVM 后端代码的人的有用参考。 r200824。
寄存器分配器获得了一种新的“最后机会重新着色机制”。不幸的是,提交消息中没有包含有关此机制如何改进给定代码库的寄存器分配的任何数据。 r200883。
旧的 SmallPtrSetImpl 被重命名为 SmallPtrSetImplBase,并引入了新的 SmallPtrSetImpl。这个新的 SmallPtrSetImpl 不需要在它的模板参数中指定特定的集合大小。 r200688。
在 CodeGenPrepare 中添加了许多代码,这些代码试图将符号扩展从加载中移开,以增加地址计算能够折叠到类似 x86 的具有复杂寻址模式的体系结构的加载中的可能性。 r200947。
strchr(p, 0)
现在被简化为p + strlen(p)
。 r200736。有关处理次要(“点”)版本的的信息已添加到 HowToReleaseLLVM 文档中。 r200772。
MIPS 汇编程序学会了理解
%hi(sym1 - sym2)
和%hi(sym1 - sym2)
表达式。 r200783。Mips 获得了 NaCl 目标。 r200855。
LLVM 现在假定汇编程序支持
.loc
指令,用于指定调试行号。 r200862。内联程序已修改,在决定是否内联时会考虑函数的 cold 属性。 r200886。后面的提交将 inlinecold-threshold 设置为与 inline-threshold 相同,以便目前内联行为得以保持。 r200898。
延迟调用图分析传递的初始实现(用于即将发布的新传递管理器)已提交。 r200903。
TargetLowering 中的 allowsUnalignedMemoryAccess 函数现在接受地址空间参数。这是为像 R600 这样的体系结构添加的,在这些体系结构中,不同的地址空间具有不同的对齐要求。 r200887。
Clang 提交
添加了对 MS ABI 兼容的混淆的支持。 r200857。
ARM 目标获得了对
arm_neon.h
中定义的加密内联函数的支持。 r200708。forRangeStmt AST 匹配器获得了一个方便的 hasLoopVariable 子匹配器。 r200850。
现在支持 -verify-pch CC1 选项。 r200884。
-fhiding-week-vtables CC1 选项已被移除。 r201011。
LLVM 的新诊断系统现在已连接到 clang 的诊断系统。 r200931。