我正在使用LLVM C-API,我不知何故坚持使用LLVMBuildIndirectBr(),或者更确切地说是LLVMBlockAddress(),因为我不知道它的第一个参数是什么,更重要的是我如何创建它。它是一个LLVMValueRef,它应该代表“函数”,但我发现的文档并没有说明更多。
答案 0 :(得分:1)
根据its code,此函数只是BlockAddress::get()的C包装器。所以,第一个参数是包含BB的Function
,我认为。
BlockAddress::get()
重载没有C API只接受BB参数,因此您必须首先在该BB上调用LLVMGetBasicBlockParent()以获取对其所属的Function
的引用,并且然后将其作为第一个参数传递给LLVMBlockAddress()
。
在这种情况下,根据经验,尝试找出您正在使用的“原生”C ++方法,然后查找其文档。
答案 1 :(得分:0)
显然是通过LLVMFunctionType()和LLVMAddFunction()。