LLVM 每周 - #40, 2014 年 10 月 6 日
欢迎来到 LLVM 每周的第四十期,这是一份每周发布的时事通讯(每周一发布),涵盖 LLVM、Clang 和相关项目的最新进展。LLVM 每周由 Alex Bradbury 为您带来。订阅未来期数,请访问 http://llvmweekly.org,并将它传递给您认为可能感兴趣的任何其他人。请将任何提示或反馈发送到 [email protected],或在 Twitter 上通过 @llvmweekly 或 @asbradbury 联系我们。
下周末,我将在慕尼黑参加 OpenRISC 会议,在那里我将介绍 lowRISC 项目,该项目旨在生产一个开源 SoC。我将在 10 月 23 日在伦敦的开源硬件用户组 进行类似的演讲。
本期时事通讯的规范主页 可以在 llvmweekly.org 上找到。
来自网络的新闻和文章
Capstone 3.0 RC1 已发布 Capstone 是一个开源反汇编引擎,最初基于 LLVM 代码。此版本支持 Sparc、SystemZ 和 XCore 以及以前支持的架构。在其他更改中,Python 绑定现在与 Python 3 兼容。
去年的一篇有趣论文在邮件列表中出现。来自 EPFL,它提出 添加 -OVERIFY 以优化程序以进行快速验证。通过减少要探索的路径数量以及分支条件的复杂性,符号执行工具的性能得到了提高。他们设法将总编译和分析时间最多减少了 95 倍。
下一个剑桥(英国)社交活动 将于 10 月 8 日星期三下午 7:30 举行。
在邮件列表中
Reid Kleckner 发布了一个关于 在 LLVM IR 中表示结构化异常处理 (SEH) 的方法 的 RFC。这是 Windows 上使用的异常处理模型。
Chandler Carruth 在邮件列表中写信 宣布他的新的 x86 向量混洗降低路径现在默认启用。此代码路径已经过广泛的模糊测试。性能改进在拥有较旧 SSE 版本的 AMD 芯片上最大。如果有人能找到性能回归,鼓励您报告。
Richard Pennington 维护 Clang/LLVM ELLCC 交叉开发工具链,他正在 考虑放弃对 Microblaze 的支持。Microblaze 后端去年从 LLVM 中删除,但 Richard 一直在维护它,但似乎几乎没有实际兴趣。如果有人想接手,现在是时候加入了。
LLVM 提交
在过去几周,Chandler Carruth 一直在开发新的向量混洗降低实现。有太多提交无法总结,但现在时机已到,新代码路径现在默认启用。它声称在正确条件下(当循环向量化器在 SSE2/SSE3 的热路径中触发时)可以实现 5-40% 的改进。 r219046。
Cortex-A57 调度模型已得到改进。 r218627。
SimplifyCFG 现在有一个可配置的阈值,用于折叠具有公共目的地的分支。更改此阈值对于 GPU 程序可能很有用,因为分支在这些程序中开销很大。 r218711。
已添加对新发布的 Cortex-M7 的基本支持。 r218747。
如上周邮件列表中所讨论,sqrt 本征函数现在将在给出负输入时返回 undef。 r218803。
llvm-readobj 了解了
-coff-imports
,它将打印出 COFF 导入表。 r218891, r218915。
Clang 提交
已添加对
align_value
属性的支持,匹配 Intel 编译器中属性的行为。提交信息解释了为什么此属性除了aligned
之外还有用。 r218910。已添加一个相当有用的诊断。
-Winconsistent-missing-override
如果覆盖类在其方法上至少指定了一个覆盖,则将在覆盖方法上缺少覆盖时发出警告。 r218925。对 MS ABI 的支持仍在继续。
thread_local
现在支持全局变量。 r219074。Matcher 和 DynTypedMatcher 有一些很好的性能调整,导致 clang-tidy 基准测试提高了 14%,Dynamic/Registry.cpp 的编译速度提高了 17%。 r218616。
现在为未命名的临时对象发出 lifetime.start 和 lifetime.end 标记。 r218865。
__sync_fetch_and_nand
本征函数已重新添加。有关其删除历史记录,请参阅提交信息。 r218905。Clang 获得了 C11
stdatomic.h
的自己的实现。如果存在,系统头文件将优先使用。 r218957。Clang 现在了解
-mthread-model
用于指定要使用的线程模型,例如 posix、single(用于裸机和单线程目标)。 r219027。