LLVM 项目博客

LLVM 项目新闻和来自实战的细节

LLVM 周报 - 第 14 期,2014 年 4 月 7 日

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

本周似乎有大量与 LLVM 相关的新闻出现,希望我已经成功地收集了所有信息。如果您下周在伦敦,您可能对参加 我周三的 LLVM 入门演讲 感兴趣。摘要 在此

当然,EuroLLVM 将在本周的周一和周二举行。遗憾的是我不能参加。如果有人在博客上发布活动内容,请务必将链接发送给我。

本期文章的正式地址 可在 llvmweekly.org 上找到

来自网络的新闻和文章

本周最引人注目的 LLVM 相关新闻无疑是 Pyston 的宣布,这是一个针对 LLVM 的 Python JIT。更多技术细节 可在 Github 仓库上找到。对许多人来说,这立刻让人想起由 Google 工程师启动的 Unladen Swallow 项目,该项目旨在用 LLVM 对 Python 进行 JIT 编译。该项目最终失败了,但对 Pyston 的作者来说,假设它会遭遇相同的命运是不公平的。目前尚不清楚 Dropbox 在 Pyston 上投入了多少开发时间。他们显然还有很多工作要做,尽管 苹果公司也正在努力从 JavaScript 针对 LLVM,这意味着他们并非唯一在这个领域工作的开发者。Kevin Modzelewski 在 LLVM 邮件列表上 分享了一些更多信息,详细介绍了他们到目前为止实施的一些 LLVM 工作(包括一些针对 GCed 内存的初始逃逸分析)。

一个独立的非营利性 LLVM 基金会 即将成立。作为一家供应商中立的组织,它将代表社区利益,并计划在今年年底前成立。首任董事会成员将是 Vikram Adve、Chandler Carruth、Doug Gregor、David Kipping、Anton Korobeynikov、Chris Lattner、Tanya Lattner 和 Alex Rosenberg。

Rust 0.10 已发布。另请参阅关于 Hacker NewsReddit 的讨论。Rust 是一种来自 Mozilla 的系统编程语言,它使用 LLVM 作为其代码生成后端。

基于 LLVM 的反编译框架 Dagger发布了其源代码,并发表了五篇文章,介绍其实现方法并记录了后续步骤或“TODO”。

一个 针对 Accelerate 数组语言的 LLVM 后端 已发布。它将 Accelerate 代码编译成 LLVM IR,并且可以针对多核 CPU 和 NVIDIA GPU。

最近关于基于 LLVM 的 MalDiv 多样化编译器的演讲 PDF 幻灯片 已发布。此类工具可以有效地消除基于签名的恶意软件匹配。

在邮件列表中

LLVM 提交

  • MipsAsmParser 和 MipsOperand 进行了重写。改进内容在提交信息中有所记录。 r205292

  • ARM 后端获得了对分段堆栈的支持。 r205430

  • 现在可以使用 MachineCode 层在 ARM 上运行 Windows。 r205459

  • TargetLowering 获得了一个钩子,用于控制何时可能使用 shuffle 扩展 BUILD_VECTORr205230。目标可以选择使用 ExpandBVWithShuffles,该功能在之后的提交中添加。 r205243

  • X86TargetTransformInfo 获得了 getUnrollingPreferences,它由通用循环展开器使用。这有助于优化在 X86 上使用微操作缓存。这在 TSVC 基准测试套件中产生了 7.5%-15% 的加速。 r205348

  • ARM 获得了一个很好的小型优化传递,它可以删除重复的 DMB 指令。 r205409

  • 原子 ldrex/strex 循环现在在 IR 中展开,而不是在 MachineInstr 发射时展开。这将清理代码,但也有助于简化未来的优化。 r205525

Clang 提交

  • clang 静态分析器在 PthreadLockChecker 中获得了双重解锁检测,以及在销毁锁后使用锁的检查。 r205274r205275

  • OpenMP 的“copyin”子句已实现。 r205164

  • 添加了“optnone”属性,该属性会抑制函数上的大多数优化。 r205255

  • 选择方法作为建议校正的启发式方法得到改进,以忽略显然无法正常工作的那些方法。 r205653

  • 将“BitwiseConstraintManager”理念添加到开放项目页面。 r205666

其他项目提交

  • AddressSanitizer 现在可以在 Linux 上用作共享库。 r205308

  • compiler-rt 获得了对 IEEE754 四精度比较函数的支持。 r205312

  • lld 现在支持 .gnu.linkonce 部分。 r205280