如何获取LLVM/Clang中O1、O2、O3优化等级的所有Pass名称
获取LLVM/Clang各优化等级启用的Pass列表
用Opt工具查询
opt工具需要接收IR输入才能正常解析优化选项,你之前的命令缺少输入源导致失败,修正后的命令如下:
- O1优化等级:
llvm-as < /dev/null | opt -O1 -disable-output -debug-pass=Arguments - O2优化等级:
llvm-as < /dev/null | opt -O2 -disable-output -debug-pass=Arguments - O3优化等级:
llvm-as < /dev/null | opt -O3 -disable-output -debug-pass=Arguments
针对LLVM 14及以上版本,-debug-pass=Arguments已被废弃,改用-print-passes参数:
opt -O2 -print-passes -disable-output
用Clang查询
直接执行clang -O2 -help无法获取Pass列表,需要通过-Xclang将调试参数传递给LLVM前端:
- O1优化等级:
clang -O1 -Xclang -disable-output -Xclang -debug-pass=Arguments - O2优化等级:
clang -O2 -Xclang -disable-output -Xclang -debug-pass=Arguments - O3优化等级:
clang -O3 -Xclang -disable-output -Xclang -debug-pass=Arguments
进阶用法
如果需要查看Pass的依赖关系和执行结构,将上述命令中的-debug-pass=Arguments替换为-debug-pass=Structure,输出会包含更详细的Pass组织信息。
内容的提问来源于stack exchange,提问作者Soma Pal
相关产品推荐
相关产品推荐

