You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取LLVM中O1、O2、O3优化等级对应的Pass执行顺序

获取LLVM O级优化Pass执行顺序的方法

方法1:过滤调试输出得到有序Pass列表

默认opt -O3 -debug-pass-manager输出冗余内容较多,可以通过管道过滤得到仅含Pass名称的执行顺序列表,对应命令如下:

# 以O3为例,将参数替换为O1/O2即可得到对应优化等级的结果
opt -O3 -disable-output -debug-pass-manager 2>&1 | grep "Running pass" | awk -F "'" '{print $2}'

输出的每一行就是按执行顺序排列的Pass完整名称。

注:该方法同时适配新、旧版本Pass Manager

方法2:直接获取逗号分隔的短名称Pass列表

如果你需要类似mem2reg,dce,always-inline格式的、可直接用于传参的Pass列表,可以直接使用-print-pipeline-passes参数,无需手动过滤冗余输出:

# 查看O2的Pass管线,将-O2替换为对应优化等级即可
opt -O2 -print-pipeline-passes < /dev/null

该命令会直接输出按执行顺序排列、逗号分隔的Pass短名称列表,完全匹配你需要的格式。

注:-print-pipeline-passes为新Pass Manager的参数,适用于LLVM 12及以上版本

相关参考说明路径
  • 最准确的Pass管线定义在LLVM源码的llvm/lib/Passes/PassBuilder.cpp文件中,各个优化等级的Pass组装逻辑、执行顺序都有明确的代码实现,不同LLVM版本的管线调整都会同步更新到该文件,直接对照源码对比你自己设计的Pass顺序准确性最高。
  • LLVM官方文档的Pass章节提供了所有内置Pass的功能说明、调用参数信息,你可以对应查询每个Pass的作用。

内容的提问来源于stack exchange,提问作者Shane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:36:03