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

Lines changed: 4 additions & 4 deletions
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

Lines changed: 22 additions & 17 deletions
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

Lines changed: 9 additions & 9 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 7 additions & 7 deletions
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

Lines changed: 7 additions & 7 deletions
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

Lines changed: 15 additions & 15 deletions
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

0 commit comments

Comments
 (0)
Please sign in to comment.