LLVM 每周 - 第 25 期,2014 年 6 月 23 日
欢迎阅读 LLVM 每周的第二十五期,这是一个每周发布(每周一发布)的时事通讯,涵盖 LLVM、Clang 和相关项目的最新发展。LLVM 每周由 Alex Bradbury 提供。在 http://llvmweekly.org 订阅未来期刊,并将其传递给您认为可能感兴趣的任何人。请将任何提示或反馈发送到 [email protected],或在 Twitter 上发送到 @llvmweekly 或 @asbradbury。
本期文章的官方地址 可以在 llvmweekly.org 上找到。
来自网络的新闻和文章
Facebook 发布了他们在内部使用的一些 clang 插件。这包括主要针对 iOS 开发的 clang 分析器插件,以及将 Clang AST 导出到 JSON 的插件。代码 可在 Github 上获得,他们已经开始在 邮件列表上进行讨论,讨论将部分代码上移。
本周发布了 LLVM 和 Clang 3.4.2 的 发布版本。这是一个错误修复版本,它保持与 3.4.1 的 ABI 和 API 兼容。
Clang 的 C++ 状态页面 现在列出了 C++1z 功能状态。
在邮件列表上
Rafael Espíndola 开启了一个线程来讨论 LLVM 向后兼容性承诺的澄清。他总结了当前的政策(旧的 .bc 在读取时会升级,.ll 兼容性没有强保证)。随后的讨论大部分是关于元数据格式更改等问题。
Duncan P.N. Exon Smith 发布了 对新通道管理器的当前形式的审查。他从对 Chandler Carruth 的新 PassManager 基础设施提供的功能进行了高层次的概述,并列出了一些疑问和担忧。目前还没有回复,但如果你对 LLVM 内部开发感兴趣,值得关注这个线程。
本周带来了两个独立的关于 LLVM 代码覆盖支持的提案(在撰写本文时都没有回复)。Christian Holler 建议包含 LLCov 代码。这是一个模块通道,它使用对跟踪覆盖范围的函数的调用来对基本块进行插桩。当前的 LLCov 代码 可在 Github 上获得。Alex L 也发布了一个关于 改进 Clang 和 LLVM 代码覆盖支持的详细提案。在开始提交补丁之前,他希望收到有关该方法的反馈。
LLVM 提交
LLVM 全局锁已经消亡,LLVM 程序员手册已更新以反映这一点。
llvm_start_multithreaded
和llvm_stop_multithreaded
已被移除。
r211277,r211287。用于改进 MergeFunctions 性能的补丁集(从 O(NxN) 到 O(N x log(N)))终于完全合并。 r211437,r211445 等等。
范围元数据现在可以附加到调用和调用(以前只能附加到加载)。 r211281。
Support 库中的 ConvertUTF 被修改为查找格式错误的 UTF-8 序列的最大子部分。 r211015。
LoopUnrollPass 现在将尊重元数据中的循环展开提示。 r211076。
R600 后端已更新为使用 LDS(本地数据共享)和向量来处理私有内存。 r211110。
X86FastISel 继续改进,包括针对谓词的优化、cmp 折叠以及对 64 位绝对重定位的支持。 r211126,r211130。
SLPVectorizer(超字级并行)现在将识别并向量化非 SIMD 指令模式,例如 fadd、fsub 或 add、sub 的序列。如果它们有利可图,它们将被向量化为向量洗牌。 r211339。
LLVM 现在可以在 Win64 上生成本机展开信息。 r211399。
Clang 提交
Clang 的 OpenMP 实现现在包含对 'reduction' 子句、
#pragma omp for
、'schedule' 子句、'ordered' 子句和 'nowait' 子句的初始支持。 r211007,r211140,r211342,r211347,r211352。MS ABI 支持继续合并对 x86-64 RTTI 的支持。 r211041。
-std=c+++1z
标志已添加以启用对 C++17 功能的支持。 r211030。clang 用户手册已扩展,其中包含使用插桩进行配置文件引导优化的文档。 r211085。
ARM NEON 内在函数的发射已完全重写,使其更易于阅读和维护,并提供更好的保护,防止编码错误。 r211101。