【发布时间】:2019-01-29 00:00:58
【问题描述】:
给定一个llvm::CallInst *,我如何告诉内联程序内联这个特定的调用。我可以将目标函数标记为AlwaysInline,这将内联调用,但它也会内联每个调用。也许有一些方法可以在我发出特定调用时调用内联器?内联基本块中的所有调用也可以。
【问题讨论】:
-
你能不能只创建两个函数实例并创建一个
AlwaysInLine? -
@WillisBlackburn 这需要调用代码知道如何生成函数。
-
虽然,在我的情况下,这样的事情可能会奏效。我仍然想内联调用,因为我认为这样会更简洁。
-
函数是外部的吗?我认为内联一个没有 LLVM 指令的函数不会很幸运。 C++ 中的内联函数必须在头文件中的原因是编译器必须能够在与调用函数相同的编译单元中解析内联函数。
-
目标函数和调用站点都在同一个翻译单元中。如果内联觉得喜欢,可以内联调用。生成调用的代码与生成函数的代码分离。我想保持这种状态。您的解决方案需要耦合两个不相关的事物。
标签: c++ llvm llvm-c++-api