LLVM 每周 - 第 21 期,2014 年 5 月 26 日
欢迎来到 LLVM 每周的第 21 期,这是一份每周发布(每周一发布)的时事通讯,涵盖 LLVM、Clang 和相关项目的最新进展。LLVM 每周由 Alex Bradbury 为您提供。订阅未来的问题,请访问 http://llvmweekly.org 并将其转发给您认为可能感兴趣的任何人。请将任何建议或反馈发送至 [email protected] 或在 Twitter 上发送至 @llvmweekly 或 @asbradbury。
我已回到英国,大部分的时差也已恢复。然而,令我不安的是,过去一周 GMANE 上的所有邮件列表似乎都没有更新,而且我在网上也找不到任何解释。GMANE 是一个重要且非常有用的自由软件开发列表的聚合器和存档器,我真希望这只是一些暂时的故障。在本期中,我改为直接链接到 UIUC 的 Mailman 存档。
本期的规范地址 可以在 llvmweekly.org 上找到。
来自网络的新闻和文章
Jonathan Mah 编写了一个 用于检查 Objective C 代码中的键路径字符串的 Clang 插件。该实现 已在 Github 上提供。
LWN 发布了一篇关于 ThreadSanitizer v2 的文章。
本周,AArch64 和 Apple 提供的 ARM64 后端的合并工作已完成。旧的 AArch64 已被删除,将 AArch64 中的代码合并到 ARM64 后,结果被重命名为 AArch64。
一篇名为 'LLVM IR 程序的静态能耗分析' 的论文已发布在 arXiv.org 上。
邮件列表
Philip Reames 提出疑问 为什么原子加载和存储不能处理浮点数。David Chisnall 有一个很好的后续解释,解释了 为什么只是将浮点数进行位转换以使用原子加载/存储远非理想。
Louis Gerbarg 分享了一个关于 在 getelementpointr 中对结构体和数组进行索引的 RFC。这是受他最近优化跨不同基本块的 getelementptr 的工作的启发。
Jingyue Wu 寻求关于在 CodeGenPrepare 中下沉 PHI 节点的传入值的建议。Louis Gerbarg 指出 这些优化与他最近的 GetElementPtr 工作类似。
LLVM 提交
添加了一个新的属性“nonnull”。当应用于参数或返回指针时,这表示它不为空,这可能允许额外的优化(至少避免该值与空值之间的比较)。r209185,r209193。
添加了 llvm.arm.undefined 内在函数。这用于在 ARM 上生成 0xde 操作码。它接受一个整数参数,该参数可能被操作系统用于在陷阱上实现自定义行为。 r209390。
MIPS 反汇编器已进行了一些工作。已添加对 MIPS64r6 的一些支持,并修复了各种问题。 r209415。
LLVM 学习了
-pass-remarks-missed
和-pass-remarks-analysis
命令行选项。-pass-remarks-missed
在一个过程试图应用一个变换但失败时显示诊断信息。-pass-remarks-analysis
显示有关分析结果的信息。 r209442。已更新
llvm.mem.parallel_loop_access
元数据的文档。 r209507。
Clang 提交
clang-format 已获得了更多 JS 支持。它现在可以重新格式化 ES6 箭头函数和 ES6 解构赋值。 r209112,r209113。
clang 添加了对全局命名寄存器的支持,使用的是最近添加的 LLVM 内在函数。 r209149。
Clang 学习了
no_split_stack
属性,用于在每个函数的基础上关闭拆分堆栈。 r209167。Clang 学习了
flatten
属性。这会导致尽可能将函数中的调用内联。 r209217。pragma omp simd 的代码生成初始版本已提交。这也添加了 CGLoopInfo,它是一个用于使用
llvm.mem.parallel_loop_access
元数据标记内存指令的帮助程序。 r209411。pragma
clang optimize {on,off}
已实现。这允许您有选择地禁用特定函数上的优化。 r209510。与 Microsoft ABI 兼容的 RTTI(运行时类型信息)的实现已落地。 r209523。
其他项目提交
- MemorySanitizer 使用的“链式来源”已重新设计。 r209284。