LLVM 项目博客

LLVM 项目新闻和来自战壕的细节

LLVM 每周 - 第 98 期,2015 年 11 月 16 日

欢迎来到 LLVM 每周的第 98 期,这是一份每周发布(每周一发布)的时事通讯,涵盖 LLVM、Clang 和相关项目的最新发展。LLVM 每周由 Alex Bradbury 编写。订阅未来的期刊请访问 http://llvmweekly.org,并将其转发给您认为可能感兴趣的任何人。请将任何提示或反馈发送至 [email protected],或在 Twitter 上联系 @llvmweekly@asbradbury

本期时事通讯来自维也纳,我正要从短暂的休息中回家(所以如果它比平时晚一点,可能细节少一点,请见谅)。我承认,没有人真的写信请求 LLVM 每周分享旅行小贴士,但我要说维也纳是一个美丽的城市,在过去的几天里为我提供了很多活动。如果你要来这里,我强烈推荐 Salm Bräu,那里有美味的啤酒和食物。

本期的规范主页 可以在 llvmweekly.org 上找到

来自网络的新闻和文章

所有 LLVM 开发者会议视频 现在都已发布,并将一直保留。这包括 Chris Lattner 和 Joseph Groff 关于 Swift IR 的演讲。您还可以在 这里 找到大多数幻灯片。Quarkslab 的团队也 发布了一份旅行报告

本周的大新闻是,来自 NVIDIA 的 PGI Fortran 编译器的代码 将开源,并产生一个面向 LLVM 的生产级 Fortran 前端。这个项目是美国国家核安全局 (NNSA)、NVIDIA 和劳伦斯利弗莫尔、桑迪亚和洛斯阿拉莫斯国家实验室之间的合作。Hal Finkel 在 LLVM 邮件列表中分享了一些更多信息。由于源代码发布要等到大约一年后,那么现有的 Flang 工作会怎样呢?希望是 Flang 的部分内容将与 PGI 版本合并。PGI 团队的 Douglas Miles 也 分享了一个小型 FAQ。Fortran 公告

Bjarne Stroustrup 分享了关于最近一次 C++ 标准会议的 详细旅行报告

Include Security 博客的这篇文章 深入探讨了 LLVM 中对 SafeStack 缓冲区溢出保护的支持的详细信息

在官方的 LLVM 博客上,一篇新的帖子提供了一个非常有用的指南,介绍如何 使用 bugpoint 和自定义脚本缩减测试用例。正如帖子中所述,bugpoint 是一款非常强大的工具,但可能难以使用。

邮件列表上的内容

LLVM 提交

  • LLVM 的基于 autoconf 的构建系统现在正式被弃用,CMake 构建系统更受青睐。 r252520

  • 您想使用 Clang 和 LLVM 编译 CUDA 代码吗?现在有一些 方便的文档描述了如何做到这一点。另请参见 Jingyue 在最近的 LLVM 开发者会议上的演讲r252660

  • 已添加了用于 PowerPC 的简单机器指令 SSA 传递。实现简短且直接,因此如果您想对目标进行一些 MI 级别的窥孔优化,值得阅读。 r252651

  • 已添加了对 AArch64 的地址标记的基本支持。在 AArch64 中,地址的最高 8 位可以用来存储额外的元数据,这些位在经过地址转换之前会被屏蔽。 r252573

  • Hexagon 后端现在支持程序集解析。 r252443

  • CMake 构建系统获得了一个新的 LLVMExternalProjectUtils 模块。例如,它与 LLVM 测试套件一起使用,该套件可以设置为在树内的 clang 或 lld 更改时重新构建。它也可以与 compiler-rt 或 libcxx 一起使用。 r252747

  • 现在定义了“空标记”(写为 token empty),用于在 LLVM IR 中使用标记时。 r252811

  • LibFuzzer 获得了一种新的实验性搜索启发式方法,drill。正如 FuzzerLoop.cpp 中的注释所解释的那样,这将 1) 读取+洗牌+执行+最小化语料库,2) 选择一个随机单元,3) 重置覆盖率,4) 开始模糊化,就好像所选单元是语料库的唯一元素一样,5) 完成后再次重置覆盖率,6) 将新创建的语料库合并到原始语料库中。 r252838

  • 已引入了一个 BITREVERSE SelectionDAG 节点和一组 llvm.bitreverse.* 内联函数。目的是后端不再需要重新实现类似的代码来将指令模式与他们自己的 ISA 的位反转指令匹配。另请参见对 ARM 后端的补丁,该补丁用 ISD::BITREVERSE 替换了 ARMISD::RBIT。 r252878r253047

Clang 提交

  • 添加了对 __attribute__(internal_linkage) 的支持。这很像 C 的 static 关键字,但适用于 C++ 类方法。 r252648

  • Clang 现在支持 GCC 的 __auto_type 扩展,并进行了一些小的改进。 r252690

其他项目提交

  • libcxx 获得了对使用 mustl libc 进行构建的初始支持。这主要是一个新的 CMake 选项,这是必需的,因为 Musl 没有提供一个宏来指示它的存在。 r252457)。