diff options
Diffstat (limited to 'llvm/test/MC/WebAssembly/reloc-code.ll')
-rw-r--r-- | llvm/test/MC/WebAssembly/reloc-code.ll | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/llvm/test/MC/WebAssembly/reloc-code.ll b/llvm/test/MC/WebAssembly/reloc-code.ll new file mode 100644 index 00000000000..5c794400fa0 --- /dev/null +++ b/llvm/test/MC/WebAssembly/reloc-code.ll @@ -0,0 +1,59 @@ +; RUN: llc -mtriple wasm32-unknown-unknown-wasm -filetype=obj %s -o - | llvm-readobj -r -expand-relocs | FileCheck %s + +; Pointers to functions of two different types +@a = global i64 ()* inttoptr (i64 5 to i64 ()*), align 8 +@b = global i32 ()* inttoptr (i32 7 to i32 ()*), align 8 + +; External functions +declare i32 @c() +declare i32 @d() + +define i32 @f1() { +entry: + %aa = load i64 ()*, i64 ()** @a, align 8 + %bb = load i32 ()*, i32 ()** @b, align 8 + %tmp1 = call i64 %aa() + %tmp2 = call i32 %bb() + %tmp3 = call i32 @c() + %tmp4 = call i32 @d() + ret i32 %tmp2 +} + + +; CHECK: Format: WASM +; CHECK: Relocations [ +; CHECK-NEXT: Section (8) CODE { +; CHECK-NEXT: Relocation { +; CHECK-NEXT: Type: R_WEBASSEMBLY_GLOBAL_ADDR_LEB (3) +; CHECK-NEXT: Offset: 0x9 +; CHECK-NEXT: Index: 0x0 +; CHECK-NEXT: Addend: 0 +; CHECK-NEXT: } +; CHECK-NEXT: Relocation { +; CHECK-NEXT: Type: R_WEBASSEMBLY_GLOBAL_ADDR_LEB (3) +; CHECK-NEXT: Offset: 0x14 +; CHECK-NEXT: Index: 0x1 +; CHECK-NEXT: Addend: 0 +; CHECK-NEXT: } +; CHECK-NEXT: Relocation { +; CHECK-NEXT: Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB (0) +; CHECK-NEXT: Offset: 0x2D +; CHECK-NEXT: Index: 0x0 +; CHECK-NEXT: } +; CHECK-NEXT: Relocation { +; CHECK-NEXT: Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB (0) +; CHECK-NEXT: Offset: 0x34 +; CHECK-NEXT: Index: 0x1 +; CHECK-NEXT: } +; CHECK-NEXT: Relocation { +; CHECK-NEXT: Type: R_WEBASSEMBLY_TYPE_INDEX_LEB (6) +; CHECK-NEXT: Offset: 0x1A +; CHECK-NEXT: Index: 0x1 +; CHECK-NEXT: } +; CHECK-NEXT: Relocation { +; CHECK-NEXT: Type: R_WEBASSEMBLY_TYPE_INDEX_LEB (6) +; CHECK-NEXT: Offset: 0x24 +; CHECK-NEXT: Index: 0x0 +; CHECK-NEXT: } +; CHECK-NEXT: } +; CHECK-NEXT: ] |