LLVM 每周 - 第 26 期,2014 年 6 月 30 日
欢迎阅读 LLVM 每周的第 26 期,这是一个每周发布一次的时事通讯(每周一发布),涵盖 LLVM、Clang 和相关项目的最新进展。 LLVM 每周由 Alex Bradbury 为您带来。订阅未来的期刊,请访问 http://llvmweekly.org,并将它传递给您认为可能感兴趣的任何人。请将任何提示或反馈发送至 [email protected],或在 Twitter 上发送给 @llvmweekly 或 @asbradbury。
本期刊物的正式地址 可以在 llvmweekly.org 找到。
来自网络的新闻和文章
Vladmir Makarov 完成了他的 GCC 和 LLVM 年度比较,发布了使用 SPECInt2000 在 ARM 和 x86-64 上进行的性能比较。
基于 LLVM 的 D 编译器 LDC 的 0.13.0 版本已经 发布。这带来了大量的改进,在发布公告中详细列出。
一些 Mozilla 工程师一直在研究使用 clang-cl(与 MSVC 兼容的 Clang 驱动程序)来构建 Firefox。借助回退标志(如果 Clang 失败则回退到使用 MSVC 编译),他们已经 成功地完成了构建。Ehsan 告诉我们 目前大约 8% 的文件(7168 个文件中的 602 个)需要 MSVC 回退。
Trail of Bits 发布了 McSema 预览,这是一个将 x86 二进制文件转换为 LLVM 位码的框架。相关的演讲于 6 月 28 日举行,所以希望我们很快能听到更多关于它的信息。博文中告诉我们 McSema 将是开源的,很快就会发布。
Bruce Mitchener 写了他的 将 LLDB 集成到 Dylan 的经验。
Codeplay(总部位于爱丁堡)正在为 全职编译器工程师 招聘。
邮件列表上的内容
Alp Toker 开始了 关于在代码审查中使用 Phabricator 的漫长讨论。主要问题是 Phabricator 审查不一定会经过 llvm-commits,这可能会损害开发。已经采取了非常明智的步骤,即 向 Phabricator 提交了一个功能请求,以在没有邮件列表订阅代码审查时发出警告。
James Molloy 分享了一些关于 LLVM 针对 Cortex-A57 的粗略基准测试数据。对于 SPEC,LLVM 在大多数基准测试中明显落后于 GCC 5% 以下。James 还列出了他在比较输出时发现的一些错失的优化机会。
Alexander Kornienko 询问是否应该将最小 Python 版本要求从 2.5 提升到 2.7。对该主题的回复区分了使用 lit(用 Python 编写的)运行测试的最小版本和可能需要更少可移植性的工具脚本的最小版本。尽管 2.5 已经过时,但想要支持它的原因是为了支持长期版本,如 RHEL。
Diego Novillo 建议默认情况下启用调试列信息。他发现编译时间几乎没有差异,调试信息大小仅增长了 1%。似乎支持这样做,唯一的担心是某些调试器可能无法正确解释数据,从而导致奇怪的行为。David Blaikie 发现 gdb 测试套件中存在一些回归,但尚未进一步调查。
LLVM 提交
对 x86 后端中向量降低方式进行了重大改版。虽然它正在开发中,但默认情况下它是禁用的,但希望随着时间的推移,在有利于矢量化的基准测试中将有可衡量的性能改进。 r211888 等等。
如果条件来自比较,X86 FastISel 在降低选择指令时将直接使用 EFLAGS。它现在还支持浮点选择,以及其他改进。 r211543、r211544 等等。
ScaledNumber 已从 BlockFrequencyInfo 中分离出来,并被放入支持库中。 r211562。
循环矢量化器现在具有
-Rpass-missed
和-Rpass-analysis
报告。 r211721。开发人员文档已更新,以澄清尽管可以使用 Phabricator 提交代码以供审查,但您还应该确保将相关的 -commits 邮件列表添加为审查的订阅者,并准备好回复那里的评论。 r211731。
COMDAT 已添加到 IR 中。什么是 COMDAT? StackOverflow 已经为您解答。 r211920。
LLVM 获得了一个用于随机数生成器 (RNG) 的抽象。 r211705。
Clang 提交
当用户意外将大括号放在标识符之前时,例如
int [4] foo;
,添加了一个很小的诊断改进。 r211641。