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

如何消除LLVM函数调用并替换为基础指令?查询现有Pass

LLVM函数调用替换为函数指令的现成Pass方案

你需要的功能就是LLVM自带的函数内联(Function Inlining) Pass,完全能满足把函数调用替换为对应函数体内基础指令的需求。

使用方式

直接通过opt命令启用内联Pass即可:

  • 基础内联:执行 opt -inline -S input.ll -o output.ll,会自动内联符合LLVM默认条件的函数(比如你的示例中的add函数)。
  • 强制内联:如果目标函数带有noinline属性,普通内联Pass会跳过,此时可以用 opt -always-inline -S input.ll -o output.ll 强制内联所有可内联函数。

原理说明

LLVM的内联Pass会分析函数调用,将被调用函数的指令直接插入到调用点位置,替代原有的call指令,同时自动处理参数传递、返回值映射等逻辑,最终生成你示例中期望的IR代码。你之前查阅Pass文档时,InlinePass就是对应这个功能,可能是没注意到它的命名对应关系。

示例验证

针对你提供的LLVM IR输入,执行opt -inline -S input.ll -o output.ll后,main函数中的call i32 @add指令会被替换为add指令,生成的IR完全符合你给出的预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:25:14