2011-03-28 107 views
4

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

回答

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); 
} 

请确保您有“显示LLVM C++ API代码”复选框选中,你会看到相应的LLVM IR和C++ API调用,将重新创建它。