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