]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/wasm/local-symbols.ll
Vendor import of lld trunk r338150:
[FreeBSD/FreeBSD.git] / test / wasm / local-symbols.ll
1 ; RUN: llc -filetype=obj %s -o %t.o
2 ; RUN: wasm-ld -o %t.wasm %t.o
3 ; RUN: obj2yaml %t.wasm | FileCheck %s
4
5 target triple = "wasm32-unknown-unknown"
6
7 @foo = default global i32 1, align 4
8 @bar = internal default global i32 3, align 4
9
10 define internal i32 @baz() local_unnamed_addr {
11 entry:
12   %0 = load i32, i32* @bar, align 4
13   ret i32 %0
14 }
15
16 define void @_start() local_unnamed_addr {
17 entry:
18   call i32 @baz()
19   ret void
20 }
21
22 ; CHECK:      --- !WASM
23 ; CHECK-NEXT: FileHeader:
24 ; CHECK-NEXT:   Version:         0x00000001
25 ; CHECK-NEXT: Sections:
26 ; CHECK-NEXT:   - Type:            TYPE
27 ; CHECK-NEXT:     Signatures:
28 ; CHECK-NEXT:       - Index:           0
29 ; CHECK-NEXT:         ReturnType:      NORESULT
30 ; CHECK-NEXT:         ParamTypes:
31 ; CHECK-NEXT:       - Index:           1
32 ; CHECK-NEXT:         ReturnType:      I32
33 ; CHECK-NEXT:         ParamTypes:
34 ; CHECK-NEXT:   - Type:            FUNCTION
35 ; CHECK-NEXT:     FunctionTypes:   [ 0, 1, 0 ]
36 ; CHECK-NEXT:   - Type:            TABLE
37 ; CHECK-NEXT:     Tables:
38 ; CHECK-NEXT:       - ElemType:        ANYFUNC
39 ; CHECK-NEXT:         Limits:
40 ; CHECK-NEXT:           Flags:           [ HAS_MAX ]
41 ; CHECK-NEXT:           Initial:         0x00000001
42 ; CHECK-NEXT:           Maximum:         0x00000001
43 ; CHECK-NEXT:   - Type:            MEMORY
44 ; CHECK-NEXT:     Memories:
45 ; CHECK-NEXT:       - Initial:         0x00000002
46 ; CHECK-NEXT:   - Type:            GLOBAL
47 ; CHECK-NEXT:     Globals:
48 ; CHECK-NEXT:       - Index:           0
49 ; CHECK-NEXT:         Type:            I32
50 ; CHECK-NEXT:         Mutable:         true
51 ; CHECK-NEXT:         InitExpr:
52 ; CHECK-NEXT:           Opcode:          I32_CONST
53 ; CHECK-NEXT:           Value:           66576
54 ; CHECK-NEXT:       - Index:           1
55 ; CHECK-NEXT:         Type:            I32
56 ; CHECK-NEXT:         Mutable:         false
57 ; CHECK-NEXT:         InitExpr:
58 ; CHECK-NEXT:           Opcode:          I32_CONST
59 ; CHECK-NEXT:           Value:           66576
60 ; CHECK-NEXT:       - Index:           2
61 ; CHECK-NEXT:         Type:            I32
62 ; CHECK-NEXT:         Mutable:         false
63 ; CHECK-NEXT:         InitExpr:
64 ; CHECK-NEXT:           Opcode:          I32_CONST
65 ; CHECK-NEXT:           Value:           1032
66 ; CHECK-NEXT:       - Index:           3
67 ; CHECK-NEXT:         Type:            I32
68 ; CHECK-NEXT:         Mutable:         false
69 ; CHECK-NEXT:         InitExpr:
70 ; CHECK-NEXT:           Opcode:          I32_CONST
71 ; CHECK-NEXT:           Value:           1024
72 ; CHECK-NEXT:   - Type:            EXPORT
73 ; CHECK-NEXT:     Exports:
74 ; CHECK-NEXT:       - Name:            memory
75 ; CHECK-NEXT:         Kind:            MEMORY
76 ; CHECK-NEXT:         Index:           0
77 ; CHECK-NEXT:       - Name:            __heap_base
78 ; CHECK-NEXT:         Kind:            GLOBAL
79 ; CHECK-NEXT:         Index:           1
80 ; CHECK-NEXT:       - Name:            __data_end
81 ; CHECK-NEXT:         Kind:            GLOBAL
82 ; CHECK-NEXT:         Index:           2
83 ; CHECK-NEXT:       - Name:            _start
84 ; CHECK-NEXT:         Kind:            FUNCTION
85 ; CHECK-NEXT:         Index:           2
86 ; CHECK-NEXT:       - Name:            foo
87 ; CHECK-NEXT:         Kind:            GLOBAL
88 ; CHECK-NEXT:         Index:           3
89 ; CHECK-NEXT:   - Type:            CODE
90 ; CHECK-NEXT:     Functions:
91 ; CHECK-NEXT:       - Index:           0
92 ; CHECK-NEXT:         Locals:
93 ; CHECK-NEXT:         Body:            0B
94 ; CHECK-NEXT:       - Index:           1
95 ; CHECK-NEXT:         Locals:
96 ; CHECK-NEXT:         Body:            4100280284888080000B
97 ; CHECK-NEXT:       - Index:           2
98 ; CHECK-NEXT:         Locals:
99 ; CHECK-NEXT:         Body:            1081808080001A0B
100 ; CHECK-NEXT:   - Type:            DATA
101 ; CHECK-NEXT:     Segments:
102 ; CHECK-NEXT:       - SectionOffset:   7
103 ; CHECK-NEXT:         MemoryIndex:     0
104 ; CHECK-NEXT:         Offset:
105 ; CHECK-NEXT:           Opcode:          I32_CONST
106 ; CHECK-NEXT:           Value:           1024
107 ; CHECK-NEXT:         Content:         '0100000003000000'
108 ; CHECK-NEXT:   - Type:            CUSTOM
109 ; CHECK-NEXT:     Name:            name
110 ; CHECK-NEXT:     FunctionNames:
111 ; CHECK-NEXT:       - Index:           0
112 ; CHECK-NEXT:         Name:            __wasm_call_ctors
113 ; CHECK-NEXT:       - Index:           1
114 ; CHECK-NEXT:         Name:            baz
115 ; CHECK-NEXT:       - Index:           2
116 ; CHECK-NEXT:         Name:            _start
117 ; CHECK-NEXT: ...