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

如何在LLVM编译流程每个中端Pass执行后导出对应的LLVM IR?

实现中端Pass执行后导出LLVM IR的方案
  • 方案1:直接使用opt命令自带的打印参数
    中端Pass的标准驱动工具opt和llc一样原生支持全Pass打印能力,直接添加-print-after-all参数即可实现所有中端Pass执行后的IR打印,示例命令如下:

    opt -O2 -print-after-all 输入IR文件.ll -disable-output 2> all_pass_ir_output.txt
    

    补充说明:

    • -disable-output参数用于关闭最终优化后IR的文件输出,只保留每步Pass的打印结果
    • 打印内容默认输出到标准错误流,所以用2>重定向到文件存储
    • 如果只需要关注特定函数的IR变化,可以额外添加-filter-print-funcs=你的函数名参数过滤输出
    • 如果不需要打印所有Pass,只需要查看特定Pass前后的IR,可以把-print-after-all替换为-print-after=指定Pass名或-print-before=指定Pass名
  • 方案2:自定义项目集成时的手动实现
    如果你是在自己的项目中直接调用LLVM PassManager跑中端优化,不依赖opt命令行,可以通过两种方式实现打印:

    1. 构造Pass流水线时,在每个你需要观察的Pass后插入PrintModulePass(模块级IR打印)或PrintFunctionPass(函数级IR打印),指定输出路径即可
    2. 使用LLVM提供的PassInstrumentationCallbacks回调机制,注册Pass执行后的回调函数,在回调中自动获取当前Pass的名称和当前IR,批量导出为单独的IR文件,适合需要按Pass分类存储结果的场景。

内容的提问来源于stack exchange,提问作者gold-wheel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:54:05