LLVM 每周 - 第 15 期,2014 年 4 月 14 日
欢迎阅读 LLVM 每周的第 15 期,这是一份每周(每周一发布)的时事通讯,涵盖 LLVM、Clang 和相关项目的最新发展情况。LLVM 每周由 Alex Bradbury 为您带来。订阅未来的期刊,请访问 http://llvmweekly.org,并将其转发给您认为可能感兴趣的任何人。请将任何建议或反馈发送至 [email protected],或在 Twitter 上关注 @llvmweekly 或 @asbradbury。
本期的标准地址 可以在 llvmweekly.org 上找到。
来自网络的新闻和文章
视频尚未准备好,但 上周 EuroLLVM 会议的大多数幻灯片现已发布。
ARM 已经 宣布 发布 ARM 编译器的第 6 版,该版本现已基于 LLVM 和 Clang。
Philip Reames 已经 发布了他关于延迟安全点放置工作的更新,这对在 LLVM 上实现高效的精确垃圾收集很有用。坏消息是,他们的最初计划并没有经受住实战考验,不过他们正在努力修复它,预计很快就会发布新的更新。
正如 Phoronix 所报道,Linus 合并了一些旨在用 clang 编译 Linux 内核的补丁,已合并。
GCC 4.9 的第一个候选版本已经 发布。4.9 分支中的新功能 在此处有详细介绍。
Polly 通过电话会议进行了会议,会议记录已发布。最普遍的兴趣点可能是围绕将 Polly 合并到 LLVM 主线中的可能性展开的讨论。
在邮件列表中
LLVM 3.4.1 现在已经 进入测试阶段,非常感谢您帮助测试该版本。
Tim Northover 已经 [总结了关于从 EuroLLVM 合并 AArch64 和 ARM64 的讨论]。观点仍然倾向于从 AArch64 合并到 ARM64。有趣的是,据了解 Google 正在开发一个框架来构建和运行基准测试(我认为这与 LNT 不同)。同样重要的是 [ARM64 LLVM 与 AArch64 LLVM 与 GCC 4.9 的基准测试] 在 Cortex-A53 上。现在有了 一个关于合并的较为详细的计划 以及剩余的任务。
Alon Zakai 分享了他 关于 Emscripten 的 C 后端的某些工作细节。他现在将其描述为“快速黑客”,但目前在 zlib 上只有 19% 的速度下降,性能似乎相当不错。该代码的当前版本位于 emscripten 的
c_backend
分支 中 (位于tools/c_backend.py
)。David Blaikie 开始了一场关于 C++11 lambda 中捕获变量的调试信息 的讨论。这里内容太多了,我无法轻松地总结,但如果你感兴趣,请深入研究。
Jim Grosbach 建议 llc 等低级工具不应该进行 CPU 自动检测。人们普遍认为这是一个好主意,它将有助于避免测试在一台机器上失败但在另一台机器上不失败的问题,因为这种自动检测导致了这个问题。更改现已合并。
Jonas Wagner 分享了他使用黄金链接器插件链接 LLVM 位代码的工作流程。
Will Dietz 回答 了关于意外代码生成的查询,并对可能发生的情况进行了精彩的分析。
Robert Matusewicz 正在 寻求对保持 poolalloc 项目持续运行的兴趣。
LLVM 提交
NVPTX 后端获得了纹理和曲面的初步内在函数和代码生成支持。 r205907。
添加了对优化报告诊断的支持。这开始实现 之前已记录和讨论过 的想法。将来,将能够获得编译器转换采取的主要优化决策的报告。 r205774,r205775。
AArch64 和 ARM4 的合并仍在继续。命名的立即操作数映射逻辑和枚举已从 AArch64 复制到 ARM64。 r205866。ARM64 后端也经历了一系列较小的提交。
现在为 ARM64 后端启用了常量提升。 r205791。
之前,CodeGenPrepare 中的优化逻辑试图将地址计算合并到内存操作本身 (当平台的寻址模式支持时),通过添加整数操作并使用 ptrtoint 和 inttoptr 来实现。这在尝试在 CodeGen 中使用别名分析时会导致问题。现在可以使用 GetElementPtr 来实现对执行此操作的可选支持。 r206092。
分段堆栈切换已移至函数属性,旧的
-segmented-stacks
命令行标志已删除。 r205997。
Clang 提交
libclang 获得了一个
clang_CXXMethod_isConst
方法。 r205714。作为持续支持 MSVC++ ABI 项目的一部分,添加了对
#pragma section
和相关程序的支持。 r205810。
其他项目提交
- openmp 项目获得了 offload 目录,其中包含支持 OpenMP 4.0 目标指令所需的代码。 r205909。