如何将函数指针强制转换为LLVM值,以便我可以在IR中调用它?

时间:2014-11-04 16:14:49

标签: llvm llvm-clang llvm-ir llvm-c++-api

我正在研究JIT之类的东西。我有以下代码:

Obj doSomething(Obj o, Selector sel){
    ...
}

我有一个指向这个函数的指针,我的问题是如何将指针包装到LLVM:Value中,以便我可以使用IRBuilder.CreateCall将其插入到我的IR中,我需要什么去做?

1 个答案:

答案 0 :(得分:0)

(我理解你的问题:我有一个指向LLVM函数的C ++指针,我需要创建一个调用它,如果我弄错了请在帖子或下面的评论中澄清)< / em>的

当您执行类似

的操作时,大多数LLVM类派生自llvm::Value
llvm::Function *theFunction = llvm::Function::Create(...);

llvm::Functionllvm::Value的子类,您可以在CreateCall

中使用它
Value *result = Builder.CreateCall(theFunction, ...); // This is the call instruction