在上一篇的基础上,编写一个简单的LLVM Pass。
- 在
llvm-project-17.0.6.src/llvm/lib/Transforms/
目录下,新建一个文件夹SweetWound
:
- 在在
llvm-project-17.0.6.src/llvm/include/llvm/Transforms/
目录下,新建一个文件夹SweetWound
:
- 在
Transforms
目录下的CMakeLists.txt
文件末尾,增加如下代码:
1 | ... |
- 在
llvm-project-17.0.6.src/llvm/include/llvm/Transforms/SweetWound/
目录下,新建ModuleTest.h
文件,并写入如下代码:
1 | // ModuleTest.h |
- 在
llvm-project-17.0.6.src/llvm/lib/Transforms/SweetWound/
目录下,创建ModuleTest.cpp
文件,并写入如下代码:
1 | // ModuleTest.cpp |
- 在
llvm-project-17.0.6.src/llvm/lib/Transforms/SweetWound/
目录下,创建CMakeLists.txt
文件,并写入如下代码:
1 | add_llvm_component_library(LLVMSweetWound |
- 修改
llvm-project-17.0.6.src/llvm/lib/Passes/PassBuilder.cpp
文件:
1 | ...... |
- 重新执行编译脚本,成功后,替换
LLVM17.0.6.xctoolchain
文件。 - 在Xcode的
Build Settings-->Other C Flags
中,设置编译参数:-mllvm -test
:
Command + B
编译(或Command + R
运行):
可以看到每个编译单元都有对应的输出,即代表编写的LLVM Pass加载成功!!!