LLVM 项目博客

LLVM 项目新闻和来自前线的细节

LLVM 每周 - 第 103 期,2015 年 12 月 21 日

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

本期的官方主页 位于 llvmweekly.org

常读者们都知道 lowRISC,这是一个我们创建的非营利项目,旨在批量生产一个完整的开源片上系统。我们刚刚发布了 基础 SoC 的非捆绑版本,这是一个新的里程碑。如果你有兴趣参与其中,博客文章中提供了一些潜在的起点。

来自网络的新闻和文章

第六届 EuroLLVM 大会将于 3 月 17 日至 18 日在西班牙巴塞罗那举行。论文征集 现已开放,并将持续开放至 2016 年 1 月 25 日。EuroLLVM CFP

Chandler Carruth 在 2015 年 C++ 大会上的主题演讲“理解编译器优化”现已 上线

Richard Pennington 在博客中谈到了 使用预编译的 ELLCC 二进制文件引导 LLVM 和 Clang

彭博社将在 2 月 6 日和 7 日在纽约和伦敦举办 Clang 和 LLVM 周末黑客马拉松。该活动将对社区中的所有人开放,彭博社将提供场地、电源、食物、饮料和互联网接入。他们正在寻找经验丰富的 Clang 和 LLVM 开发人员作为导师。

邮件列表中的讨论

LLVM 提交

  • LLVM IR 现在支持浮点原子加载和存储。 r255737

  • 引入了新的属性:InaccessibleMemOnly(函数只能访问编译模块无法访问的内存)和 InaccessibleMemOrArgMemOnly(函数只能访问编译模块无法访问的内存,或者由其指针参数指向的内存)。 r255778

  • PowerPC 后端获得了对 ppc32 上软浮点运算的支持。 r255516

  • terminatepad 指令已从 LLVM IR 中删除。 r255522

  • IR 调用指令现在可以接受一个快速数学标志标记,该标记指示快速数学标志可能允许原本不安全的优化。 r255555

  • LLVM 在其内部库中获得了一个 C++11 线程池。它旨在用于 ThinLTO。 r255593

  • 默认的传递集已调整。mem2reg 不会在 globalopt 之后立即运行,并且更多标量优化传递已添加到 LTO 管道中。 r255634

  • llvm-profdata 工具现在支持在合并配置文件数据时指定权重。这可用于对多个配置文件运行中的一个运行赋予更大的相对重要性。 r255659

  • 对于 CMake 构建,现在将生成一个 compile_commands.json 文件,该文件告诉 YouCompleteMe 和 clang_complete 等工具如何构建每个源文件。 r255789

  • Hexagon VLIW 打包程序进行了大量更新(但不幸的是,更改未在提交消息中总结)。 r255807

  • 许多 LLVM 的 C API 已被弃用:LLVMParseBitcode、LLVMParseBitcodeInContext、LLVMGetBitcodeModuleInContext 和 LLVMGetBitcodeModule。这些已被不记录诊断信息的新版本函数取代。 r256065

  • AVR 后端(正在逐步导入)获得了 AVR.td 和 AVRRegisterInfo.td。 r256120

Clang 提交

  • 引入了一个新的检查器,用于检测类和结构体中的过度填充。 r255545

  • 引入了新的控制流完整性模式,跨 DSO CFI 允许在共享对象之间保护控制流。它目前被标记为实验性。 r255694

  • Clang 的 CMake 构建系统现在支持为 Clang 生成配置文件数据。 r255740r256069

其他项目提交

  • 现在可以在运行时抑制来自 UndefinedBehaviourSanitizer 的某些文件、函数或模块的报告。 r256018

  • llvm 测试套件的 CMake+Lit 运行器获得了对 SPEC2000 和 SPEC CPU95 的支持。 r255876r255878