xref: /llvm-project/lld/test/wasm/Inputs/weak-alias.ll (revision f01fdd17b4d202727023da23bdd120eb0bd94f9f)
1target triple = "wasm32-unknown-unknown"
2
3; Function Attrs: norecurse nounwind readnone
4define i32 @direct_fn() #0 {
5entry:
6  ret i32 0
7}
8
9@alias_fn = weak alias i32 (), ptr @direct_fn
10
11define i32 @call_direct() #0 {
12entry:
13  %call = call i32 @direct_fn()
14  ret i32 %call
15}
16
17define i32 @call_alias() #0 {
18entry:
19  %call = call i32 @alias_fn()
20  ret i32 %call
21}
22
23define i32 @call_alias_ptr() #0 {
24entry:
25   %fnptr = alloca ptr, align 8
26   store ptr @alias_fn, ptr %fnptr, align 8
27   %0 = load ptr, ptr %fnptr, align 8
28   %call = call i32 %0()
29   ret i32 %call
30}
31
32define i32 @call_direct_ptr() #0 {
33entry:
34  %fnptr = alloca ptr, align 8
35  store ptr @direct_fn, ptr %fnptr, align 8
36  %0 = load ptr, ptr %fnptr, align 8
37  %call = call i32 %0()
38  ret i32 %call
39}
40