LLVM 周刊 - 第 17 期,2014 年 4 月 28 日
欢迎来到 LLVM 周刊的第 17 期,这是一份每周发布的新闻通讯(每周一发布),涵盖 LLVM、Clang 和相关项目的进展。LLVM 周刊由 Alex Bradbury 为您带来。订阅未来几期,请访问 http://llvmweekly.org,并将其转发给您认为可能感兴趣的任何人。请将任何提示或反馈发送至 [email protected],或在 Twitter 上关注 @llvmweekly 或 @asbradbury。
上周我很好奇为什么 GCC 的 logo 是一个 从鸡蛋里跳出来的 GNU。感谢所有写信告诉我这是对 EGCS 的引用。GCC 自然以 EGCS 的形式被著名的 fork 掉了,后来又合并了回来。显然,有些人将其发音为“eggs”。谜团解开了。
本期文章的官方地址 可以在 llvmweekly.org 找到。
来自网络的新闻和文章
GCC 4.9.0 于 上周二发布。查看 这里,了解有关此版本中更改的更详细说明。
Honza Hubička 在博客上发表了一篇关于 GCC 中链接时优化历史 的文章,随后发表了一篇包含 GCC 中 LTO 与 LLVM 的基准比较 的文章。
在 Twitter 上,@lambdamix 提醒我注意 优化编译器中使用的图算法笔记 (PDF)。我认为这对许多 LLVM 周刊读者来说会很有趣。
在邮件列表中
Michael Zolotukhin 建议在 LLVM IR 中扩展新的安全除法内在函数。这些加入了现有的带有溢出的加法内在函数。Filip Pizlo 后续发表了关于 它如何在各种潜在的语言前端中使用的描述。Michael 还发布了一篇 针对提出的担忧的详细理由。
James Molloy 分享了关于 AArch64 到 ARM64 合并的更新,包括对剩余任务的时间估计。初始合并应在 LLVM 3.5 之前完成。此外,Ana Pazos 已获得许可分享 ARM64 与 AArch64 的相对 SPEC2000 数据。
Sylvestre Ledru 建议从 Clang 网站上删除过时的营销材料。特别是,性能比较的对象是 GCC 4.0 或 4.2,这些当然已经过时了,尤其是考虑到 GCC 自那以后的改进。
Kostya Serebryany 报告称 AddressSanitizer 和 LeakSanitizer 在 Clang 中发现了许多内存泄漏。跟踪此问题的 bug 是 #19521。
Tom Stellard 已 启动了 LLVM 和 Clang 3.4.1 的第二阶段测试。预计这将是最后一个候选版本,因此 3.4.1 应该不会太远了。
LLVM 提交
几周前 提出的“musttail”标记 现已添加。与“tail”标记不同,“musttail”保证会执行尾调用优化。查看提交中添加的文档以获取更详细的说明。 r207143。
BlockFrequencyInfo 的重写终于完成了。新的算法的优点在原始的提交消息中有所描述,r206548。经过一系列反弹后,它最终在 r206766 中完成。
LLVM 现在可以生成面向“Windows on ARM”的 PE/COFF 对象文件。 r207345。
已添加了使用新的 LazyCallGraph 分析框架的 CallGraph 强连通分量传递管理器。这是 Chandler Carruth 一直在开发的新传递管理器工作的一部分,当然还在开发中。 r206745。
英特尔 Silvermont 微架构的调度程序模型已被替换。提交消息声称在整数测试中取得了实质性改进。我假设在这种情况下 RAL 指的是 RegAllocLocal? r206957。
ARM64 自然经历了大量更改。其中包括对 NEON/FP/CYPTO 指令的特征谓词的支持。这允许编译器在不使用这些指令的情况下生成代码。 r206949。此外,现在还有一个 ARM64 目标机器的大端版本。 r206965。
getFileOffset 已从 LLVM 的 C API 中删除。理由在提交消息中。 r206750。
LoopVectorize 传递现在保留了关于已分析循环数量和已矢量化循环数量的统计信息。 r206956。
x86 后端获得了用于读取时间戳计数器的新的内在函数。 r207127。
针对延迟调用图的变异支持的初始工作已完成。与 Chandler 的大多数提交一样,提交消息中还有更多信息。 r206968。
已引入 MCTargetOptions,目前只包含一个标志。SanitizeAddress 启用了对内联汇编的 AddressSanitizer 检测。 r206971。
llvm-cov 现在支持 gcov 的
--long-file-names
选项。 r207035。
Clang 提交
添加了对样本分析的文档。 r206994。
添加了对解析“omp simd”指令的线性子句的支持。 r206891。
Clang 获得了对
-fmodules-search-all
选项的支持,该选项会在未导入的模块(即在模块映射中引用但未导入的模块)中搜索符号。 r206977。
其他项目提交
AddressSanitizer 获得了用于检测“单定义规则”违规(在不同的模块中定义了两个具有相同名称的全局变量)的实验性检测器。 r207210。