LLVM 项目博客

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

LLVM 每周 - 第 122 期,2016 年 5 月 2 日

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

本期期刊的规范地址 可以在 llvmweekly.org 上找到

来自网络的新闻和文章

GCC 6.1 已经发布。也许最明显的对用户可见的更改是,C++ 前端现在默认使用 C++14。

Rust 编译器已经 引入了一个新的中间表示,MIR,用于在降低到 LLVM IR 之前进行优化。

Tanya Lattner 已经 写下了 LLVM 基金会 2016 年的计划。LLVM 基金会已经建立了 3 个主要项目:教育推广、赠款和奖学金,以及女性参与编译器和工具。

邮件列表上的内容

LLVM 提交

  • LLVM 现在支持基于值配置文件的间接调用提升。这将提升间接调用到受先决条件保护的直接调用。 r267815

  • LLVM 文档已经扩展了 CMake 入门部分,涵盖了 CMake 脚本语言的基础知识。 r268096

  • PDB 转储器已经被重构为一个库。 r267431

  • MinLatency 属性已经被从 SchedMachineModel 中移除。 r267502

  • CodeGenPrepare 现在将使用分支权重元数据来决定是否将 select 转换为分支。 r267572

  • llvm.loop.distribute.enable 元数据的支持已经添加。这表示循环应该被拆分为多个循环。 r267672

  • SystemZ 后端现在支持 Swift 调用约定。 r267823

  • libFuzzer 的文档已经被扩展和改进。 r267892

Clang 提交

  • clang-tidy 获得了一个新的检查器,用于检查二元运算符两侧的冗余表达式。 r267574

  • 一个新的 clang-tidy 检查将警告使用像 atoiatol 这样的函数,这些函数不报告转换错误。 r268100

  • 全局变量或静态变量上的 nodebug 属性现在将抑制该变量的所有调试信息。 r267746

  • 许多 OpenMP 特性获得了代码生成支持,例如 map 子句和 target data 指令。 r267808r267811

其他项目的提交

  • LLD 现在支持一个 -O0 选项,以尽可能快地生成输出。目前,这会禁用节合并,代价可能是输出文件变得更大。 r268056

  • LLD 的 ELF 链接器中的符号表已经被重新设计,目的是提高内存局部性。新的设计在提交消息中测试的二进制文件中产生了可衡量的加速。 r268178

  • LLD 的链接脚本支持扩展到涵盖比较运算符。 r267832

  • LLD 在大型可执行文件上的性能已经通过跳过对运行时永远不会映射到内存的节(例如调试节)的 scanRelocs 来得到改善。 r267917