一. Clang和opt执行的pass序列相同,可以通过下面命令查看:
- Clang
clang -OX -mllvm -debug-pass=Arguments foo.c
or
clang -OX -mllvm -debug-pass=Structure foo.c
- Opt
llvm-as < /dev/null | opt -O3 -disable-output -debug-pass=Arguments
二. https://stackoverflow.com/questions/15548023/clang-optimization-levels
三. 关掉Clang中pass执行,在opt中加载pass
a. clang -O3 -Xclang -disable-llvm-optzns -emit-llvm -c 'tmp.c' -o 'tmp.bc'
b. llvm-dis tmp.bc
c. opt -O3 tmp.bc -S -o tmp2.ll
d. 比较tmp.ll 和tmp2.ll
四. 打印pass执行统计信息
$ clang -Xclang -print-stats -emit-llvm -O1 sum.c -c -o sum-O1.bc
$ opt sum-O0.ll -stats -sroa -o sum-O1.ll