LLVM 每周 - 第 28 期,2014 年 7 月 14 日
欢迎来到 LLVM 每周的第 28 期,这是一份每周发布的时事通讯(每周一发布),涵盖 LLVM、Clang 和相关项目的进展。LLVM 每周由 Alex Bradbury 为您呈现。订阅未来的期刊,请访问 http://llvmweekly.org 并将其转发给您认为可能感兴趣的任何人。请将任何提示或反馈发送至 [email protected],或者在 Twitter 上通过 @llvmweekly 或者 @asbradbury 联系我们。
我将在下个周末参加在剑桥大学计算机实验室举行的 GNU 工具大熔炉 2014(恰好也是我的工作地点)。如果您在那里,请跟我打个招呼。
此期刊的规范位置 可以在 llvmweekly.org 上找到.
来自网络的新闻和文章
关于 Clang/LLVM 在 Windows 上的更新已 发布在 LLVM 博客上。已经取得了令人印象深刻的进展,正如我上周提到的,MSVC 兼容性页面 已更新。
现在(令人惊奇的是)有一个 用于 LLVM 的 Pascal-86 前端。编译器前端完全用 Python 编写。作者的 硕士论文(通过 Phoronix)提供了更多信息。
在邮件列表上
Edward Diener 发起了一个关于 clang-cl 是否应该重现有错误的 VC++ 预处理器行为的讨论。一个担忧是,这可能会阻碍想要在 Windows 平台上使用预处理器元编程的人。正如其中一个回复中指出的那样,错误匹配模式可以通过新的标志始终禁用。
Corey Richardson 询问了如何将 clang-c 用于绑定生成器。还没有回复,但这对我来说确实很有趣。
Kuba Břečka 建议扩展 LLDB 以提供与启用 Address Sanitizer 的二进制文件更紧密的集成.
Peter Collingbourne 建议提供一个本机磁盘上的对象模块格式,该格式将 LLVM 位代码存储在 ELF/COFF/MACH-O 部分中。Dan Liew 指出链接器会将无法识别的部分包含在输出中,这意味着如果您链接这些 .o 文件,位代码将被包含在生成的二进制文件中。Peter 说当前的计划不会直接使用这些目标文件进行链接。
LLVM 提交
FastISel 获得了一些基础设施来支持与目标无关的调用降低挂钩以及与目标无关的补丁点内在函数降低。 r212848,r212849.
DominanceFrontier 已被模板化,因此理论上它现在可以用于 MachineBasicBlocks(以前它只能用于 BasicBlocks)。 r212885.
通过利用对某些内在函数(如 memcpy 和 memset)的了解,CallSite 与 CallSite BasicAA 查询的结果质量得到了提高。 r212572.
对 x86 向量降低的彻底改造工作正在进行。Chandler 现在报告说,在启用新的代码路径后,LLVM 在为 SSE2/SSE3 编译时,在 x264 代码的核心 C 循环方面,现在已经达到了与 GCC 相当的性能水平。 r212610.
用于 AddressSanitizer 的 ASM 检测现在完全在 MachineCode 中生成,不再依赖于运行时辅助函数。 r212455.
在 MIPS 后端添加了新 mips.abiflags 部分的生成。 r212519.
isDereferenceablePointer 现在将查看一些位转换。 r212686.
Clang 提交
添加了一个新的检查器,用于标记在将变量用作分母后测试其是否为 0 的代码(暗示可能发生除零错误)。 r212731.
Clang 获得了对 omp parallel for、omp parallel sections 指令以及 omp task 的初步支持。 r212453,r212516,r212804.
在 ARM 目标上,当 ldrex/strex 可用时,将使用 LLVM 的 atomicrmw 指令。 r212598.
添加了对 mips-img-linux-gnu 工具链的支持。 r212719.