LLVM Pass 简介

本文档是一个LLVM Pass入门教程,本文档将会介绍如何编写一个LLVM Pass。

本文译自:Writing an LLVM Pass - LLVM 9 documentation

LLVM Pass框架是LLVM系统的重要组成部分,因为LLVM Pass是编译器的大多数有趣部分存在的地方。通过执行构成编译器的转换和优化,它们构建这些转换所使用的分析结果,并且它们首先是编译器代码的结构化技术。

所有LLVM Pass都是Pass类的子类,它通过重写从中继承的虚方法来实现功能Pass。根据传递的工作方式,您应该继承ModulePassCallGraphSCCPassFunctionPassLoopPass,或RegionPassBasicBlockPass类,这样可以为系统提供有关传递操作的更多信息,以及如何将其与其他Pass结合使用。LLVM Pass框架的一个主要特性是它根据传递遇到的约束(由它们派生自哪个类来指示)来调度传递以高效的方式运行。

我们首先向您展示如何构建传递,从设置代码到编译,加载和执行它。基础知识出现故障后,将讨论更多高级功能。