4
我在写我的第一个LLVM示例。我正在尝试构建一个小型LLVM模块,其中包含一个函数,该函数接受函数的名称并返回指向它的指针。问题是我不知道如何在LLVM中生成函数指针。通过调用getDeclaration(...)
,我得到了一个Function
对象。有什么方法可以得到指针吗?在LLVM中生成函数指针
我在写我的第一个LLVM示例。我正在尝试构建一个小型LLVM模块,其中包含一个函数,该函数接受函数的名称并返回指向它的指针。问题是我不知道如何在LLVM中生成函数指针。通过调用getDeclaration(...)
,我得到了一个Function
对象。有什么方法可以得到指针吗?在LLVM中生成函数指针
函数是一个GlobalValue,所以它是指针本身。同时,您可以使用LLVM的C++后端来生成C++ API调用,这将重新创建您提供给llc的IR。
例如,喂下面的代码http://llvm.org/demo:
void foo(int (*bar)(int));
int factorial(int X);
int main(int argc, char **argv) {
foo(factorial);
}
请确保您有“显示LLVM C++ API代码”复选框选中,你会看到相应的LLVM IR和C++ API调用,将重新创建它。