LLVM 每周 - 第 19 期,2014 年 5 月 12 日
欢迎来到 LLVM 每周的第十九期,这是一份每周新闻通讯(每周一发布),涵盖 LLVM、Clang 和相关项目的最新发展。LLVM 每周由 Alex Bradbury 为您提供。订阅未来的问题请访问 http://llvmweekly.org,并将其传递给您认为可能感兴趣的任何人。请将任何提示或反馈发送至 [email protected],或在 Twitter 上发送给 @llvmweekly 或 @asbradbury。
我明天将飞往旧金山,并将在周末与其他树莓派基金会成员一起参加湾区创客嘉年华。如果你在附近,一定要打招呼。
来自网络的新闻和文章
LLVM 3.4.1 已发布。这是一个错误修复版本,因此提供与 LLVM 3.4 的 API 和 ABI 兼容性。感谢所有通过建议或回溯补丁以及测试为发布做出贡献的人。
John Regehr 分享了一些早期结果和讨论,关于在结合使用 Csmith 和 C-reduce 时使用 Souper(一个新的用于 LLVM IR 的超级优化器)来查找错过的优化,然后生成最小的测试用例。这已经导致 一个新的性能错误被提交,我相信还会有更多错误出现。
Crange 是一种工具,用于在 Clang 之上构建的 C/C++ 源代码索引和交叉引用 已发布。它旨在提供比例如 ctags 更完整的数据库,尽管在像 Linux 内核这样的大型代码库上运行的时间目前非常高。
上周,我要求对新的 JavascriptCore 第四级 LLVM JIT 进行基准测试。Mozilla 的 Arewefastyet 现在包含了这样的结果。FTLJIT 在 asm.js 示例上表现尤其出色。
在邮件列表上
将 AArch64 合并到 ARM64 中 取得了令人印象深刻的进展。最终的切换可能会在本周进行,AArch64 将被删除,ARM64 将重命名为 AArch64。Ana Pazos 分享了目前等待解决的错误列表。
Andy Lutomirski 要求将带溢出的 LLVM 整数算术内联函数公开为 C 内联函数。有人指出,它们 实际上已经被公开,但 Google 在索引这一点方面做得不好,因此作为回应,在 GCC 中提交了一个错误 以公开类似的内联函数。
Suminda Dharmasena 开启了关于减少或删除特定于平台的 LLVM 指令的讨论。该话题演变成关于 LLVM 对原子内存操作覆盖范围不足导致的问题 的有趣讨论。
Chandler Carruth 要求对通过 C LLVM API 安全地挂起 JIT 线程的问题进行输入。
LLVM 提交
已实施了一种用于尾调用标记的新算法。现在,clang 的构建最终在 IR 中有 470k 个调用标记为尾调用,而之前只有 375k 个。尽管如此,尾调用到循环的总转换次数保持不变。 r208017。
已引入
llvm::function_ref
,并在 LLVM 程序员手册中进行了描述。它是对可调用对象的类型擦除引用。 r208025,r208067。已实现对命名寄存器内联函数的初步支持(如之前 在邮件列表中讨论的)。目前,仅支持堆栈指针。其他不可分配寄存器可以通过不太困难的方式支持,可分配寄存器则困难得多。 r208104。
-disable-cfi
选项已被删除。LLVM 现在要求汇编器支持 cfi(控制流完整性)指令才能生成堆栈展开信息。 r207979。超级字级并行 (SLP) 传递现在默认情况下为链接时优化启用。 r208013。
llvm-cov 文档已扩展。 r208098。
用于将 MergeFunctions 性能提高到
O(n*log(n))
的系列的第二和第三个补丁已合并。 r208173,r208189。作为默认架构使用的标准“x86-64”CPU 现在在 Sandy Bridge 调度模型中使用,希望这能够为各种现代 x86-64 CPU 提供合理的默认值。 r208230。
已为 ARM 添加了
llvm.{u|s}add.with.otherflow.i32
内联函数的自定义降低。 r208435。
Clang 提交
MSVC ABI 兼容性再次得到改善。Clang 现在了解到“sret”(结构返回指针)是在 MSVC 的“this”之后传递的。 r208458。
来自 OpenMP 的
#pragma omp parallel
的初始代码生成已完成。 r208077。现在从内联汇编支持对结构名称和 C++11 别名的字段引用。 r208053。
已为 OpenMP
proc_bind
子句实现解析和语义分析。 r208060。clang-format 获得了对 JavaScript 正则表达式文字的初步支持(是的,clang-format 可以重新格式化你的 JavaScript!)。 r208281。