LLVM介绍
https://aosabook.org/en/llvm.html
LLVM一开始就被设计为一组具有良好定义接口的可重用库。不像GCC那样很难重用它的parser来进行静态分析或者重构。
LLVM设计最重要的方面是LLVM中间表示(IR).
写一个LLVM Pass
1
2
3
4
5
# 生成.bc
./bin/clang++ -emit-llvm -c hello.cpp -o hello.bc -isystem /usr/include/c++/4.8.5
# 将pass应用于生成的.bc
./bin/opt -enable-new-pm=0 -load ./lib/LLVMHello.so -hello < hello.bc > /dev/null