LLVM 每周 - 第 85 期,2015 年 8 月 17 日
欢迎来到 LLVM 每周的第八十五期,这是一份每周新闻通讯(每周一发布),涵盖 LLVM、Clang 和相关项目的最新进展。LLVM 每周由 Alex Bradbury 为您带来。订阅未来的期刊,请访问 http://llvmweekly.org,并将其传递给您认为可能感兴趣的任何人。请将任何提示或反馈发送至 [email protected],或在 Twitter 上发送至 @llvmweekly 或 @asbradbury。
如果您对开源硬件、lowRISC、RISC-V、OpenRISC 等感兴趣,请考虑 加入我们在 10 月份举行的 ORConf 2015 大会。我也在寻找演讲稿提交。
本期期刊的规范性主页 可以在 llvmweekly.org 上找到。
来自网络的新闻和文章
4 月份 EuroLLVM 的视频 现已上线。
2015 年 LLVM 开发者大会的 征文截止日期 正在迅速临近。请在 8 月 20 日太平洋标准时间下午 11:59 之前提交您的提案。
一篇详细介绍 Polly 中使用的 AST 生成技术的论文已在 TOPLAS 七月号上发表。您可以阅读预印本 这里。
可定制命名约定检查器 (CNCC) 是一款基于 Clang 的新工具,可用于根据所选正则表达式验证类、字段、变量和命名空间的命名约定。
EvilML 是一款美味恐怖的编译器,它将 ML 编译为 C++ 模板语言。
邮件列表
随着 3.7 版本的发布即将到来,重要的是 完善发布说明,以便它们反映过去六个月所做的工作。
Dylan MacKay 建议将现有的指令选择合法化器中的 'expand' 操作 变为 split 和 expand。此操作的动机部分来自作者在 AVR 后端上的工作。
王楠发布了一个有关 添加 llvm.typeid.for 内在函数 的 RFC。这将与 BFP 后端一起使用,以指定传递给 perf 的缓冲区的类型。
Teresa Johnson 发布了一个 关于 ThinLTO 工作的更新。
Peter Collingbourne 提出了一个 针对链接时优化的并行代码生成的简单并行化方法。当使用 4 个分区时,这在 HP Z620 上将速度从 15 分 20 秒提高到了 8 分 06 秒。此后的提速有限(部分原因是 Amdahl 定律)。
Sanjoy Day 分享了一个有关 将操作数捆绑添加到调用和调用 的 RFC。这些将用于帮助跟踪反优化所需的状态,例如,通过将 'deopt' 操作数捆绑附加到包含抽象虚拟机 cstate 的相关调用。
LLVM 提交
MergeFunctions 通过哈希函数并在执行完全比较之前比较该哈希值,从而大大加快了速度。这导致 libxul 中 MergeFunctions 的速度提高了 46%,Chromium 中的 MergeFunctions 速度提高了 117%。r245140。
现在,32 位 SPARC 支持 i64 加载和存储。由于 LDD/STD 指令需要一对连续的奇偶 32 位寄存器,因此这在支持方面有点棘手。 r244484。
为指定每个目标的交错访问的默认值添加了一个新的 TargetTransformInfo 钩子。 r244449。
引入了 llvm.loop.unroll.enable 元数据。如果在编译时知道循环的循环次数,则此元数据将导致循环完全展开;如果不知道循环次数,则将部分展开(与 llvm.loop.unroll.full 不同,如果不知道循环次数,则不会展开循环)。 r244466。
引入了对新 Windows 异常处理指令的初步支持。 r244558。
令牌类型已添加到 LLVM IR。 r245029。
BPF 后端获得了文档和指令集描述。 r245105。
Clang 提交
Clang-format 现在支持 WebKit 大括号样式。 r244446。
其他项目提交
OpenMP 运行时中的统计信息收集已整理并扩展。 r244677。