在LLVM中生成函数指针

341*_*008 4 c++ function-pointers llvm

我正在编写我的第一个LLVM示例.我正在尝试构建一个小型LLVM模块,该模块由一个函数组成,该函数接收函数的名称并返回指向它的指针.问题是我不知道如何在LLVM中生成函数指针.我Function通过电话得到了一个对象getDeclaration(...).有什么方法可以得到指针吗?

Ant*_*kov 5

函数是一个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);
}
Run Code Online (Sandbox Code Playgroud)

确保选中"显示LLVM C++ API代码"复选框,您将看到相应的LLVM IR和C++ API调用,它们将重新创建它.