什么是LLVMBlockAddress()的第一个参数?

时间:2017-03-03 14:20:57

标签: llvm

我正在使用LLVM C-API,我不知何故坚持使用LLVMBuildIndirectBr(),或者更确切地说是LLVMBlockAddress(),因为我不知道它的第一个参数是什么,更重要的是我如何创建它。它是一个LLVMValueRef,它应该代表“函数”,但我发现的文档并没有说明更多。

2 个答案:

答案 0 :(得分:1)

根据its code,此函数只是BlockAddress::get()的C包装器。所以,第一个参数是包含BB的Function,我认为。

BlockAddress::get()重载没有C API只接受BB参数,因此您必须首先在该BB上调用LLVMGetBasicBlockParent()以获取对其所属的Function的引用,并且然后将其作为第一个参数传递给LLVMBlockAddress()

在这种情况下,根据经验,尝试找出您正在使用的“原生”C ++方法,然后查找其文档。

答案 1 :(得分:0)

显然是通过LLVMFunctionType()和LLVMAddFunction()。