使用 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);
给定一个 llvm::CallInst *
,我如何告诉内联器内联这个特定的调用。我可以将目标函数标记为 AlwaysInline
,这将内联调用,但它也会内联每个调用。也许有某种方法可以在我发出特定调用时调用内联器?内联基本块中的所有调用也可以。
您可以使用 llvm/Transforms/Utils/Cloning.h
中的 InlineFunction 实用程序。
它可以接受一个 CallInst*
作为参数:
llvm::CallInst* call = /* ... */;
llvm::InlineFunctionInfo ifi;
llvm::InlineFunction(call, ifi);