ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

在2018年编写LLVM遍——前言

2019-07-26 12:35:52  阅读:240  来源: 互联网

标签:教程 LLVM 前言 管理者 2018 源代码 链接 新遍


TL;DR:官方教程仍然奏效,但过时久矣

原文地址:https://medium.com/@mshockwave/writing-llvm-pass-in-2018-preface-6b90fa67ae82

作者:Bekket McClane

遵循官方教程,你已经写过一个HelloWorld遍……

现在你希望学习更多、看得更多……

因此你深入神奇的LLVM源代码树,为了理解如何用遍实现那些著名而强大的优化……

但奇怪的遍构造语法让人困惑,它和你刚学的教程一点都不像,也没有记录在官方网站的任何地方——这正是我几年前遇到的,当时我仍然是一个LLVM新手,我之前仅仅听说过LLVM遍。

作为LLVM里最重要的核心组件之一,Pass与PassManager系统的改进始于2014,起因于许多优化机会缺失的情形以及编译速度退化。旧的遍实现与新的遍实现并存,整个代码也开始反映这些改变。通过提供特殊的命令行选项,使用者转向新的遍管理者,同时旧的遍管理者仍然是缺省使用的。

不过,正如前言部分指出的,目前没有官方文档谈及这个革新。虽然新的遍管理者以及其文档越来越接近它们的发布日期,我仍然希望为那些热切想知道代码树里现在发生了什么的热心者写一篇简单的教程。我将这个系列分为四部分:

  1. 部分I(链接):以新的遍管理者风格编写新的HelloWorld遍。
  2. 部分II(链接):如何使用新的AnalysisManager来替换旧的getAnalysis<…>()语法。
  3. 部分III(链接):遍如何整合进LLVM源代码树。剧透:LLVM源代码树里的(旧的)遍要求一些额外的语法,这将告诉你如何做。我知道在一篇文章里谈论旧的遍管理者有点奇怪。但考虑到LLVM项目巨大的体量以及在业界广泛的应用,迁移绝对是需要时间的。因此只需把这部分视作对那些对源代码树的演进(in-tree development)感兴趣的人迟来的教程(事实上接近10年)。
  4. 部分IV(链接):我怎样添加一个clang选项来使用我构建在LLVM里酷酷的特性?好吧,这部分将告诉你如何做。尽管这看起来与前面关于新遍管理者的话题无关(be orthogonal to),它总是我的“应该被官方归档的教程/提示”之一。就是这样。

我将不会讨论设计细节,像与旧遍管理者相比,新遍管理者如何改进编译速度以及优化质量。新遍管理者演进由LLVM社区最好的开发者领导,在相关材料(比如LLVM开发者大会里的演讲)里你肯定听过他们的解释(而不是我的)。我将从一个遍管理者使用者的角度来通读这个故事,关注在中端(middle-end)的优化以及分析开发。因此,不会涉及后端。

另外,你总是应该检查LLVM邮件列表以及源代码里的注释。这些地方的信息可能是零散的,但它们总是最新的。

标签:教程,LLVM,前言,管理者,2018,源代码,链接,新遍
来源: https://blog.csdn.net/wuhui_gdnt/article/details/97377965

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有