LLVM 每周 - 第 18 期,2014 年 5 月 5 日
欢迎来到 LLVM 每周的第十八期,这是一份每周一发布的周刊,涵盖 LLVM、Clang 和相关项目的进展。LLVM 每周由 Alex Bradbury 负责。订阅未来的期刊,请访问 http://llvmweekly.org 并将其传递给任何您认为可能感兴趣的人。请将任何提示或反馈发送至 [email protected],或在 Twitter 上发送至 @llvmweekly 或 @asbradbury。
我将在 5 月 13 日至 20 日期间与其他 Raspberry Pi 人员一起前往旧金山湾区。我们将参加 17 日和 18 日的 Maker Faire 湾区。请告诉我,如果那里还有其他我应该去看看的地方。
本期内容的官方网站 位于 llvmweekly.org。
来自网络的新闻和文章
Andrew Ruef 发布了一篇博客文章,介绍了 使用静态分析和 Clang 查找 SSL Heartbleed 漏洞。博客文章中描述的检查器的代码可在 Github 上获得。
FTL(“第四层 LLVM”)Javascript JIT 现已 在 WebKit for Mac 中启用。WebKit Wiki 提供了 更多信息。我还没有看到任何公开的基准测试数据。如果您有任何数据,请分享一下。
Eli Bendersky 发布了一篇文章,介绍了 如何使用 libTooling 实现源代码到源代码的转换。
下一次 巴黎 LLVM 社交活动 将于 5 月 5 日(即今天晚上)举行。
LLVM 湾区社交活动 将于 5 月 8 日举行。如果您有兴趣,请回复。
在邮件列表中
关于 上周关于添加安全除法内联函数的提案 的讨论仍在进行中。Philip Reames 已经 分享了他反对该提案的理由。这引发了大量的讨论,不幸的是,我没有时间进行总结。
Kevin Modzelewski 正在为 Pyston(基于 LLVM 的 Python JIT)开发异常处理,并 寻求有关其他人如何在 VMKit 等项目中实现异常处理的建议/经验。有很多有用的回复。
Alp Toker 建议添加一项编码风格策略,以防止过度使用默认参数。
Yi Kong 建议对 LNT 进行改进,以进行基准测试。在后续回复中提出的担忧之一是,基准测试结果可能不稳定,并且可能需要太长时间才能在例如 ARM 硬件上变得实用。Chris Matthews 建议 执行类似于 SPEC 基准测试的几何平均数,作为纯总执行时间指标的替代方法。
Dario Domizioli 发布了关于 optnone pragma 的 RFC。这个提案引发了关于是否除了 optnone 函数属性之外,支持这个属性是否有任何优势的激烈讨论,尽管似乎有足够的支持,足以让这个功能得以实现。
LLVM 提交
几周前讨论过的 针对一组 getelementptrs 执行公共子表达式消除 的补丁已合并。目前仅针对 NVPTX 后端启用。 r207783。
针对 musttail 函数属性,已实现 X86 代码生成。 r207598。
将传递运行监听器添加到传递管理器。这添加了 C/C++ API 以启用细粒度进度报告和安全挂起点。有关更多信息,请参阅提交消息 r207430。
优化备注系统已开始使用,循环展开器和矢量化器已添加了对 emitOptimizationRemark 的调用。 r207528,r207574。
SLPVectorizer 获得了识别和矢量化内联数学函数的能力。 r207901。
Clang 提交
重写了 NRVO(命名返回值优化)确定。根据提交消息,“如果并且只有当该范围内所有 return 语句都返回该变量时,一个变量才会应用 NRVO”。此外,在引导 clang 构建中,NRVO 的执行频率大约提高了 7%。 r207890。
将 libclang 的文档注释 API 拆分为单独的头文件。 r207392。
SLPVectorizer(超字级并行)现在在 O0、O1 和 Oz 中被禁用。 r207433。它后来在 Oz 中重新启用。 r207858。
libclang API 现在支持属性“pure”、“const”和“noduplicate”。 r207767。
注释解析器不再尝试验证 HTML 属性(之前的解决方案不足)。 r207712。