LLVM 项目博客

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

LLVM 每周 - 第 119 期,2016 年 4 月 11 日

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

本期内容的规范位置可在 llvmweekly.org 上找到

来自网络的新闻和文章

上周,最近的 EuroLLVM 2016 开发者会议 的幻灯片发布到了网上。本周,这之后发布了 会议演讲视频

John Regehr 撰写了一篇关于 LLVM 中高效的整数溢出检查 的文章,探讨了 LLVM 可以和不能移除不必要的溢出检查的情况,以及如何改进这一点。

Pocl 的 0.13 版本发布了,Pocl 是一个可移植的 OpenCL 实现。 发布了。此版本与 LLVM/Clang 3.8 和 3.7 兼容,并添加了初始 OpenCL 2.0 支持和改进的 HSA 支持。

QuarksLab 的 Serge Guelton 编写了一份非常有用的指南,介绍了 在 Clang 中实现自定义指令处理程序

微软的 Visual C++ 团队正在 征求关于 Clang/C2(带微软 CodeGen 的 Clang)的反馈

在邮件列表上

  • James Molloy 发布了一个关于添加对 对长双精度数调用 math.h 函数的常量折叠支持 的 RFC。目前,这些函数不会被常量折叠,因为内部的 APFloat 类没有实现它们,而且长双精度数操作不可移植。解决方案包括向 APFloat 添加支持、链接到 libMPFR 以提供编译时评估,或者识别主机和目标的长双精度数格式是否相同,以便可以调用主机数学库。从目前收到的回复来看,似乎对添加 libMPFR 依赖项有一些抵制。

  • Sanjoy Das 发布了一个关于 添加可修补序言属性 的 RFC。这将用于指示函数的序言是为支持轻松的热修补而编译的。

  • Ulrich Weigand 分享了一个关于 在 SystemZ 上支持 Linux 上的 LLDB 的补丁。该补丁集包含许多大端修复,对于那些希望移植 LLDB 的人来说可能会有所帮助。

LLVM 提交

  • 添加了 Swift 调用约定以及对 'swifterror' 参数的支持。 r265433r265480

  • GlobalISel 的工作继续进行,许多提交与将虚拟寄存器分配到寄存器库有关。 r265445r265440

  • LLVM 将不再对可以“精炼”的函数执行过程间优化。 r265762

  • 现在记录了 lit 支持的替换。 r265314

  • 展开的循环现在在尾声中执行余数,而不是在序言中。这应该会产生略微改进的代码。 r265388

Clang 提交

  • Clang 获得了 Swift 调用约定所需的支持。 r265324

  • 新的标志 `-fno-jump-tables` 和 `-fjump-tables` 可用于在降低 switch 语句时禁用/启用对跳转表的支持。 r265425

  • TargetOptions 现在通过所有 TargetInfo 构造函数传递。这将允许根据选择的 ABI 修改目标信息。 r265640

  • emmintrin.h 中的许多内在函数现在都有 Doxygen 文档。 r265844

其他项目提交

  • clang-tidy 获得了一个新的检查,用于标记访问外部对象的全局变量的初始化程序,从而导致潜在的初始化顺序问题。 r265774

  • LLD 的 ELF 链接器获得了新的选项 `--start-lib`、`--end-lib`、`--no-gnu-unique`、`--strip-debug`。 r265710r265717r265722