reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
; RUN: llc -filetype=obj -wasm-keep-registers %s -o - | llvm-readobj -r --expand-relocs | FileCheck %s

target triple = "wasm32-unknown-unknown"

; 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 (5) CODE {
; CHECK-NEXT:     Relocation {
; CHECK-NEXT:       Type: R_WASM_MEMORY_ADDR_LEB (3)
; CHECK-NEXT:       Offset: 0x9
; CHECK-NEXT:       Symbol: b
; CHECK-NEXT:       Addend: 0
; CHECK-NEXT:     }
; CHECK-NEXT:     Relocation {
; CHECK-NEXT:       Type: R_WASM_MEMORY_ADDR_LEB (3)
; CHECK-NEXT:       Offset: 0x14
; CHECK-NEXT:       Symbol: a
; CHECK-NEXT:       Addend: 0
; CHECK-NEXT:     }
; CHECK-NEXT:     Relocation {
; CHECK-NEXT:       Type: R_WASM_TYPE_INDEX_LEB (6)
; CHECK-NEXT:       Offset: 0x1A
; CHECK-NEXT:       Index: 0x1
; CHECK-NEXT:     }
; CHECK-NEXT:     Relocation {
; CHECK-NEXT:       Type: R_WASM_TYPE_INDEX_LEB (6)
; CHECK-NEXT:       Offset: 0x24
; CHECK-NEXT:       Index: 0x0
; CHECK-NEXT:     }
; CHECK-NEXT:     Relocation {
; CHECK-NEXT:       Type: R_WASM_FUNCTION_INDEX_LEB (0)
; CHECK-NEXT:       Offset: 0x2D
; CHECK-NEXT:       Symbol: c
; CHECK-NEXT:     }
; CHECK-NEXT:     Relocation {
; CHECK-NEXT:       Type: R_WASM_FUNCTION_INDEX_LEB (0)
; CHECK-NEXT:       Offset: 0x34
; CHECK-NEXT:       Symbol: d
; CHECK-NEXT:     }
; CHECK-NEXT:   }
; CHECK-NEXT: ]