diff options
Diffstat (limited to 'test/wasm/Inputs/weak-alias.ll')
| -rw-r--r-- | test/wasm/Inputs/weak-alias.ll | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/test/wasm/Inputs/weak-alias.ll b/test/wasm/Inputs/weak-alias.ll index 079e68e3ce7a..b911b35529c5 100644 --- a/test/wasm/Inputs/weak-alias.ll +++ b/test/wasm/Inputs/weak-alias.ll @@ -1,13 +1,37 @@ ; Function Attrs: norecurse nounwind readnone -define i32 @foo() #0 { +define i32 @direct_fn() #0 { entry: ret i32 0 } -@bar = weak alias i32 (), i32 ()* @foo +@alias_fn = weak alias i32 (), i32 ()* @direct_fn -define i32 @call_bar() #0 { +define i32 @call_direct() #0 { entry: - %call = call i32 @bar() + %call = call i32 @direct_fn() + ret i32 %call +} + +define i32 @call_alias() #0 { +entry: + %call = call i32 @alias_fn() + ret i32 %call +} + +define i32 @call_alias_ptr() #0 { +entry: + %fnptr = alloca i32 ()*, align 8 + store i32 ()* @alias_fn, i32 ()** %fnptr, align 8 + %0 = load i32 ()*, i32 ()** %fnptr, align 8 + %call = call i32 %0() + ret i32 %call +} + +define i32 @call_direct_ptr() #0 { +entry: + %fnptr = alloca i32 ()*, align 8 + store i32 ()* @direct_fn, i32 ()** %fnptr, align 8 + %0 = load i32 ()*, i32 ()** %fnptr, align 8 + %call = call i32 %0() ret i32 %call } |
