LLVM 入门教程之 Pass 编写
前言 本篇文章作为 Pass 编写的入门,主要介绍以下内容: 示例 Pass 编写 Pass 编译构建和运行 Pass 不同子类 Pass 注册 Pass 间依赖 示例 首先我们先结合一个小示例,尝试编写 Pass,之后再详细介绍涉及的内容。 #include "llvm/Pass.h" //添加头文件#include "llvm/IR/Function.h"#include "llvm/Support/raw_ostream.h"#include "llvm/IR/LegacyPassManager.h"#include "llvm/Transforms/IPO/PassManagerBuilder.h"using namespace llvm; //添加 llvm 命名空间 namespace { // 定义匿名命名空间 struct SkeletonPass : public FunctionPass { // 定义 SkeletonPass 继承 FunctionPass static char ID; // // ID 标识 SkeletonPass() : FunctionPass(ID) {} virtual bool runOnFunction(Function &F) { //// 重载 runOnFunction 函数,接受Function类型参数 errs() << "I saw a function called " << F....