LLVM IR:如何在另一个.ll文件中调用函数

问题描述:

我正在编写LLVM IR代码,我可以在另一个.ll文件中调用函数吗?LLVM IR:如何在另一个.ll文件中调用函数

例如: 在a.ll文件中,有一个函数foo(); 我可以在b.ll中使用这个函数,就像调用foo一样吗?如果是这样,我怎么能包括a.ll

感谢

您需要添加函数foo的声明,在其中你调用它的LL文件,然后像往常一样转换链接LL文件生成可执行

llvm-link a.ll b.ll -o a.out 

例如 a.ll

declare i32 @foo(i32) 

define i32 @main() { 
    start: 
    %0 = call i32 @foo(i32 0) 
    ret i32 %0 
} 

b.ll

define i32 @foo(i32) { 
    start: 
    ret i32 %0 
} 
+0

非常感谢。但是,如果我在a.ll中有函数foo2(),它使用b.ll中的foo(),我可以使用C++ API parseIRFile来提取foo2()函数,并使其在C++代码中运行?如果是这样,怎么样?谢谢。 –