LLVM 项目博客

LLVM 项目新闻和来自前线的详细信息

LLVM 每周 - 第 19 期,2014 年 5 月 12 日

欢迎来到 LLVM 每周的第十九期,这是一份每周新闻通讯(每周一发布),涵盖 LLVM、Clang 和相关项目的最新发展。LLVM 每周由 Alex Bradbury 为您提供。订阅未来的问题请访问 http://llvmweekly.org,并将其传递给您认为可能感兴趣的任何人。请将任何提示或反馈发送至 [email protected],或在 Twitter 上发送给 @llvmweekly@asbradbury

我明天将飞往旧金山,并将在周末与其他树莓派基金会成员一起参加湾区创客嘉年华。如果你在附近,一定要打招呼。

本期在 llvmweekly.org 上的正版主页

来自网络的新闻和文章

LLVM 3.4.1 已发布。这是一个错误修复版本,因此提供与 LLVM 3.4 的 API 和 ABI 兼容性。感谢所有通过建议或回溯补丁以及测试为发布做出贡献的人。

John Regehr 分享了一些早期结果和讨论,关于在结合使用 Csmith 和 C-reduce 时使用 Souper(一个新的用于 LLVM IR 的超级优化器)来查找错过的优化,然后生成最小的测试用例。这已经导致 一个新的性能错误被提交,我相信还会有更多错误出现。

Crange 是一种工具,用于在 Clang 之上构建的 C/C++ 源代码索引和交叉引用 已发布。它旨在提供比例如 ctags 更完整的数据库,尽管在像 Linux 内核这样的大型代码库上运行的时间目前非常高。

llgo,LLVM 的 Go 编译器 现在可以自我托管

上周,我要求对新的 JavascriptCore 第四级 LLVM JIT 进行基准测试。Mozilla 的 Arewefastyet 现在包含了这样的结果。FTLJIT 在 asm.js 示例上表现尤其出色

在邮件列表上

LLVM 提交

  • 已实施了一种用于尾调用标记的新算法。现在,clang 的构建最终在 IR 中有 470k 个调用标记为尾调用,而之前只有 375k 个。尽管如此,尾调用到循环的总转换次数保持不变。 r208017

  • 已引入 llvm::function_ref,并在 LLVM 程序员手册中进行了描述。它是对可调用对象的类型擦除引用。 r208025r208067

  • 已实现对命名寄存器内联函数的初步支持(如之前 在邮件列表中讨论的)。目前,仅支持堆栈指针。其他不可分配寄存器可以通过不太困难的方式支持,可分配寄存器则困难得多。 r208104

  • -disable-cfi 选项已被删除。LLVM 现在要求汇编器支持 cfi(控制流完整性)指令才能生成堆栈展开信息。 r207979

  • 超级字级并行 (SLP) 传递现在默认情况下为链接时优化启用。 r208013

  • llvm-cov 文档已扩展。 r208098

  • 用于将 MergeFunctions 性能提高到 O(n*log(n)) 的系列的第二和第三个补丁已合并。 r208173r208189

  • 作为默认架构使用的标准“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

其他项目提交

  • libcxxabi 获得了对 ARM 零成本异常处理的支持。 r208466

  • 在 libcxx 中,std::vector 获得了 Address Sanitizer 支持。 r208319

  • 来自 OpenUH 的测试套件已添加到 openmp 存储库中。 208472