LLVM 每周 - 第 102 期,2015 年 12 月 14 日
欢迎阅读 LLVM 每周的第 102 期,这是一份每周发布的新闻通讯(每周一发布),涵盖 LLVM、Clang 和相关项目的最新发展。LLVM 每周由 Alex Bradbury 为您带来。订阅未来的期刊,请访问 http://llvmweekly.org,并转发给您认为可能感兴趣的任何人。请将任何提示或反馈发送至 [email protected],或在 Twitter 上发送至 @llvmweekly 或 @asbradbury。
本期文章的官方地址 可在 llvmweekly.org 找到。
来自网络的新闻和文章
Rust 编程语言的 1.5 版 已发布。Rust 当然使用 LLVM 作为其后端。
George Balatsouras 撰写了一篇关于 使用 autotools 将项目编译到 LLVM 位码 的博客文章。
在邮件列表中
Derek Schuff 开始了一场关于 是否应该在寄存器分配后允许虚拟寄存器用于具有无限虚拟寄存器集的目标 的讨论。对于 WebAssembly 和 NVPTX 等目标,当然没有必要拥有固定大小的寄存器文件。许多人提出疑虑,认为在寄存器分配后使用虚拟寄存器似乎是一个可能导致棘手边缘情况的黑客,或者建议支持无限(或至少可增长)的物理寄存器集可能是一个有趣的替代方案。Matthias Braun 对 问题进行了很好的总结。
关于添加 HasInaccessibleState 属性的讨论仍在继续。Vaivaswatha Nagaraj 总结了 迄今为止讨论的关键点,而 Joseph Tremoulet 分享了一些基于他在微软 Phoenix 编译器上的经验的思考。
Alexander Riccio 希望收到有关其 整合更多静态分析测试的提议 的反馈。他打算导入 NIST 发布的代码。
Philip Reames 发布了一个关于 将原子加载和存储扩展到浮点和向量类型 的 RFC。反馈似乎是积极的。
Hans Wennborg 提出了一个 3.8 版本的发布时间表。根据此提议,3.8 将于 2016 年 1 月 13 日分支,最终发布目标为 2 月 18 日。
Craig Topper 提供了 关于 TableGen 如何对模式进行排序的有用描述。
David Li 发布了更新,详细说明了 配置文件引导优化的尺寸减小工作中剩余的步骤。
在编写自己的后端时,您应该如何处理检查汇编解析器的立即数范围?Alex Bradbury 解释了如何操作。
LLVM 提交
添加了一种新的基于最小生成树的方法,用于为配置文件引导优化对代码进行插桩。这保证插桩的 CFG 边缘数量最少。 r255132。
InstCombine 中的 MatchBSwap 现在也会检测位反转。 r255334。
通过将样本记录的 DenseMap 更改为 std::map,基于样本的配置文件引导优化内存使用量降低了 10 倍。 r255389。
添加了
Instruction::getFunction
方法。也许令人惊讶的是,它之前并不存在。 r254975。现在支持 ARMv8.2-A 中定义的 FP16 向量指令。 r255010。
EarlyCSE(公共子表达式消除)通行证学会了对无序原子进行值转发。 r255054。
LLVM IR 中的调试信息现在可以引用宏。 r255245。
LLVM 的开发者策略已更新,以详细说明当前接受的 C API 稳定性策略和其他指南。 r255300。
对函数级异常处理(Windows 异常需要)进行了大规模重构。 r255422。
Clang 提交
Clang 获得了一个使用新 ThinLTO 管道的选项。 r254927。
Hexagon 将默认使用集成汇编器。 r255127。
dllexport 和 dllimport 属性现在通过 libclang API 公开。 r255273。
其他项目提交
ThreadSanitizer 获得了对 PPC64 的初步支持。 r255057。