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

He *_*eng 3 llvm llvm-clang llvm-3.0 llvm-ir llvm-c++-api

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

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

谢谢

Chi*_*tel 5

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

 llvm-link a.ll b.ll -o a.out
Run Code Online (Sandbox Code Playgroud)

示例a.ll

declare i32 @foo(i32)

define i32 @main() {
    start:
    %0 = call i32 @foo(i32 0)
    ret i32 %0
}
Run Code Online (Sandbox Code Playgroud)

b.ll

define i32 @foo(i32) {
    start:
    ret i32 %0
}
Run Code Online (Sandbox Code Playgroud)