xref: /aosp_15_r20/external/llvm/test/Linker/transitive-lazy-link.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; @f and @g are lazily linked. @f requires @g - ensure @g is correctly linked.
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; RUN: echo "declare i32 @f(i32)" > %t.1.ll
4*9880d681SAndroid Build Coastguard Worker; RUN: echo "define i32 @h(i32 %x) {" >> %t.1.ll
5*9880d681SAndroid Build Coastguard Worker; RUN: echo "  %1 = call i32 @f(i32 %x)" >> %t.1.ll
6*9880d681SAndroid Build Coastguard Worker; RUN: echo "  ret i32 %1" >> %t.1.ll
7*9880d681SAndroid Build Coastguard Worker; RUN: echo "}" >> %t.1.ll
8*9880d681SAndroid Build Coastguard Worker; RUN: llvm-as < %t.1.ll > %t.1.bc
9*9880d681SAndroid Build Coastguard Worker; RUN: llvm-as < %s > %t.2.bc
10*9880d681SAndroid Build Coastguard Worker; RUN: llvm-link %t.1.bc %t.2.bc
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerdefine available_externally i32 @f(i32 %x) {
13*9880d681SAndroid Build Coastguard Worker  %1 = call i32 @g(i32 %x)
14*9880d681SAndroid Build Coastguard Worker  ret i32 %1
15*9880d681SAndroid Build Coastguard Worker}
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Workerdefine available_externally i32 @g(i32 %x) {
18*9880d681SAndroid Build Coastguard Worker  ret i32 5
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21