使用 LLVM 内联特定函数调用

Inline a particular function call with LLVM

给定一个 llvm::CallInst *,我如何告诉内联器内联这个特定的调用。我可以将目标函数标记为 AlwaysInline,这将内联调用,但它也会内联每个调用。也许有某种方法可以在我发出特定调用时调用内联器?内联基本块中的所有调用也可以。

您可以使用 llvm/Transforms/Utils/Cloning.h 中的 InlineFunction 实用程序。 它可以接受一个 CallInst* 作为参数:

llvm::CallInst* call = /* ... */;
llvm::InlineFunctionInfo ifi;

llvm::InlineFunction(call, ifi);