Skip to content

Commit 5639da8

Browse files
committedMar 12, 2018
[WebAssembly] Reorder synthetic functions to come first
This matches the existing ordering that's been there for globals for a while (__stack_pointer coming first). Differential Revision: https://reviews.llvm.org/D44333 llvm-svn: 327286
1 parent 788a222 commit 5639da8

19 files changed

+261
-252
lines changed
 

‎lld/test/wasm/alias.ll

+4-4
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ entry:
6666
; CHECK-NEXT: Index: 2
6767
; CHECK-NEXT: - Name: _start
6868
; CHECK-NEXT: Kind: FUNCTION
69-
; CHECK-NEXT: Index: 0
69+
; CHECK-NEXT: Index: 1
7070
; CHECK-NEXT: - Name: start_alias
7171
; CHECK-NEXT: Kind: FUNCTION
72-
; CHECK-NEXT: Index: 0
72+
; CHECK-NEXT: Index: 1
7373
; CHECK-NEXT: - Type: CODE
7474
; CHECK-NEXT: Functions:
7575
; CHECK-NEXT: - Index: 0
@@ -82,7 +82,7 @@ entry:
8282
; CHECK-NEXT: Name: name
8383
; CHECK-NEXT: FunctionNames:
8484
; CHECK-NEXT: - Index: 0
85-
; CHECK-NEXT: Name: _start
86-
; CHECK-NEXT: - Index: 1
8785
; CHECK-NEXT: Name: __wasm_call_ctors
86+
; CHECK-NEXT: - Index: 1
87+
; CHECK-NEXT: Name: _start
8888
; CHECK-NEXT: ...

‎lld/test/wasm/call-indirect.ll

+22-17
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ define void @call_ptr(i64 (i64)* %arg) {
5757
; CHECK-NEXT: ParamTypes:
5858
; CHECK-NEXT: - I32
5959
; CHECK-NEXT: - Type: FUNCTION
60-
; CHECK-NEXT: FunctionTypes: [ 0, 3, 1, 3, 4, 3 ]
60+
; CHECK-NEXT: FunctionTypes: [ 3, 0, 3, 1, 3, 4 ]
6161
; CHECK-NEXT: - Type: TABLE
6262
; CHECK-NEXT: Tables:
6363
; CHECK-NEXT: - ElemType: ANYFUNC
@@ -107,50 +107,50 @@ define void @call_ptr(i64 (i64)* %arg) {
107107
; CHECK-NEXT: Index: 2
108108
; CHECK-NEXT: - Name: _start
109109
; CHECK-NEXT: Kind: FUNCTION
110-
; CHECK-NEXT: Index: 3
110+
; CHECK-NEXT: Index: 4
111111
; CHECK-NEXT: - Name: bar
112112
; CHECK-NEXT: Kind: FUNCTION
113-
; CHECK-NEXT: Index: 0
113+
; CHECK-NEXT: Index: 1
114114
; CHECK-NEXT: - Name: call_bar_indirect
115115
; CHECK-NEXT: Kind: FUNCTION
116-
; CHECK-NEXT: Index: 1
116+
; CHECK-NEXT: Index: 2
117117
; CHECK-NEXT: - Name: foo
118118
; CHECK-NEXT: Kind: FUNCTION
119-
; CHECK-NEXT: Index: 2
119+
; CHECK-NEXT: Index: 3
120120
; CHECK-NEXT: - Name: indirect_func
121121
; CHECK-NEXT: Kind: GLOBAL
122122
; CHECK-NEXT: Index: 3
123123
; CHECK-NEXT: - Name: call_ptr
124124
; CHECK-NEXT: Kind: FUNCTION
125-
; CHECK-NEXT: Index: 4
125+
; CHECK-NEXT: Index: 5
126126
; CHECK-NEXT: - Type: ELEM
127127
; CHECK-NEXT: Segments:
128128
; CHECK-NEXT: - Offset:
129129
; CHECK-NEXT: Opcode: I32_CONST
130130
; CHECK-NEXT: Value: 1
131-
; CHECK-NEXT: Functions: [ 0, 2 ]
131+
; CHECK-NEXT: Functions: [ 1, 3 ]
132132
; CHECK-NEXT: - Type: CODE
133133
; CHECK-NEXT: Functions:
134134
; CHECK-NEXT: - Index: 0
135135
; CHECK-NEXT: Locals:
136-
; CHECK-NEXT: Body: 42010B
136+
; CHECK-NEXT: Body: 0B
137137
; CHECK-NEXT: - Index: 1
138138
; CHECK-NEXT: Locals:
139+
; CHECK-NEXT: Body: 42010B
140+
; CHECK-NEXT: - Index: 2
141+
; CHECK-NEXT: Locals:
139142
; CHECK-NEXT: - Type: I32
140143
; CHECK-NEXT: Count: 1
141144
; CHECK-NEXT: Body: 4100280284888080002100410028028088808000118080808000001A2000118180808000001A0B
142-
; CHECK-NEXT: - Index: 2
143-
; CHECK-NEXT: Locals:
144-
; CHECK-NEXT: Body: 41020B
145145
; CHECK-NEXT: - Index: 3
146146
; CHECK-NEXT: Locals:
147-
; CHECK-NEXT: Body: 410028028888808000118180808000001A0B
147+
; CHECK-NEXT: Body: 41020B
148148
; CHECK-NEXT: - Index: 4
149149
; CHECK-NEXT: Locals:
150-
; CHECK-NEXT: Body: 42012000118280808000001A0B
150+
; CHECK-NEXT: Body: 410028028888808000118180808000001A0B
151151
; CHECK-NEXT: - Index: 5
152152
; CHECK-NEXT: Locals:
153-
; CHECK-NEXT: Body: 0B
153+
; CHECK-NEXT: Body: 42012000118280808000001A0B
154154
; CHECK-NEXT: - Type: DATA
155155
; CHECK-NEXT: Segments:
156156
; CHECK-NEXT: - SectionOffset: 7
@@ -163,10 +163,15 @@ define void @call_ptr(i64 (i64)* %arg) {
163163
; CHECK-NEXT: Name: name
164164
; CHECK-NEXT: FunctionNames:
165165
; CHECK-NEXT: - Index: 0
166-
; CHECK-NEXT: Name: bar
166+
; CHECK-NEXT: Name: __wasm_call_ctors
167167
; CHECK-NEXT: - Index: 1
168-
; CHECK-NEXT: Name: call_bar_indirect
168+
; CHECK-NEXT: Name: bar
169169
; CHECK-NEXT: - Index: 2
170-
; CHECK-NEXT: Name: foo
170+
; CHECK-NEXT: Name: call_bar_indirect
171171
; CHECK-NEXT: - Index: 3
172+
; CHECK-NEXT: Name: foo
173+
; CHECK-NEXT: - Index: 4
172174
; CHECK-NEXT: Name: _start
175+
; CHECK-NEXT: - Index: 5
176+
; CHECK-NEXT: Name: call_ptr
177+
; CHECK-NEXT: ...

‎lld/test/wasm/comdats.ll

+9-9
Original file line numberDiff line numberDiff line change
@@ -53,42 +53,42 @@ entry:
5353
; CHECK-NEXT: Index: 2
5454
; CHECK-NEXT: - Name: _start
5555
; CHECK-NEXT: Kind: FUNCTION
56-
; CHECK-NEXT: Index: 0
56+
; CHECK-NEXT: Index: 1
5757
; CHECK-NEXT: - Name: inlineFn
5858
; CHECK-NEXT: Kind: FUNCTION
59-
; CHECK-NEXT: Index: 1
59+
; CHECK-NEXT: Index: 2
6060
; CHECK-NEXT: - Name: constantData
6161
; CHECK-NEXT: Kind: GLOBAL
6262
; CHECK-NEXT: Index: 3
6363
; CHECK-NEXT: - Name: callInline1
6464
; CHECK-NEXT: Kind: FUNCTION
65-
; CHECK-NEXT: Index: 2
65+
; CHECK-NEXT: Index: 3
6666
; CHECK-NEXT: - Name: callInline2
6767
; CHECK-NEXT: Kind: FUNCTION
68-
; CHECK-NEXT: Index: 3
68+
; CHECK-NEXT: Index: 4
6969
; CHECK-NEXT: - Type: ELEM
7070
; CHECK-NEXT: Segments:
7171
; CHECK-NEXT: - Offset:
7272
; CHECK-NEXT: Opcode: I32_CONST
7373
; CHECK-NEXT: Value: 1
74-
; CHECK-NEXT: Functions: [ 1 ]
74+
; CHECK-NEXT: Functions: [ 2 ]
7575
; CHECK-NEXT: - Type: CODE
7676
; CHECK-NEXT: Functions:
7777
; CHECK-NEXT: - Index: 0
7878
; CHECK-NEXT: Locals:
79-
; CHECK-NEXT: Body: 1081808080001A0B
79+
; CHECK-NEXT: Body: 0B
8080
; CHECK-NEXT: - Index: 1
8181
; CHECK-NEXT: Locals:
82-
; CHECK-NEXT: Body: 4180888080000B
82+
; CHECK-NEXT: Body: 1082808080001A0B
8383
; CHECK-NEXT: - Index: 2
8484
; CHECK-NEXT: Locals:
85-
; CHECK-NEXT: Body: 4181808080000B
85+
; CHECK-NEXT: Body: 4180888080000B
8686
; CHECK-NEXT: - Index: 3
8787
; CHECK-NEXT: Locals:
8888
; CHECK-NEXT: Body: 4181808080000B
8989
; CHECK-NEXT: - Index: 4
9090
; CHECK-NEXT: Locals:
91-
; CHECK-NEXT: Body: 0B
91+
; CHECK-NEXT: Body: 4181808080000B
9292
; CHECK-NEXT: - Type: DATA
9393
; CHECK-NEXT: Segments:
9494
; CHECK-NEXT: - SectionOffset: 7

‎lld/test/wasm/entry.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ entry:
2525
; CHECK-NEXT: Index: 2
2626
; CHECK-NEXT: - Name: entry
2727
; CHECK-NEXT: Kind: FUNCTION
28-
; CHECK-NEXT: Index: 0
28+
; CHECK-NEXT: Index: 1
2929
; CHECK-NEXT: - Type:
3030

3131
; The __wasm_call_ctors is somewhat special. Make sure we can use it

‎lld/test/wasm/export.ll

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ entry:
3030
; CHECK-NEXT: Index: 2
3131
; CHECK-NEXT: - Name: _start
3232
; CHECK-NEXT: Kind: FUNCTION
33-
; CHECK-NEXT: Index: 1
33+
; CHECK-NEXT: Index: 2
3434
; CHECK-NEXT: - Name: hidden_function
3535
; CHECK-NEXT: Kind: FUNCTION
36-
; CHECK-NEXT: Index: 0
36+
; CHECK-NEXT: Index: 1
3737
; CHECK-NEXT: - Type: CODE

‎lld/test/wasm/function-imports-first.ll

+7-7
Original file line numberDiff line numberDiff line change
@@ -24,25 +24,25 @@ declare i32 @ret32(float) local_unnamed_addr #1
2424
; CHECK-NEXT: ParamTypes:
2525
; CHECK-NEXT: - F32
2626
; CHECK: - Type: FUNCTION
27-
; CHECK-NEXT: FunctionTypes: [ 0, 1, 0 ]
27+
; CHECK-NEXT: FunctionTypes: [ 0, 0, 1 ]
2828
; CHECK: - Type: CODE
2929
; CHECK-NEXT: Functions:
3030
; CHECK-NEXT: - Index: 0
3131
; CHECK-NEXT: Locals:
32-
; CHECK-NEXT: Body: 43000000001081808080001A0B
32+
; CHECK-NEXT: Body: 0B
3333
; CHECK-NEXT: - Index: 1
3434
; CHECK-NEXT: Locals:
35-
; CHECK-NEXT: Body: 41000B
35+
; CHECK-NEXT: Body: 43000000001082808080001A0B
3636
; CHECK-NEXT: - Index: 2
3737
; CHECK-NEXT: Locals:
38-
; CHECK-NEXT: Body: 0B
38+
; CHECK-NEXT: Body: 41000B
3939
; CHECK-NEXT: - Type: CUSTOM
4040
; CHECK-NEXT: Name: name
4141
; CHECK-NEXT: FunctionNames:
4242
; CHECK-NEXT: - Index: 0
43-
; CHECK-NEXT: Name: _start
43+
; CHECK-NEXT: Name: __wasm_call_ctors
4444
; CHECK-NEXT: - Index: 1
45-
; CHECK-NEXT: Name: ret32
45+
; CHECK-NEXT: Name: _start
4646
; CHECK-NEXT: - Index: 2
47-
; CHECK-NEXT: Name: __wasm_call_ctors
47+
; CHECK-NEXT: Name: ret32
4848
; CHECK-NEXT: ...

‎lld/test/wasm/function-imports.ll

+7-7
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ declare i32 @ret32(float) local_unnamed_addr #1
1818
; CHECK: - Type: TYPE
1919
; CHECK-NEXT: Signatures:
2020
; CHECK-NEXT: - Index: 0
21-
; CHECK-NEXT: ReturnType: I32
21+
; CHECK-NEXT: ReturnType: NORESULT
2222
; CHECK-NEXT: ParamTypes:
23-
; CHECK-NEXT: - F32
2423
; CHECK-NEXT: - Index: 1
25-
; CHECK-NEXT: ReturnType: NORESULT
24+
; CHECK-NEXT: ReturnType: I32
2625
; CHECK-NEXT: ParamTypes:
26+
; CHECK-NEXT: - F32
2727
; CHECK-NEXT: - Type: FUNCTION
28-
; CHECK-NEXT: FunctionTypes: [ 0, 1, 1 ]
28+
; CHECK-NEXT: FunctionTypes: [ 0, 1, 0 ]
2929
; CHECK: - Type: CODE
3030
; CHECK-NEXT: Functions:
3131
; CHECK: - Index: 0
@@ -34,9 +34,9 @@ declare i32 @ret32(float) local_unnamed_addr #1
3434
; CHECK: Name: name
3535
; CHECK-NEXT: FunctionNames:
3636
; CHECK-NEXT: - Index: 0
37-
; CHECK-NEXT: Name: ret32
37+
; CHECK-NEXT: Name: __wasm_call_ctors
3838
; CHECK-NEXT: - Index: 1
39-
; CHECK-NEXT: Name: _start
39+
; CHECK-NEXT: Name: ret32
4040
; CHECK-NEXT: - Index: 2
41-
; CHECK-NEXT: Name: __wasm_call_ctors
41+
; CHECK-NEXT: Name: _start
4242
; CHECK-NEXT: ...

‎lld/test/wasm/gc-sections.ll

+15-15
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ entry:
3131
; CHECK: - Type: TYPE
3232
; CHECK-NEXT: Signatures:
3333
; CHECK-NEXT: - Index: 0
34-
; CHECK-NEXT: ReturnType: I32
34+
; CHECK-NEXT: ReturnType: NORESULT
3535
; CHECK-NEXT: ParamTypes:
3636
; CHECK-NEXT: - Index: 1
37-
; CHECK-NEXT: ReturnType: NORESULT
37+
; CHECK-NEXT: ReturnType: I32
3838
; CHECK-NEXT: ParamTypes:
3939
; CHECK-NEXT: - Type: FUNCTION
4040

@@ -48,13 +48,13 @@ entry:
4848
; CHECK-NEXT: Content: '02000000'
4949
; CHECK-NEXT: - Type: CUSTOM
5050
; CHECK-NEXT: Name: name
51-
; CHECK-NEXT: FunctionNames:
51+
; CHECK-NEXT: FunctionNames:
5252
; CHECK-NEXT: - Index: 0
53-
; CHECK-NEXT: Name: used_function
53+
; CHECK-NEXT: Name: __wasm_call_ctors
5454
; CHECK-NEXT: - Index: 1
55-
; CHECK-NEXT: Name: _start
55+
; CHECK-NEXT: Name: used_function
5656
; CHECK-NEXT: - Index: 2
57-
; CHECK-NEXT: Name: __wasm_call_ctors
57+
; CHECK-NEXT: Name: _start
5858
; CHECK-NEXT: ...
5959

6060
; RUN: wasm-ld -print-gc-sections --no-gc-sections -o %t1.no-gc.wasm %t.o
@@ -63,13 +63,13 @@ entry:
6363
; NO-GC: - Type: TYPE
6464
; NO-GC-NEXT: Signatures:
6565
; NO-GC-NEXT: - Index: 0
66-
; NO-GC-NEXT: ReturnType: I64
67-
; NO-GC-NEXT: ParamTypes:
66+
; NO-GC-NEXT: ReturnType: NORESULT
67+
; NO-GC-NEXT: ParamTypes:
6868
; NO-GC-NEXT: - Index: 1
69-
; NO-GC-NEXT: ReturnType: I32
69+
; NO-GC-NEXT: ReturnType: I64
7070
; NO-GC-NEXT: ParamTypes:
7171
; NO-GC-NEXT: - Index: 2
72-
; NO-GC-NEXT: ReturnType: NORESULT
72+
; NO-GC-NEXT: ReturnType: I32
7373
; NO-GC-NEXT: ParamTypes:
7474
; NO-GC-NEXT: - Type: FUNCTION
7575

@@ -83,15 +83,15 @@ entry:
8383
; NO-GC-NEXT: Content: '010000000000000002000000'
8484
; NO-GC-NEXT: - Type: CUSTOM
8585
; NO-GC-NEXT: Name: name
86-
; NO-GC-NEXT: FunctionNames:
86+
; NO-GC-NEXT: FunctionNames:
8787
; NO-GC-NEXT: - Index: 0
88-
; NO-GC-NEXT: Name: unused_function
88+
; NO-GC-NEXT: Name: __wasm_call_ctors
8989
; NO-GC-NEXT: - Index: 1
90-
; NO-GC-NEXT: Name: used_function
90+
; NO-GC-NEXT: Name: unused_function
9191
; NO-GC-NEXT: - Index: 2
92-
; NO-GC-NEXT: Name: _start
92+
; NO-GC-NEXT: Name: used_function
9393
; NO-GC-NEXT: - Index: 3
94-
; NO-GC-NEXT: Name: __wasm_call_ctors
94+
; NO-GC-NEXT: Name: _start
9595
; NO-GC-NEXT: ...
9696

9797
; RUN: not wasm-ld --gc-sections --relocatable -o %t1.no-gc.wasm %t.o 2>&1 | FileCheck %s -check-prefix=CHECK-ERROR

‎lld/test/wasm/init-fini.ll

+28-22
Original file line numberDiff line numberDiff line change
@@ -52,50 +52,56 @@ entry:
5252
; CHECK-NEXT: - Offset:
5353
; CHECK-NEXT: Opcode: I32_CONST
5454
; CHECK-NEXT: Value: 1
55-
; CHECK-NEXT: Functions: [ 6, 8, 12, 14, 16 ]
56-
57-
; CHECK: Body: 100010011007100A100D100A100F10001009100A10110B
55+
; CHECK-NEXT: Functions: [ 7, 9, 13, 15, 17 ]
56+
; CHECK-NEXT: - Type: CODE
57+
; CHECK-NEXT: Functions:
58+
; CHECK-NEXT: - Index: 0
59+
; CHECK-NEXT: Locals:
60+
; CHECK-NEXT: Body: 100110021008100B100E100B10101001100A100B10120B
61+
; CHECK: - Index: 18
62+
; CHECK-NEXT: Locals:
63+
; CHECK-NEXT: Body: 024041858080800041004180888080001085808080000D000F0B00000B
5864
; CHECK-NEXT: - Type: CUSTOM
5965
; CHECK-NEXT: Name: name
6066
; CHECK-NEXT: FunctionNames:
6167
; CHECK-NEXT: - Index: 0
62-
; CHECK-NEXT: Name: func1
68+
; CHECK-NEXT: Name: __wasm_call_ctors
6369
; CHECK-NEXT: - Index: 1
64-
; CHECK-NEXT: Name: func2
70+
; CHECK-NEXT: Name: func1
6571
; CHECK-NEXT: - Index: 2
66-
; CHECK-NEXT: Name: func3
72+
; CHECK-NEXT: Name: func2
6773
; CHECK-NEXT: - Index: 3
68-
; CHECK-NEXT: Name: func4
74+
; CHECK-NEXT: Name: func3
6975
; CHECK-NEXT: - Index: 4
70-
; CHECK-NEXT: Name: __cxa_atexit
76+
; CHECK-NEXT: Name: func4
7177
; CHECK-NEXT: - Index: 5
72-
; CHECK-NEXT: Name: _start
78+
; CHECK-NEXT: Name: __cxa_atexit
7379
; CHECK-NEXT: - Index: 6
74-
; CHECK-NEXT: Name: .Lcall_dtors.101
80+
; CHECK-NEXT: Name: _start
7581
; CHECK-NEXT: - Index: 7
76-
; CHECK-NEXT: Name: .Lregister_call_dtors.101
82+
; CHECK-NEXT: Name: .Lcall_dtors.101
7783
; CHECK-NEXT: - Index: 8
78-
; CHECK-NEXT: Name: .Lcall_dtors.1001
84+
; CHECK-NEXT: Name: .Lregister_call_dtors.101
7985
; CHECK-NEXT: - Index: 9
80-
; CHECK-NEXT: Name: .Lregister_call_dtors.1001
86+
; CHECK-NEXT: Name: .Lcall_dtors.1001
8187
; CHECK-NEXT: - Index: 10
82-
; CHECK-NEXT: Name: myctor
88+
; CHECK-NEXT: Name: .Lregister_call_dtors.1001
8389
; CHECK-NEXT: - Index: 11
84-
; CHECK-NEXT: Name: mydtor
90+
; CHECK-NEXT: Name: myctor
8591
; CHECK-NEXT: - Index: 12
86-
; CHECK-NEXT: Name: .Lcall_dtors.101
92+
; CHECK-NEXT: Name: mydtor
8793
; CHECK-NEXT: - Index: 13
88-
; CHECK-NEXT: Name: .Lregister_call_dtors.101
94+
; CHECK-NEXT: Name: .Lcall_dtors.101
8995
; CHECK-NEXT: - Index: 14
90-
; CHECK-NEXT: Name: .Lcall_dtors.202
96+
; CHECK-NEXT: Name: .Lregister_call_dtors.101
9197
; CHECK-NEXT: - Index: 15
92-
; CHECK-NEXT: Name: .Lregister_call_dtors.202
98+
; CHECK-NEXT: Name: .Lcall_dtors.202
9399
; CHECK-NEXT: - Index: 16
94-
; CHECK-NEXT: Name: .Lcall_dtors.2002
100+
; CHECK-NEXT: Name: .Lregister_call_dtors.202
95101
; CHECK-NEXT: - Index: 17
96-
; CHECK-NEXT: Name: .Lregister_call_dtors.2002
102+
; CHECK-NEXT: Name: .Lcall_dtors.2002
97103
; CHECK-NEXT: - Index: 18
98-
; CHECK-NEXT: Name: __wasm_call_ctors
104+
; CHECK-NEXT: Name: .Lregister_call_dtors.2002
99105
; CHECK-NEXT: ...
100106

101107

‎lld/test/wasm/load-undefined.test

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@
2121
; CHECK-NEXT: Index: 2
2222
; CHECK-NEXT: - Name: _start
2323
; CHECK-NEXT: Kind: FUNCTION
24-
; CHECK-NEXT: Index: 0
24+
; CHECK-NEXT: Index: 1
2525
; CHECK-NEXT: - Name: ret32
2626
; CHECK-NEXT: Kind: FUNCTION
27-
; CHECK-NEXT: Index: 1
27+
; CHECK-NEXT: Index: 2
2828
; CHECK-NEXT: - Name: ret64
2929
; CHECK-NEXT: Kind: FUNCTION
30-
; CHECK-NEXT: Index: 2
30+
; CHECK-NEXT: Index: 3
3131
; CHECK-NEXT: - Type:
3232

3333

‎lld/test/wasm/local-symbols.ll

+10-10
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ entry:
2626
; CHECK-NEXT: - Type: TYPE
2727
; CHECK-NEXT: Signatures:
2828
; CHECK-NEXT: - Index: 0
29-
; CHECK-NEXT: ReturnType: I32
29+
; CHECK-NEXT: ReturnType: NORESULT
3030
; CHECK-NEXT: ParamTypes:
3131
; CHECK-NEXT: - Index: 1
32-
; CHECK-NEXT: ReturnType: NORESULT
32+
; CHECK-NEXT: ReturnType: I32
3333
; CHECK-NEXT: ParamTypes:
3434
; CHECK-NEXT: - Type: FUNCTION
35-
; CHECK-NEXT: FunctionTypes: [ 0, 1, 1 ]
35+
; CHECK-NEXT: FunctionTypes: [ 0, 1, 0 ]
3636
; CHECK-NEXT: - Type: TABLE
3737
; CHECK-NEXT: Tables:
3838
; CHECK-NEXT: - ElemType: ANYFUNC
@@ -82,21 +82,21 @@ entry:
8282
; CHECK-NEXT: Index: 2
8383
; CHECK-NEXT: - Name: _start
8484
; CHECK-NEXT: Kind: FUNCTION
85-
; CHECK-NEXT: Index: 1
85+
; CHECK-NEXT: Index: 2
8686
; CHECK-NEXT: - Name: foo
8787
; CHECK-NEXT: Kind: GLOBAL
8888
; CHECK-NEXT: Index: 3
8989
; CHECK-NEXT: - Type: CODE
9090
; CHECK-NEXT: Functions:
9191
; CHECK-NEXT: - Index: 0
9292
; CHECK-NEXT: Locals:
93-
; CHECK-NEXT: Body: 4100280284888080000B
93+
; CHECK-NEXT: Body: 0B
9494
; CHECK-NEXT: - Index: 1
9595
; CHECK-NEXT: Locals:
96-
; CHECK-NEXT: Body: 1080808080001A0B
96+
; CHECK-NEXT: Body: 4100280284888080000B
9797
; CHECK-NEXT: - Index: 2
9898
; CHECK-NEXT: Locals:
99-
; CHECK-NEXT: Body: 0B
99+
; CHECK-NEXT: Body: 1081808080001A0B
100100
; CHECK-NEXT: - Type: DATA
101101
; CHECK-NEXT: Segments:
102102
; CHECK-NEXT: - SectionOffset: 7
@@ -109,9 +109,9 @@ entry:
109109
; CHECK-NEXT: Name: name
110110
; CHECK-NEXT: FunctionNames:
111111
; CHECK-NEXT: - Index: 0
112-
; CHECK-NEXT: Name: baz
112+
; CHECK-NEXT: Name: __wasm_call_ctors
113113
; CHECK-NEXT: - Index: 1
114-
; CHECK-NEXT: Name: _start
114+
; CHECK-NEXT: Name: baz
115115
; CHECK-NEXT: - Index: 2
116-
; CHECK-NEXT: Name: __wasm_call_ctors
116+
; CHECK-NEXT: Name: _start
117117
; CHECK-NEXT: ...

‎lld/test/wasm/locals-duplicate.test

+53-53
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
; CHECK-NEXT: - Type: TYPE
1111
; CHECK-NEXT: Signatures:
1212
; CHECK-NEXT: - Index: 0
13-
; CHECK-NEXT: ReturnType: I32
13+
; CHECK-NEXT: ReturnType: NORESULT
1414
; CHECK-NEXT: ParamTypes:
1515
; CHECK-NEXT: - Index: 1
16-
; CHECK-NEXT: ReturnType: NORESULT
16+
; CHECK-NEXT: ReturnType: I32
1717
; CHECK-NEXT: ParamTypes:
1818
; CHECK-NEXT: - Type: FUNCTION
19-
; CHECK-NEXT: FunctionTypes: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
20-
; CHECK-NEXT: 0, 0, 1 ]
19+
; CHECK-NEXT: FunctionTypes: [ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
20+
; CHECK-NEXT: 1, 1, 1 ]
2121
; CHECK-NEXT: - Type: TABLE
2222
; CHECK-NEXT: Tables:
2323
; CHECK-NEXT: - ElemType: ANYFUNC
@@ -73,63 +73,63 @@
7373
; CHECK-NEXT: Index: 2
7474
; CHECK-NEXT: - Name: colliding_func2
7575
; CHECK-NEXT: Kind: FUNCTION
76-
; CHECK-NEXT: Index: 1
76+
; CHECK-NEXT: Index: 2
7777
; CHECK-NEXT: - Name: get_global1A
7878
; CHECK-NEXT: Kind: FUNCTION
79-
; CHECK-NEXT: Index: 3
79+
; CHECK-NEXT: Index: 4
8080
; CHECK-NEXT: - Name: get_global2A
8181
; CHECK-NEXT: Kind: FUNCTION
82-
; CHECK-NEXT: Index: 4
82+
; CHECK-NEXT: Index: 5
8383
; CHECK-NEXT: - Name: colliding_global2
8484
; CHECK-NEXT: Kind: GLOBAL
8585
; CHECK-NEXT: Index: 3
8686
; CHECK-NEXT: - Name: get_global3A
8787
; CHECK-NEXT: Kind: FUNCTION
88-
; CHECK-NEXT: Index: 5
88+
; CHECK-NEXT: Index: 6
8989
; CHECK-NEXT: - Name: get_func1A
9090
; CHECK-NEXT: Kind: FUNCTION
91-
; CHECK-NEXT: Index: 6
91+
; CHECK-NEXT: Index: 7
9292
; CHECK-NEXT: - Name: get_func2A
9393
; CHECK-NEXT: Kind: FUNCTION
94-
; CHECK-NEXT: Index: 7
94+
; CHECK-NEXT: Index: 8
9595
; CHECK-NEXT: - Name: get_func3A
9696
; CHECK-NEXT: Kind: FUNCTION
97-
; CHECK-NEXT: Index: 8
97+
; CHECK-NEXT: Index: 9
9898
; CHECK-NEXT: - Name: colliding_func1
9999
; CHECK-NEXT: Kind: FUNCTION
100-
; CHECK-NEXT: Index: 9
100+
; CHECK-NEXT: Index: 10
101101
; CHECK-NEXT: - Name: get_global1B
102102
; CHECK-NEXT: Kind: FUNCTION
103-
; CHECK-NEXT: Index: 12
103+
; CHECK-NEXT: Index: 13
104104
; CHECK-NEXT: - Name: colliding_global1
105105
; CHECK-NEXT: Kind: GLOBAL
106106
; CHECK-NEXT: Index: 4
107107
; CHECK-NEXT: - Name: get_global2B
108108
; CHECK-NEXT: Kind: FUNCTION
109-
; CHECK-NEXT: Index: 13
109+
; CHECK-NEXT: Index: 14
110110
; CHECK-NEXT: - Name: get_global3B
111111
; CHECK-NEXT: Kind: FUNCTION
112-
; CHECK-NEXT: Index: 14
112+
; CHECK-NEXT: Index: 15
113113
; CHECK-NEXT: - Name: get_func1B
114114
; CHECK-NEXT: Kind: FUNCTION
115-
; CHECK-NEXT: Index: 15
115+
; CHECK-NEXT: Index: 16
116116
; CHECK-NEXT: - Name: get_func2B
117117
; CHECK-NEXT: Kind: FUNCTION
118-
; CHECK-NEXT: Index: 16
118+
; CHECK-NEXT: Index: 17
119119
; CHECK-NEXT: - Name: get_func3B
120120
; CHECK-NEXT: Kind: FUNCTION
121-
; CHECK-NEXT: Index: 17
121+
; CHECK-NEXT: Index: 18
122122
; CHECK-NEXT: - Type: ELEM
123123
; CHECK-NEXT: Segments:
124124
; CHECK-NEXT: - Offset:
125125
; CHECK-NEXT: Opcode: I32_CONST
126126
; CHECK-NEXT: Value: 1
127-
; CHECK-NEXT: Functions: [ 0, 1, 2, 9, 10, 11 ]
127+
; CHECK-NEXT: Functions: [ 1, 2, 3, 10, 11, 12 ]
128128
; CHECK-NEXT: - Type: CODE
129129
; CHECK-NEXT: Functions:
130130
; CHECK-NEXT: - Index: 0
131131
; CHECK-NEXT: Locals:
132-
; CHECK-NEXT: Body: 41020B
132+
; CHECK-NEXT: Body: 0B
133133
; CHECK-NEXT: - Index: 1
134134
; CHECK-NEXT: Locals:
135135
; CHECK-NEXT: Body: 41020B
@@ -138,25 +138,25 @@
138138
; CHECK-NEXT: Body: 41020B
139139
; CHECK-NEXT: - Index: 3
140140
; CHECK-NEXT: Locals:
141-
; CHECK-NEXT: Body: 4180888080000B
141+
; CHECK-NEXT: Body: 41020B
142142
; CHECK-NEXT: - Index: 4
143143
; CHECK-NEXT: Locals:
144-
; CHECK-NEXT: Body: 4184888080000B
144+
; CHECK-NEXT: Body: 4180888080000B
145145
; CHECK-NEXT: - Index: 5
146146
; CHECK-NEXT: Locals:
147-
; CHECK-NEXT: Body: 4188888080000B
147+
; CHECK-NEXT: Body: 4184888080000B
148148
; CHECK-NEXT: - Index: 6
149149
; CHECK-NEXT: Locals:
150-
; CHECK-NEXT: Body: 4181808080000B
150+
; CHECK-NEXT: Body: 4188888080000B
151151
; CHECK-NEXT: - Index: 7
152152
; CHECK-NEXT: Locals:
153-
; CHECK-NEXT: Body: 4182808080000B
153+
; CHECK-NEXT: Body: 4181808080000B
154154
; CHECK-NEXT: - Index: 8
155155
; CHECK-NEXT: Locals:
156-
; CHECK-NEXT: Body: 4183808080000B
156+
; CHECK-NEXT: Body: 4182808080000B
157157
; CHECK-NEXT: - Index: 9
158158
; CHECK-NEXT: Locals:
159-
; CHECK-NEXT: Body: 41020B
159+
; CHECK-NEXT: Body: 4183808080000B
160160
; CHECK-NEXT: - Index: 10
161161
; CHECK-NEXT: Locals:
162162
; CHECK-NEXT: Body: 41020B
@@ -165,25 +165,25 @@
165165
; CHECK-NEXT: Body: 41020B
166166
; CHECK-NEXT: - Index: 12
167167
; CHECK-NEXT: Locals:
168-
; CHECK-NEXT: Body: 418C888080000B
168+
; CHECK-NEXT: Body: 41020B
169169
; CHECK-NEXT: - Index: 13
170170
; CHECK-NEXT: Locals:
171-
; CHECK-NEXT: Body: 4190888080000B
171+
; CHECK-NEXT: Body: 418C888080000B
172172
; CHECK-NEXT: - Index: 14
173173
; CHECK-NEXT: Locals:
174-
; CHECK-NEXT: Body: 4194888080000B
174+
; CHECK-NEXT: Body: 4190888080000B
175175
; CHECK-NEXT: - Index: 15
176176
; CHECK-NEXT: Locals:
177-
; CHECK-NEXT: Body: 4184808080000B
177+
; CHECK-NEXT: Body: 4194888080000B
178178
; CHECK-NEXT: - Index: 16
179179
; CHECK-NEXT: Locals:
180-
; CHECK-NEXT: Body: 4185808080000B
180+
; CHECK-NEXT: Body: 4184808080000B
181181
; CHECK-NEXT: - Index: 17
182182
; CHECK-NEXT: Locals:
183-
; CHECK-NEXT: Body: 4186808080000B
183+
; CHECK-NEXT: Body: 4185808080000B
184184
; CHECK-NEXT: - Index: 18
185185
; CHECK-NEXT: Locals:
186-
; CHECK-NEXT: Body: 0B
186+
; CHECK-NEXT: Body: 4186808080000B
187187
; CHECK-NEXT: - Type: DATA
188188
; CHECK-NEXT: Segments:
189189
; CHECK-NEXT: - SectionOffset: 7
@@ -196,43 +196,43 @@
196196
; CHECK-NEXT: Name: name
197197
; CHECK-NEXT: FunctionNames:
198198
; CHECK-NEXT: - Index: 0
199-
; CHECK-NEXT: Name: colliding_func1
199+
; CHECK-NEXT: Name: __wasm_call_ctors
200200
; CHECK-NEXT: - Index: 1
201-
; CHECK-NEXT: Name: colliding_func2
201+
; CHECK-NEXT: Name: colliding_func1
202202
; CHECK-NEXT: - Index: 2
203-
; CHECK-NEXT: Name: colliding_func3
203+
; CHECK-NEXT: Name: colliding_func2
204204
; CHECK-NEXT: - Index: 3
205-
; CHECK-NEXT: Name: get_global1A
205+
; CHECK-NEXT: Name: colliding_func3
206206
; CHECK-NEXT: - Index: 4
207-
; CHECK-NEXT: Name: get_global2A
207+
; CHECK-NEXT: Name: get_global1A
208208
; CHECK-NEXT: - Index: 5
209-
; CHECK-NEXT: Name: get_global3A
209+
; CHECK-NEXT: Name: get_global2A
210210
; CHECK-NEXT: - Index: 6
211-
; CHECK-NEXT: Name: get_func1A
211+
; CHECK-NEXT: Name: get_global3A
212212
; CHECK-NEXT: - Index: 7
213-
; CHECK-NEXT: Name: get_func2A
213+
; CHECK-NEXT: Name: get_func1A
214214
; CHECK-NEXT: - Index: 8
215-
; CHECK-NEXT: Name: get_func3A
215+
; CHECK-NEXT: Name: get_func2A
216216
; CHECK-NEXT: - Index: 9
217-
; CHECK-NEXT: Name: colliding_func1
217+
; CHECK-NEXT: Name: get_func3A
218218
; CHECK-NEXT: - Index: 10
219-
; CHECK-NEXT: Name: colliding_func2
219+
; CHECK-NEXT: Name: colliding_func1
220220
; CHECK-NEXT: - Index: 11
221-
; CHECK-NEXT: Name: colliding_func3
221+
; CHECK-NEXT: Name: colliding_func2
222222
; CHECK-NEXT: - Index: 12
223-
; CHECK-NEXT: Name: get_global1B
223+
; CHECK-NEXT: Name: colliding_func3
224224
; CHECK-NEXT: - Index: 13
225-
; CHECK-NEXT: Name: get_global2B
225+
; CHECK-NEXT: Name: get_global1B
226226
; CHECK-NEXT: - Index: 14
227-
; CHECK-NEXT: Name: get_global3B
227+
; CHECK-NEXT: Name: get_global2B
228228
; CHECK-NEXT: - Index: 15
229-
; CHECK-NEXT: Name: get_func1B
229+
; CHECK-NEXT: Name: get_global3B
230230
; CHECK-NEXT: - Index: 16
231-
; CHECK-NEXT: Name: get_func2B
231+
; CHECK-NEXT: Name: get_func1B
232232
; CHECK-NEXT: - Index: 17
233-
; CHECK-NEXT: Name: get_func3B
233+
; CHECK-NEXT: Name: get_func2B
234234
; CHECK-NEXT: - Index: 18
235-
; CHECK-NEXT: Name: __wasm_call_ctors
235+
; CHECK-NEXT: Name: get_func3B
236236
; CHECK-NEXT: ...
237237

238238

‎lld/test/wasm/undefined-weak-call.ll

+13-13
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,17 @@ define i32 @callWeakFuncs() {
2929
; CHECK-NEXT: - Type: TYPE
3030
; CHECK-NEXT: Signatures:
3131
; CHECK-NEXT: - Index: 0
32-
; CHECK-NEXT: ReturnType: I32
32+
; CHECK-NEXT: ReturnType: NORESULT
3333
; CHECK-NEXT: ParamTypes:
3434
; CHECK-NEXT: - Index: 1
3535
; CHECK-NEXT: ReturnType: NORESULT
3636
; CHECK-NEXT: ParamTypes:
37+
; CHECK-NEXT: - I32
3738
; CHECK-NEXT: - Index: 2
38-
; CHECK-NEXT: ReturnType: NORESULT
39+
; CHECK-NEXT: ReturnType: I32
3940
; CHECK-NEXT: ParamTypes:
40-
; CHECK-NEXT: - I32
4141
; CHECK-NEXT: - Type: FUNCTION
42-
; CHECK-NEXT: FunctionTypes: [ 0, 1, 1, 1, 2 ]
42+
; CHECK-NEXT: FunctionTypes: [ 0, 0, 0, 1, 2 ]
4343
; CHECK-NEXT: - Type: TABLE
4444
; CHECK-NEXT: Tables:
4545
; CHECK-NEXT: - ElemType: ANYFUNC
@@ -83,15 +83,15 @@ define i32 @callWeakFuncs() {
8383
; CHECK-NEXT: Index: 2
8484
; CHECK-NEXT: - Name: callWeakFuncs
8585
; CHECK-NEXT: Kind: FUNCTION
86-
; CHECK-NEXT: Index: 0
86+
; CHECK-NEXT: Index: 4
8787
; CHECK-NEXT: - Type: CODE
8888
; CHECK-NEXT: Functions:
8989
; CHECK-NEXT: - Index: 0
9090
; CHECK-NEXT: Locals:
91-
; CHECK-NEXT: Body: 10828080800010838080800041021084808080004180808080004180808080006A0B
91+
; CHECK-NEXT: Body: 0B
9292
; CHECK-NEXT: - Index: 1
9393
; CHECK-NEXT: Locals:
94-
; CHECK-NEXT: Body: 0B
94+
; CHECK-NEXT: Body: 000B
9595
; CHECK-NEXT: - Index: 2
9696
; CHECK-NEXT: Locals:
9797
; CHECK-NEXT: Body: 000B
@@ -100,18 +100,18 @@ define i32 @callWeakFuncs() {
100100
; CHECK-NEXT: Body: 000B
101101
; CHECK-NEXT: - Index: 4
102102
; CHECK-NEXT: Locals:
103-
; CHECK-NEXT: Body: 000B
103+
; CHECK-NEXT: Body: 10818080800010828080800041021083808080004180808080004180808080006A0B
104104
; CHECK-NEXT: - Type: CUSTOM
105105
; CHECK-NEXT: Name: name
106106
; CHECK-NEXT: FunctionNames:
107107
; CHECK-NEXT: - Index: 0
108-
; CHECK-NEXT: Name: callWeakFuncs
109-
; CHECK-NEXT: - Index: 1
110108
; CHECK-NEXT: Name: __wasm_call_ctors
111-
; CHECK-NEXT: - Index: 2
109+
; CHECK-NEXT: - Index: 1
112110
; CHECK-NEXT: Name: undefined function weakFunc1
113-
; CHECK-NEXT: - Index: 3
111+
; CHECK-NEXT: - Index: 2
114112
; CHECK-NEXT: Name: undefined function weakFunc2
115-
; CHECK-NEXT: - Index: 4
113+
; CHECK-NEXT: - Index: 3
116114
; CHECK-NEXT: Name: undefined function weakFunc3
115+
; CHECK-NEXT: - Index: 4
116+
; CHECK-NEXT: Name: callWeakFuncs
117117
; CHECK-NEXT: ...

‎lld/test/wasm/visibility-hidden.ll

+3-3
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@ entry:
4444
; CHECK-NEXT: Index: 2
4545
; CHECK-NEXT: - Name: _start
4646
; CHECK-NEXT: Kind: FUNCTION
47-
; CHECK-NEXT: Index: 2
47+
; CHECK-NEXT: Index: 3
4848
; CHECK-NEXT: - Name: objectDefault
4949
; CHECK-NEXT: Kind: FUNCTION
50-
; CHECK-NEXT: Index: 1
50+
; CHECK-NEXT: Index: 2
5151
; CHECK-NEXT: - Name: archiveDefault
5252
; CHECK-NEXT: Kind: FUNCTION
53-
; CHECK-NEXT: Index: 4
53+
; CHECK-NEXT: Index: 5
5454
; CHECK-NEXT: - Type:

‎lld/test/wasm/weak-alias-overide.ll

+29-29
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ entry:
2626
; CHECK-NEXT: - Type: TYPE
2727
; CHECK-NEXT: Signatures:
2828
; CHECK-NEXT: - Index: 0
29-
; CHECK-NEXT: ReturnType: I32
29+
; CHECK-NEXT: ReturnType: NORESULT
3030
; CHECK-NEXT: ParamTypes:
3131
; CHECK-NEXT: - Index: 1
32-
; CHECK-NEXT: ReturnType: NORESULT
32+
; CHECK-NEXT: ReturnType: I32
3333
; CHECK-NEXT: ParamTypes:
3434
; CHECK-NEXT: - Type: FUNCTION
35-
; CHECK-NEXT: FunctionTypes: [ 0, 1, 0, 0, 0, 0, 0, 1 ]
35+
; CHECK-NEXT: FunctionTypes: [ 0, 1, 0, 1, 1, 1, 1, 1 ]
3636
; CHECK-NEXT: - Type: TABLE
3737
; CHECK-NEXT: Tables:
3838
; CHECK-NEXT: - ElemType: ANYFUNC
@@ -76,78 +76,78 @@ entry:
7676
; CHECK-NEXT: Index: 2
7777
; CHECK-NEXT: - Name: _start
7878
; CHECK-NEXT: Kind: FUNCTION
79-
; CHECK-NEXT: Index: 1
79+
; CHECK-NEXT: Index: 2
8080
; CHECK-NEXT: - Name: alias_fn
8181
; CHECK-NEXT: Kind: FUNCTION
82-
; CHECK-NEXT: Index: 0
82+
; CHECK-NEXT: Index: 1
8383
; CHECK-NEXT: - Name: direct_fn
8484
; CHECK-NEXT: Kind: FUNCTION
85-
; CHECK-NEXT: Index: 2
85+
; CHECK-NEXT: Index: 3
8686
; CHECK-NEXT: - Name: call_direct
8787
; CHECK-NEXT: Kind: FUNCTION
88-
; CHECK-NEXT: Index: 3
88+
; CHECK-NEXT: Index: 4
8989
; CHECK-NEXT: - Name: call_alias
9090
; CHECK-NEXT: Kind: FUNCTION
91-
; CHECK-NEXT: Index: 4
91+
; CHECK-NEXT: Index: 5
9292
; CHECK-NEXT: - Name: call_alias_ptr
9393
; CHECK-NEXT: Kind: FUNCTION
94-
; CHECK-NEXT: Index: 5
94+
; CHECK-NEXT: Index: 6
9595
; CHECK-NEXT: - Name: call_direct_ptr
9696
; CHECK-NEXT: Kind: FUNCTION
97-
; CHECK-NEXT: Index: 6
97+
; CHECK-NEXT: Index: 7
9898
; CHECK-NEXT: - Type: ELEM
9999
; CHECK-NEXT: Segments:
100100
; CHECK-NEXT: - Offset:
101101
; CHECK-NEXT: Opcode: I32_CONST
102102
; CHECK-NEXT: Value: 1
103-
; CHECK-NEXT: Functions: [ 0, 2 ]
103+
; CHECK-NEXT: Functions: [ 1, 3 ]
104104
; CHECK-NEXT: - Type: CODE
105105
; CHECK-NEXT: Functions:
106106
; CHECK-NEXT: - Index: 0
107107
; CHECK-NEXT: Locals:
108-
; CHECK-NEXT: Body: 41010B
108+
; CHECK-NEXT: Body: 0B
109109
; CHECK-NEXT: - Index: 1
110110
; CHECK-NEXT: Locals:
111-
; CHECK-NEXT: Body: 1080808080001A0B
111+
; CHECK-NEXT: Body: 41010B
112112
; CHECK-NEXT: - Index: 2
113113
; CHECK-NEXT: Locals:
114-
; CHECK-NEXT: Body: 41000B
114+
; CHECK-NEXT: Body: 1081808080001A0B
115115
; CHECK-NEXT: - Index: 3
116116
; CHECK-NEXT: Locals:
117-
; CHECK-NEXT: Body: 1082808080000B
117+
; CHECK-NEXT: Body: 41000B
118118
; CHECK-NEXT: - Index: 4
119119
; CHECK-NEXT: Locals:
120-
; CHECK-NEXT: Body: 1080808080000B
120+
; CHECK-NEXT: Body: 1083808080000B
121121
; CHECK-NEXT: - Index: 5
122122
; CHECK-NEXT: Locals:
123-
; CHECK-NEXT: - Type: I32
124-
; CHECK-NEXT: Count: 2
125-
; CHECK-NEXT: Body: 23808080800041106B220024808080800020004181808080003602081080808080002101200041106A24808080800020010B
123+
; CHECK-NEXT: Body: 1081808080000B
126124
; CHECK-NEXT: - Index: 6
127125
; CHECK-NEXT: Locals:
128126
; CHECK-NEXT: - Type: I32
129127
; CHECK-NEXT: Count: 2
130-
; CHECK-NEXT: Body: 23808080800041106B220024808080800020004182808080003602081082808080002101200041106A24808080800020010B
128+
; CHECK-NEXT: Body: 23808080800041106B220024808080800020004181808080003602081081808080002101200041106A24808080800020010B
131129
; CHECK-NEXT: - Index: 7
132130
; CHECK-NEXT: Locals:
133-
; CHECK-NEXT: Body: 0B
131+
; CHECK-NEXT: - Type: I32
132+
; CHECK-NEXT: Count: 2
133+
; CHECK-NEXT: Body: 23808080800041106B220024808080800020004182808080003602081083808080002101200041106A24808080800020010B
134134
; CHECK-NEXT: - Type: CUSTOM
135135
; CHECK-NEXT: Name: name
136136
; CHECK-NEXT: FunctionNames:
137137
; CHECK-NEXT: - Index: 0
138-
; CHECK-NEXT: Name: alias_fn
138+
; CHECK-NEXT: Name: __wasm_call_ctors
139139
; CHECK-NEXT: - Index: 1
140-
; CHECK-NEXT: Name: _start
140+
; CHECK-NEXT: Name: alias_fn
141141
; CHECK-NEXT: - Index: 2
142-
; CHECK-NEXT: Name: direct_fn
142+
; CHECK-NEXT: Name: _start
143143
; CHECK-NEXT: - Index: 3
144-
; CHECK-NEXT: Name: call_direct
144+
; CHECK-NEXT: Name: direct_fn
145145
; CHECK-NEXT: - Index: 4
146-
; CHECK-NEXT: Name: call_alias
146+
; CHECK-NEXT: Name: call_direct
147147
; CHECK-NEXT: - Index: 5
148-
; CHECK-NEXT: Name: call_alias_ptr
148+
; CHECK-NEXT: Name: call_alias
149149
; CHECK-NEXT: - Index: 6
150-
; CHECK-NEXT: Name: call_direct_ptr
150+
; CHECK-NEXT: Name: call_alias_ptr
151151
; CHECK-NEXT: - Index: 7
152-
; CHECK-NEXT: Name: __wasm_call_ctors
152+
; CHECK-NEXT: Name: call_direct_ptr
153153
; CHECK-NEXT: ...

‎lld/test/wasm/weak-alias.ll

+25-25
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ entry:
2929
; CHECK-NEXT: ReturnType: I32
3030
; CHECK-NEXT: ParamTypes:
3131
; CHECK-NEXT: - Type: FUNCTION
32-
; CHECK-NEXT: FunctionTypes: [ 0, 1, 1, 1, 1, 1, 0 ]
32+
; CHECK-NEXT: FunctionTypes: [ 0, 0, 1, 1, 1, 1, 1 ]
3333
; CHECK-NEXT: - Type: TABLE
3434
; CHECK-NEXT: Tables:
3535
; CHECK-NEXT: - ElemType: ANYFUNC
@@ -73,75 +73,75 @@ entry:
7373
; CHECK-NEXT: Index: 2
7474
; CHECK-NEXT: - Name: _start
7575
; CHECK-NEXT: Kind: FUNCTION
76-
; CHECK-NEXT: Index: 0
76+
; CHECK-NEXT: Index: 1
7777
; CHECK-NEXT: - Name: alias_fn
7878
; CHECK-NEXT: Kind: FUNCTION
79-
; CHECK-NEXT: Index: 1
79+
; CHECK-NEXT: Index: 2
8080
; CHECK-NEXT: - Name: direct_fn
8181
; CHECK-NEXT: Kind: FUNCTION
82-
; CHECK-NEXT: Index: 1
82+
; CHECK-NEXT: Index: 2
8383
; CHECK-NEXT: - Name: call_direct
8484
; CHECK-NEXT: Kind: FUNCTION
85-
; CHECK-NEXT: Index: 2
85+
; CHECK-NEXT: Index: 3
8686
; CHECK-NEXT: - Name: call_alias
8787
; CHECK-NEXT: Kind: FUNCTION
88-
; CHECK-NEXT: Index: 3
88+
; CHECK-NEXT: Index: 4
8989
; CHECK-NEXT: - Name: call_alias_ptr
9090
; CHECK-NEXT: Kind: FUNCTION
91-
; CHECK-NEXT: Index: 4
91+
; CHECK-NEXT: Index: 5
9292
; CHECK-NEXT: - Name: call_direct_ptr
9393
; CHECK-NEXT: Kind: FUNCTION
94-
; CHECK-NEXT: Index: 5
94+
; CHECK-NEXT: Index: 6
9595
; CHECK-NEXT: - Type: ELEM
9696
; CHECK-NEXT: Segments:
9797
; CHECK-NEXT: - Offset:
9898
; CHECK-NEXT: Opcode: I32_CONST
9999
; CHECK-NEXT: Value: 1
100-
; CHECK-NEXT: Functions: [ 1 ]
100+
; CHECK-NEXT: Functions: [ 2 ]
101101
; CHECK-NEXT: - Type: CODE
102102
; CHECK-NEXT: Functions:
103103
; CHECK-NEXT: - Index: 0
104104
; CHECK-NEXT: Locals:
105-
; CHECK-NEXT: Body: 1081808080001A0B
105+
; CHECK-NEXT: Body: 0B
106106
; CHECK-NEXT: - Index: 1
107107
; CHECK-NEXT: Locals:
108-
; CHECK-NEXT: Body: 41000B
108+
; CHECK-NEXT: Body: 1082808080001A0B
109109
; CHECK-NEXT: - Index: 2
110110
; CHECK-NEXT: Locals:
111-
; CHECK-NEXT: Body: 1081808080000B
111+
; CHECK-NEXT: Body: 41000B
112112
; CHECK-NEXT: - Index: 3
113113
; CHECK-NEXT: Locals:
114-
; CHECK-NEXT: Body: 1081808080000B
114+
; CHECK-NEXT: Body: 1082808080000B
115115
; CHECK-NEXT: - Index: 4
116116
; CHECK-NEXT: Locals:
117-
; CHECK-NEXT: - Type: I32
118-
; CHECK-NEXT: Count: 2
119-
; CHECK-NEXT: Body: 23808080800041106B220024808080800020004181808080003602081081808080002101200041106A24808080800020010B
117+
; CHECK-NEXT: Body: 1082808080000B
120118
; CHECK-NEXT: - Index: 5
121119
; CHECK-NEXT: Locals:
122120
; CHECK-NEXT: - Type: I32
123121
; CHECK-NEXT: Count: 2
124-
; CHECK-NEXT: Body: 23808080800041106B220024808080800020004181808080003602081081808080002101200041106A24808080800020010B
122+
; CHECK-NEXT: Body: 23808080800041106B220024808080800020004181808080003602081082808080002101200041106A24808080800020010B
125123
; CHECK-NEXT: - Index: 6
126124
; CHECK-NEXT: Locals:
127-
; CHECK-NEXT: Body: 0B
125+
; CHECK-NEXT: - Type: I32
126+
; CHECK-NEXT: Count: 2
127+
; CHECK-NEXT: Body: 23808080800041106B220024808080800020004181808080003602081082808080002101200041106A24808080800020010B
128128
; CHECK-NEXT: - Type: CUSTOM
129129
; CHECK-NEXT: Name: name
130130
; CHECK-NEXT: FunctionNames:
131131
; CHECK-NEXT: - Index: 0
132-
; CHECK-NEXT: Name: _start
132+
; CHECK-NEXT: Name: __wasm_call_ctors
133133
; CHECK-NEXT: - Index: 1
134-
; CHECK-NEXT: Name: direct_fn
134+
; CHECK-NEXT: Name: _start
135135
; CHECK-NEXT: - Index: 2
136-
; CHECK-NEXT: Name: call_direct
136+
; CHECK-NEXT: Name: direct_fn
137137
; CHECK-NEXT: - Index: 3
138-
; CHECK-NEXT: Name: call_alias
138+
; CHECK-NEXT: Name: call_direct
139139
; CHECK-NEXT: - Index: 4
140-
; CHECK-NEXT: Name: call_alias_ptr
140+
; CHECK-NEXT: Name: call_alias
141141
; CHECK-NEXT: - Index: 5
142-
; CHECK-NEXT: Name: call_direct_ptr
142+
; CHECK-NEXT: Name: call_alias_ptr
143143
; CHECK-NEXT: - Index: 6
144-
; CHECK-NEXT: Name: __wasm_call_ctors
144+
; CHECK-NEXT: Name: call_direct_ptr
145145
; CHECK-NEXT: ...
146146

147147
; RUN: wasm-ld --check-signatures --relocatable %t.o %t2.o -o %t.reloc.o

‎lld/test/wasm/weak-symbols.ll

+18-18
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ entry:
2929
; CHECK-NEXT: ReturnType: I32
3030
; CHECK-NEXT: ParamTypes:
3131
; CHECK-NEXT: - Type: FUNCTION
32-
; CHECK-NEXT: FunctionTypes: [ 0, 1, 1, 1, 1, 0 ]
32+
; CHECK-NEXT: FunctionTypes: [ 0, 0, 1, 1, 1, 1 ]
3333
; CHECK-NEXT: - Type: TABLE
3434
; CHECK-NEXT: Tables:
3535
; CHECK-NEXT: - ElemType: ANYFUNC
@@ -79,45 +79,45 @@ entry:
7979
; CHECK-NEXT: Index: 2
8080
; CHECK-NEXT: - Name: _start
8181
; CHECK-NEXT: Kind: FUNCTION
82-
; CHECK-NEXT: Index: 0
82+
; CHECK-NEXT: Index: 1
8383
; CHECK-NEXT: - Name: weakFn
8484
; CHECK-NEXT: Kind: FUNCTION
85-
; CHECK-NEXT: Index: 1
85+
; CHECK-NEXT: Index: 2
8686
; CHECK-NEXT: - Name: exportWeak1
8787
; CHECK-NEXT: Kind: FUNCTION
88-
; CHECK-NEXT: Index: 2
88+
; CHECK-NEXT: Index: 3
8989
; CHECK-NEXT: - Name: weakGlobal
9090
; CHECK-NEXT: Kind: GLOBAL
9191
; CHECK-NEXT: Index: 3
9292
; CHECK-NEXT: - Name: exportWeak2
9393
; CHECK-NEXT: Kind: FUNCTION
94-
; CHECK-NEXT: Index: 4
94+
; CHECK-NEXT: Index: 5
9595
; CHECK-NEXT: - Type: ELEM
9696
; CHECK-NEXT: Segments:
9797
; CHECK-NEXT: - Offset:
9898
; CHECK-NEXT: Opcode: I32_CONST
9999
; CHECK-NEXT: Value: 1
100-
; CHECK-NEXT: Functions: [ 1 ]
100+
; CHECK-NEXT: Functions: [ 2 ]
101101
; CHECK-NEXT: - Type: CODE
102102
; CHECK-NEXT: Functions:
103103
; CHECK-NEXT: - Index: 0
104104
; CHECK-NEXT: Locals:
105-
; CHECK-NEXT: Body: 1081808080001A0B
105+
; CHECK-NEXT: Body: 0B
106106
; CHECK-NEXT: - Index: 1
107107
; CHECK-NEXT: Locals:
108-
; CHECK-NEXT: Body: 41010B
108+
; CHECK-NEXT: Body: 1082808080001A0B
109109
; CHECK-NEXT: - Index: 2
110110
; CHECK-NEXT: Locals:
111-
; CHECK-NEXT: Body: 4181808080000B
111+
; CHECK-NEXT: Body: 41010B
112112
; CHECK-NEXT: - Index: 3
113113
; CHECK-NEXT: Locals:
114-
; CHECK-NEXT: Body: 41020B
114+
; CHECK-NEXT: Body: 4181808080000B
115115
; CHECK-NEXT: - Index: 4
116116
; CHECK-NEXT: Locals:
117-
; CHECK-NEXT: Body: 4181808080000B
117+
; CHECK-NEXT: Body: 41020B
118118
; CHECK-NEXT: - Index: 5
119119
; CHECK-NEXT: Locals:
120-
; CHECK-NEXT: Body: 0B
120+
; CHECK-NEXT: Body: 4181808080000B
121121
; CHECK-NEXT: - Type: DATA
122122
; CHECK-NEXT: Segments:
123123
; CHECK-NEXT: - SectionOffset: 7
@@ -130,15 +130,15 @@ entry:
130130
; CHECK-NEXT: Name: name
131131
; CHECK-NEXT: FunctionNames:
132132
; CHECK-NEXT: - Index: 0
133-
; CHECK-NEXT: Name: _start
133+
; CHECK-NEXT: Name: __wasm_call_ctors
134134
; CHECK-NEXT: - Index: 1
135-
; CHECK-NEXT: Name: weakFn
135+
; CHECK-NEXT: Name: _start
136136
; CHECK-NEXT: - Index: 2
137-
; CHECK-NEXT: Name: exportWeak1
138-
; CHECK-NEXT: - Index: 3
139137
; CHECK-NEXT: Name: weakFn
138+
; CHECK-NEXT: - Index: 3
139+
; CHECK-NEXT: Name: exportWeak1
140140
; CHECK-NEXT: - Index: 4
141-
; CHECK-NEXT: Name: exportWeak2
141+
; CHECK-NEXT: Name: weakFn
142142
; CHECK-NEXT: - Index: 5
143-
; CHECK-NEXT: Name: __wasm_call_ctors
143+
; CHECK-NEXT: Name: exportWeak2
144144
; CHECK-NEXT: ...

‎lld/test/wasm/weak-undefined.ll

+9-9
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ entry:
3333
; CHECK-NEXT: - Type: TYPE
3434
; CHECK-NEXT: Signatures:
3535
; CHECK-NEXT: - Index: 0
36-
; CHECK-NEXT: ReturnType: I32
36+
; CHECK-NEXT: ReturnType: NORESULT
3737
; CHECK-NEXT: ParamTypes:
3838
; CHECK-NEXT: - Index: 1
39-
; CHECK-NEXT: ReturnType: NORESULT
39+
; CHECK-NEXT: ReturnType: I32
4040
; CHECK-NEXT: ParamTypes:
4141
; CHECK-NEXT: - Type: FUNCTION
42-
; CHECK-NEXT: FunctionTypes: [ 0, 0, 1, 1 ]
42+
; CHECK-NEXT: FunctionTypes: [ 0, 1, 1, 0 ]
4343
; CHECK-NEXT: - Type: TABLE
4444
; CHECK-NEXT: Tables:
4545
; CHECK-NEXT: - ElemType: ANYFUNC
@@ -83,25 +83,25 @@ entry:
8383
; CHECK-NEXT: Index: 2
8484
; CHECK-NEXT: - Name: _start
8585
; CHECK-NEXT: Kind: FUNCTION
86-
; CHECK-NEXT: Index: 2
86+
; CHECK-NEXT: Index: 3
8787
; CHECK-NEXT: - Name: get_address_of_foo
8888
; CHECK-NEXT: Kind: FUNCTION
89-
; CHECK-NEXT: Index: 0
89+
; CHECK-NEXT: Index: 1
9090
; CHECK-NEXT: - Name: get_address_of_global_var
9191
; CHECK-NEXT: Kind: FUNCTION
92-
; CHECK-NEXT: Index: 1
92+
; CHECK-NEXT: Index: 2
9393
; CHECK-NEXT: - Type: CODE
9494
; CHECK-NEXT: Functions:
9595
; CHECK-NEXT: - Index: 0
9696
; CHECK-NEXT: Locals:
97-
; CHECK-NEXT: Body: 4180808080000B
97+
; CHECK-NEXT: Body: 0B
9898
; CHECK-NEXT: - Index: 1
9999
; CHECK-NEXT: Locals:
100100
; CHECK-NEXT: Body: 4180808080000B
101101
; CHECK-NEXT: - Index: 2
102102
; CHECK-NEXT: Locals:
103-
; CHECK-NEXT: Body: 1081808080001A0B
103+
; CHECK-NEXT: Body: 4180808080000B
104104
; CHECK-NEXT: - Index: 3
105105
; CHECK-NEXT: Locals:
106-
; CHECK-NEXT: Body: 0B
106+
; CHECK-NEXT: Body: 1082808080001A0B
107107
; CHECK-NEXT: ...

‎lld/wasm/Writer.cpp

+3-5
Original file line numberDiff line numberDiff line change
@@ -757,17 +757,15 @@ void Writer::assignIndexes() {
757757
Func->setOutputIndex(FunctionIndex++);
758758
};
759759

760+
for (InputFunction *Func : Symtab->SyntheticFunctions)
761+
AddDefinedFunction(Func);
762+
760763
for (ObjFile *File : Symtab->ObjectFiles) {
761764
DEBUG(dbgs() << "Functions: " << File->getName() << "\n");
762765
for (InputFunction *Func : File->Functions)
763766
AddDefinedFunction(Func);
764767
}
765768

766-
// TODO Move synthetic functions to come before (so __wasm_call_ctors can be
767-
// compiled immediately by the browser). Will reorder tests.
768-
for (InputFunction *Func : Symtab->SyntheticFunctions)
769-
AddDefinedFunction(Func);
770-
771769
uint32_t TableIndex = kInitialTableOffset;
772770
auto HandleRelocs = [&](InputChunk *Chunk) {
773771
if (!Chunk->Live)

0 commit comments

Comments
 (0)
Please sign in to comment.