aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Lively <tlively@google.com>2019-10-18 20:27:30 +0000
committerThomas Lively <tlively@google.com>2019-10-18 20:27:30 +0000
commit85c8ee18394b0813d1d5a3992e3eb2df8657af23 (patch)
tree987bccf550fbc219d448eea403b135ef51da857a
parentf6f221b0d3aff14f3a94a3c54eb56d9d3a244923 (diff)
[WebAssembly] Allow multivalue signatures in object files
Summary: Also changes the wasm YAML format to reflect the possibility of having multiple return types and to put the returns after the params for consistency with the binary encoding. Reviewers: aheejin, sbc100 Subscribers: dschuff, jgravelle-google, hiraditya, sunfish, arphaman, rupprecht, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D69156 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@375283 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--test/wasm/Inputs/globals.yaml3
-rw-r--r--test/wasm/Inputs/undefined-globals.yaml3
-rw-r--r--test/wasm/alias.ll2
-rw-r--r--test/wasm/call-indirect.ll13
-rw-r--r--test/wasm/event-section.ll4
-rw-r--r--test/wasm/function-imports-first.ll7
-rw-r--r--test/wasm/function-imports.ll5
-rw-r--r--test/wasm/function-index.test6
-rw-r--r--test/wasm/gc-sections.ll35
-rw-r--r--test/wasm/local-symbols.ll5
-rw-r--r--test/wasm/locals-duplicate.test10
-rw-r--r--test/wasm/relocatable.ll7
-rw-r--r--test/wasm/stack-pointer.ll3
-rw-r--r--test/wasm/undefined-weak-call.ll7
-rw-r--r--test/wasm/weak-alias-overide.ll9
-rw-r--r--test/wasm/weak-alias.ll16
-rw-r--r--test/wasm/weak-symbols.ll9
-rw-r--r--test/wasm/weak-undefined.ll9
18 files changed, 89 insertions, 64 deletions
diff --git a/test/wasm/Inputs/globals.yaml b/test/wasm/Inputs/globals.yaml
index 6f6322627..4f5d0bef6 100644
--- a/test/wasm/Inputs/globals.yaml
+++ b/test/wasm/Inputs/globals.yaml
@@ -5,8 +5,9 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: I64
ParamTypes:
+ ReturnTypes:
+ - I64
- Type: FUNCTION
FunctionTypes: [ 0 ]
- Type: GLOBAL
diff --git a/test/wasm/Inputs/undefined-globals.yaml b/test/wasm/Inputs/undefined-globals.yaml
index fd5a2361c..41bc64356 100644
--- a/test/wasm/Inputs/undefined-globals.yaml
+++ b/test/wasm/Inputs/undefined-globals.yaml
@@ -5,8 +5,9 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: I64
ParamTypes:
+ ReturnTypes:
+ - I64
- Type: IMPORT
Imports:
- Module: env
diff --git a/test/wasm/alias.ll b/test/wasm/alias.ll
index e20e64873..9927ba4c2 100644
--- a/test/wasm/alias.ll
+++ b/test/wasm/alias.ll
@@ -19,8 +19,8 @@ entry:
; CHECK-NEXT: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: NORESULT
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Type: FUNCTION
; CHECK-NEXT: FunctionTypes: [ 0 ]
; CHECK-NEXT: - Type: TABLE
diff --git a/test/wasm/call-indirect.ll b/test/wasm/call-indirect.ll
index b0bbc4aeb..2eb134a97 100644
--- a/test/wasm/call-indirect.ll
+++ b/test/wasm/call-indirect.ll
@@ -40,22 +40,25 @@ define void @call_ptr(i64 (i64)* %arg) {
; CHECK-NEXT: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: I64
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I64
; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: ReturnType: I32
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK-NEXT: - Index: 2
-; CHECK-NEXT: ReturnType: I64
; CHECK-NEXT: ParamTypes:
; CHECK-NEXT: - I64
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I64
; CHECK-NEXT: - Index: 3
-; CHECK-NEXT: ReturnType: NORESULT
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Index: 4
-; CHECK-NEXT: ReturnType: NORESULT
; CHECK-NEXT: ParamTypes:
; CHECK-NEXT: - I32
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Type: FUNCTION
; CHECK-NEXT: FunctionTypes: [ 0, 3, 1, 3, 4 ]
; CHECK-NEXT: - Type: TABLE
diff --git a/test/wasm/event-section.ll b/test/wasm/event-section.ll
index 1610287b4..771a8cbdf 100644
--- a/test/wasm/event-section.ll
+++ b/test/wasm/event-section.ll
@@ -20,12 +20,12 @@ define void @_start() {
; CHECK-NEXT: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: NORESULT
; CHECK-NEXT: ParamTypes: []
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: ReturnType: NORESULT
; CHECK-NEXT: ParamTypes:
; CHECK-NEXT: - I32
+; CHECK-NEXT: ReturnTypes: []
; CHECK: - Type: EVENT
; CHECK-NEXT: Events:
diff --git a/test/wasm/function-imports-first.ll b/test/wasm/function-imports-first.ll
index 04583bb54..73c113438 100644
--- a/test/wasm/function-imports-first.ll
+++ b/test/wasm/function-imports-first.ll
@@ -17,12 +17,13 @@ declare i32 @ret32(float) local_unnamed_addr #1
; CHECK: - Type: TYPE
; CHECK: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: NORESULT
-; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ParamTypes: []
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: ReturnType: I32
; CHECK-NEXT: ParamTypes:
; CHECK-NEXT: - F32
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK: - Type: FUNCTION
; CHECK-NEXT: FunctionTypes: [ 0, 1 ]
; CHECK: - Type: CODE
diff --git a/test/wasm/function-imports.ll b/test/wasm/function-imports.ll
index a21f6b509..4fb1c64c7 100644
--- a/test/wasm/function-imports.ll
+++ b/test/wasm/function-imports.ll
@@ -18,12 +18,13 @@ declare i32 @ret32(float) local_unnamed_addr #1
; CHECK: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: I32
; CHECK-NEXT: ParamTypes:
; CHECK-NEXT: - F32
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: ReturnType: NORESULT
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Type: FUNCTION
; CHECK-NEXT: FunctionTypes: [ 0, 1 ]
; CHECK: - Type: CODE
diff --git a/test/wasm/function-index.test b/test/wasm/function-index.test
index 82f5d0cfb..fbcde6cd8 100644
--- a/test/wasm/function-index.test
+++ b/test/wasm/function-index.test
@@ -7,12 +7,14 @@ CHECK: Sections:
CHECK: - Type: TYPE
CHECK: Signatures:
CHECK: - Index: 0
-CHECK: ReturnType: I32
CHECK: ParamTypes:
CHECK: - F32
+CHECK: ReturnTypes:
+CHECK: - I32
CHECK: - Index: 1
-CHECK: ReturnType: I64
CHECK: ParamTypes:
CHECK: - F64
+CHECK: ReturnTypes:
+CHECK: - I64
CHECK: - Type: FUNCTION
CHECK: FunctionTypes: [ 0, 1 ]
diff --git a/test/wasm/gc-sections.ll b/test/wasm/gc-sections.ll
index fbb4b2be1..a91bbecf3 100644
--- a/test/wasm/gc-sections.ll
+++ b/test/wasm/gc-sections.ll
@@ -38,14 +38,16 @@ entry:
; CHECK: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: I32
-; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ParamTypes: []
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: ReturnType: NORESULT
-; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ParamTypes: []
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Index: 2
-; CHECK-NEXT: ReturnType: I64
-; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ParamTypes: []
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I64
; CHECK-NEXT: - Type: FUNCTION
; CHECK: - Type: GLOBAL
@@ -64,7 +66,7 @@ entry:
; CHECK-NEXT: Value: 456
; CHECK: - Type: DATA
-; CHECK-NEXT: Segments:
+; CHECK-NEXT: Segments:
; CHECK-NEXT: - SectionOffset: 7
; CHECK-NEXT: InitFlags: 0
; CHECK-NEXT: Offset:
@@ -89,18 +91,21 @@ entry:
; NO-GC: - Type: TYPE
; NO-GC-NEXT: Signatures:
; NO-GC-NEXT: - Index: 0
-; NO-GC-NEXT: ReturnType: NORESULT
-; NO-GC-NEXT: ParamTypes:
+; NO-GC-NEXT: ParamTypes: []
+; NO-GC-NEXT: ReturnTypes: []
; NO-GC-NEXT: - Index: 1
-; NO-GC-NEXT: ReturnType: I64
; NO-GC-NEXT: ParamTypes:
; NO-GC-NEXT: - I64
+; NO-GC-NEXT: ReturnTypes:
+; NO-GC-NEXT: - I64
; NO-GC-NEXT: - Index: 2
-; NO-GC-NEXT: ReturnType: I32
-; NO-GC-NEXT: ParamTypes:
+; NO-GC-NEXT: ParamTypes: []
+; NO-GC-NEXT: ReturnTypes:
+; NO-GC-NEXT: - I32
; NO-GC-NEXT: - Index: 3
-; NO-GC-NEXT: ReturnType: I64
-; NO-GC-NEXT: ParamTypes:
+; NO-GC-NEXT: ParamTypes: []
+; NO-GC-NEXT: ReturnTypes:
+; NO-GC-NEXT: - I64
; NO-GC-NEXT: - Type: FUNCTION
; NO-GC: - Type: GLOBAL
@@ -125,7 +130,7 @@ entry:
; NO-GC-NEXT: Value: 456
; NO-GC: - Type: DATA
-; NO-GC-NEXT: Segments:
+; NO-GC-NEXT: Segments:
; NO-GC-NEXT: - SectionOffset: 7
; NO-GC-NEXT: InitFlags: 0
; NO-GC-NEXT: Offset:
diff --git a/test/wasm/local-symbols.ll b/test/wasm/local-symbols.ll
index 58d0ddbf7..03e638cdd 100644
--- a/test/wasm/local-symbols.ll
+++ b/test/wasm/local-symbols.ll
@@ -27,11 +27,12 @@ entry:
; CHECK-NEXT: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: I32
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: ReturnType: NORESULT
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Type: FUNCTION
; CHECK-NEXT: FunctionTypes: [ 0, 1 ]
; CHECK-NEXT: - Type: TABLE
diff --git a/test/wasm/locals-duplicate.test b/test/wasm/locals-duplicate.test
index 067d96f61..61018f821 100644
--- a/test/wasm/locals-duplicate.test
+++ b/test/wasm/locals-duplicate.test
@@ -10,8 +10,9 @@
; CHECK-NEXT: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: I32
-; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ParamTypes: []
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK-NEXT: - Type: FUNCTION
; CHECK-NEXT: FunctionTypes: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
; CHECK-NEXT: 0, 0 ]
@@ -220,8 +221,9 @@
; RELOC-NEXT: - Type: TYPE
; RELOC-NEXT: Signatures:
; RELOC-NEXT: - Index: 0
-; RELOC-NEXT: ReturnType: I32
-; RELOC-NEXT: ParamTypes:
+; RELOC-NEXT: ParamTypes: []
+; RELOC-NEXT: ReturnTypes:
+; RELOC-NEXT: - I32
; RELOC-NEXT: - Type: FUNCTION
; RELOC-NEXT: FunctionTypes: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
; RELOC-NEXT: 0, 0 ]
diff --git a/test/wasm/relocatable.ll b/test/wasm/relocatable.ll
index 5ccaadf12..c3d67b1d7 100644
--- a/test/wasm/relocatable.ll
+++ b/test/wasm/relocatable.ll
@@ -44,15 +44,16 @@ entry:
; CHECK-NEXT: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: NORESULT
; CHECK-NEXT: ParamTypes:
; CHECK-NEXT: - I32
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: ReturnType: I32
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK-NEXT: - Index: 2
-; CHECK-NEXT: ReturnType: NORESULT
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Type: IMPORT
; CHECK-NEXT: Imports:
; CHECK-NEXT: - Module: env
diff --git a/test/wasm/stack-pointer.ll b/test/wasm/stack-pointer.ll
index 30501baf8..4be1bf950 100644
--- a/test/wasm/stack-pointer.ll
+++ b/test/wasm/stack-pointer.ll
@@ -18,8 +18,9 @@ entry:
; CHECK-NEXT: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: I32
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK-NEXT: - Type: IMPORT
; CHECK-NEXT: Imports:
; CHECK-NEXT: - Module: env
diff --git a/test/wasm/undefined-weak-call.ll b/test/wasm/undefined-weak-call.ll
index badc77f54..bcb740209 100644
--- a/test/wasm/undefined-weak-call.ll
+++ b/test/wasm/undefined-weak-call.ll
@@ -32,15 +32,16 @@ define i32 @callWeakFuncs() {
; CHECK-NEXT: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: NORESULT
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: ReturnType: NORESULT
; CHECK-NEXT: ParamTypes:
; CHECK-NEXT: - I32
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Index: 2
-; CHECK-NEXT: ReturnType: I32
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK-NEXT: - Type: FUNCTION
; CHECK-NEXT: FunctionTypes: [ 0, 0, 1, 2 ]
; CHECK-NEXT: - Type: TABLE
diff --git a/test/wasm/weak-alias-overide.ll b/test/wasm/weak-alias-overide.ll
index 913e53cba..c65d73a94 100644
--- a/test/wasm/weak-alias-overide.ll
+++ b/test/wasm/weak-alias-overide.ll
@@ -26,11 +26,12 @@ entry:
; CHECK-NEXT: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: I32
-; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ParamTypes: []
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: ReturnType: NORESULT
-; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ParamTypes: []
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Type: FUNCTION
; CHECK-NEXT: FunctionTypes: [ 0, 1, 0, 0, 0, 0, 0 ]
; CHECK-NEXT: - Type: TABLE
diff --git a/test/wasm/weak-alias.ll b/test/wasm/weak-alias.ll
index 6d79b7024..7c38fa185 100644
--- a/test/wasm/weak-alias.ll
+++ b/test/wasm/weak-alias.ll
@@ -23,11 +23,12 @@ entry:
; CHECK-NEXT: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: NORESULT
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: ReturnType: I32
-; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ParamTypes: []
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK-NEXT: - Type: FUNCTION
; CHECK-NEXT: FunctionTypes: [ 0, 1, 1, 1, 1, 1 ]
; CHECK-NEXT: - Type: TABLE
@@ -131,11 +132,12 @@ entry:
; RELOC-NEXT: - Type: TYPE
; RELOC-NEXT: Signatures:
; RELOC-NEXT: - Index: 0
-; RELOC-NEXT: ReturnType: NORESULT
-; RELOC-NEXT: ParamTypes:
+; RELOC-NEXT: ParamTypes: []
+; RELOC-NEXT: ReturnTypes: []
; RELOC-NEXT: - Index: 1
-; RELOC-NEXT: ReturnType: I32
-; RELOC-NEXT: ParamTypes:
+; RELOC-NEXT: ParamTypes: []
+; RELOC-NEXT: ReturnTypes:
+; RELOC-NEXT: - I32
; RELOC-NEXT: - Type: IMPORT
; RELOC-NEXT: Imports:
; RELOC-NEXT: - Module: env
diff --git a/test/wasm/weak-symbols.ll b/test/wasm/weak-symbols.ll
index 1ae28b350..70357b231 100644
--- a/test/wasm/weak-symbols.ll
+++ b/test/wasm/weak-symbols.ll
@@ -23,11 +23,12 @@ entry:
; CHECK-NEXT: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: NORESULT
-; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ParamTypes: []
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: ReturnType: I32
-; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ParamTypes: []
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK-NEXT: - Type: FUNCTION
; CHECK-NEXT: FunctionTypes: [ 0, 1, 1, 1 ]
; CHECK-NEXT: - Type: TABLE
diff --git a/test/wasm/weak-undefined.ll b/test/wasm/weak-undefined.ll
index 65f723de0..8023eb7d3 100644
--- a/test/wasm/weak-undefined.ll
+++ b/test/wasm/weak-undefined.ll
@@ -34,11 +34,12 @@ entry:
; CHECK-NEXT: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: I32
-; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ParamTypes: []
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: ReturnType: NORESULT
-; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ParamTypes: []
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Type: FUNCTION
; CHECK-NEXT: FunctionTypes: [ 0, 0, 1 ]
; CHECK-NEXT: - Type: TABLE