summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/test/wasm/Inputs/globals.yaml3
-rw-r--r--lld/test/wasm/Inputs/undefined-globals.yaml3
-rw-r--r--lld/test/wasm/alias.ll2
-rw-r--r--lld/test/wasm/call-indirect.ll13
-rw-r--r--lld/test/wasm/event-section.ll4
-rw-r--r--lld/test/wasm/function-imports-first.ll7
-rw-r--r--lld/test/wasm/function-imports.ll5
-rw-r--r--lld/test/wasm/function-index.test6
-rw-r--r--lld/test/wasm/gc-sections.ll35
-rw-r--r--lld/test/wasm/local-symbols.ll5
-rw-r--r--lld/test/wasm/locals-duplicate.test10
-rw-r--r--lld/test/wasm/relocatable.ll7
-rw-r--r--lld/test/wasm/stack-pointer.ll3
-rw-r--r--lld/test/wasm/undefined-weak-call.ll7
-rw-r--r--lld/test/wasm/weak-alias-overide.ll9
-rw-r--r--lld/test/wasm/weak-alias.ll16
-rw-r--r--lld/test/wasm/weak-symbols.ll9
-rw-r--r--lld/test/wasm/weak-undefined.ll9
-rw-r--r--llvm/include/llvm/ObjectYAML/WasmYAML.h2
-rw-r--r--llvm/lib/Object/WasmObjectFile.cpp9
-rw-r--r--llvm/lib/ObjectYAML/WasmEmitter.cpp9
-rw-r--r--llvm/lib/ObjectYAML/WasmYAML.cpp3
-rw-r--r--llvm/test/CodeGen/WebAssembly/multivalue.ll17
-rw-r--r--llvm/test/CodeGen/WebAssembly/tailcall.ll3
-rw-r--r--llvm/test/MC/WebAssembly/assembler-binary.ll4
-rw-r--r--llvm/test/MC/WebAssembly/comdat.ll5
-rw-r--r--llvm/test/MC/WebAssembly/data-section.s3
-rw-r--r--llvm/test/MC/WebAssembly/event-section.ll5
-rw-r--r--llvm/test/MC/WebAssembly/external-func-address.ll5
-rw-r--r--llvm/test/MC/WebAssembly/libcall.ll5
-rw-r--r--llvm/test/MC/WebAssembly/reloc-pic.s3
-rw-r--r--llvm/test/MC/WebAssembly/type-index.s7
-rw-r--r--llvm/test/MC/WebAssembly/types.ll23
-rw-r--r--llvm/test/MC/WebAssembly/weak-alias.ll3
-rw-r--r--llvm/test/Object/wasm-duplicate-name.test3
-rw-r--r--llvm/test/Object/wasm-relocs-and-producers.yaml2
-rw-r--r--llvm/test/ObjectYAML/wasm/code_section.yaml10
-rw-r--r--llvm/test/ObjectYAML/wasm/event_section.yaml10
-rw-r--r--llvm/test/ObjectYAML/wasm/export_section.yaml6
-rw-r--r--llvm/test/ObjectYAML/wasm/function_section.yaml4
-rw-r--r--llvm/test/ObjectYAML/wasm/import_memory_shared.yaml5
-rw-r--r--llvm/test/ObjectYAML/wasm/import_section.yaml5
-rw-r--r--llvm/test/ObjectYAML/wasm/invalid_section_order.yaml2
-rw-r--r--llvm/test/ObjectYAML/wasm/linking_section.yaml3
-rw-r--r--llvm/test/ObjectYAML/wasm/name_section.yaml3
-rw-r--r--llvm/test/ObjectYAML/wasm/start_section.yaml4
-rw-r--r--llvm/test/ObjectYAML/wasm/type_section.yaml12
-rw-r--r--llvm/test/ObjectYAML/wasm/weak_symbols.yaml11
-rw-r--r--llvm/test/tools/llvm-nm/wasm/exports.yaml3
-rw-r--r--llvm/test/tools/llvm-nm/wasm/imports.yaml3
-rw-r--r--llvm/test/tools/llvm-nm/wasm/weak-symbols.yaml3
-rw-r--r--llvm/test/tools/llvm-readobj/wasm-imports.test5
-rw-r--r--llvm/tools/obj2yaml/wasm2yaml.cpp7
53 files changed, 212 insertions, 148 deletions
diff --git a/lld/test/wasm/Inputs/globals.yaml b/lld/test/wasm/Inputs/globals.yaml
index 6f632262785..4f5d0bef622 100644
--- a/lld/test/wasm/Inputs/globals.yaml
+++ b/lld/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/lld/test/wasm/Inputs/undefined-globals.yaml b/lld/test/wasm/Inputs/undefined-globals.yaml
index fd5a2361c9f..41bc6435640 100644
--- a/lld/test/wasm/Inputs/undefined-globals.yaml
+++ b/lld/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/lld/test/wasm/alias.ll b/lld/test/wasm/alias.ll
index e20e648731c..9927ba4c222 100644
--- a/lld/test/wasm/alias.ll
+++ b/lld/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/lld/test/wasm/call-indirect.ll b/lld/test/wasm/call-indirect.ll
index b0bbc4aeb44..2eb134a97bb 100644
--- a/lld/test/wasm/call-indirect.ll
+++ b/lld/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/lld/test/wasm/event-section.ll b/lld/test/wasm/event-section.ll
index 1610287b4a3..771a8cbdf6c 100644
--- a/lld/test/wasm/event-section.ll
+++ b/lld/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/lld/test/wasm/function-imports-first.ll b/lld/test/wasm/function-imports-first.ll
index 04583bb5481..73c113438f0 100644
--- a/lld/test/wasm/function-imports-first.ll
+++ b/lld/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/lld/test/wasm/function-imports.ll b/lld/test/wasm/function-imports.ll
index a21f6b509e2..4fb1c64c72b 100644
--- a/lld/test/wasm/function-imports.ll
+++ b/lld/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/lld/test/wasm/function-index.test b/lld/test/wasm/function-index.test
index 82f5d0cfb24..fbcde6cd816 100644
--- a/lld/test/wasm/function-index.test
+++ b/lld/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/lld/test/wasm/gc-sections.ll b/lld/test/wasm/gc-sections.ll
index fbb4b2be17e..a91bbecf324 100644
--- a/lld/test/wasm/gc-sections.ll
+++ b/lld/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/lld/test/wasm/local-symbols.ll b/lld/test/wasm/local-symbols.ll
index 58d0ddbf70b..03e638cdd88 100644
--- a/lld/test/wasm/local-symbols.ll
+++ b/lld/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/lld/test/wasm/locals-duplicate.test b/lld/test/wasm/locals-duplicate.test
index 067d96f6197..61018f8213e 100644
--- a/lld/test/wasm/locals-duplicate.test
+++ b/lld/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/lld/test/wasm/relocatable.ll b/lld/test/wasm/relocatable.ll
index 5ccaadf1246..c3d67b1d7b6 100644
--- a/lld/test/wasm/relocatable.ll
+++ b/lld/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/lld/test/wasm/stack-pointer.ll b/lld/test/wasm/stack-pointer.ll
index 30501baf84a..4be1bf9503d 100644
--- a/lld/test/wasm/stack-pointer.ll
+++ b/lld/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/lld/test/wasm/undefined-weak-call.ll b/lld/test/wasm/undefined-weak-call.ll
index badc77f54f0..bcb740209a9 100644
--- a/lld/test/wasm/undefined-weak-call.ll
+++ b/lld/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/lld/test/wasm/weak-alias-overide.ll b/lld/test/wasm/weak-alias-overide.ll
index 913e53cba87..c65d73a9440 100644
--- a/lld/test/wasm/weak-alias-overide.ll
+++ b/lld/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/lld/test/wasm/weak-alias.ll b/lld/test/wasm/weak-alias.ll
index 6d79b702499..7c38fa18599 100644
--- a/lld/test/wasm/weak-alias.ll
+++ b/lld/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/lld/test/wasm/weak-symbols.ll b/lld/test/wasm/weak-symbols.ll
index 1ae28b350bd..70357b23101 100644
--- a/lld/test/wasm/weak-symbols.ll
+++ b/lld/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/lld/test/wasm/weak-undefined.ll b/lld/test/wasm/weak-undefined.ll
index 65f723de042..8023eb7d368 100644
--- a/lld/test/wasm/weak-undefined.ll
+++ b/lld/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
diff --git a/llvm/include/llvm/ObjectYAML/WasmYAML.h b/llvm/include/llvm/ObjectYAML/WasmYAML.h
index 2411dc7ac17..15a8cc21502 100644
--- a/llvm/include/llvm/ObjectYAML/WasmYAML.h
+++ b/llvm/include/llvm/ObjectYAML/WasmYAML.h
@@ -145,7 +145,7 @@ struct Signature {
uint32_t Index;
SignatureForm Form = wasm::WASM_TYPE_FUNC;
std::vector<ValueType> ParamTypes;
- ValueType ReturnType;
+ std::vector<ValueType> ReturnTypes;
};
struct SymbolInfo {
diff --git a/llvm/lib/Object/WasmObjectFile.cpp b/llvm/lib/Object/WasmObjectFile.cpp
index 470283efb29..014b403556d 100644
--- a/llvm/lib/Object/WasmObjectFile.cpp
+++ b/llvm/lib/Object/WasmObjectFile.cpp
@@ -881,12 +881,9 @@ Error WasmObjectFile::parseTypeSection(ReadContext &Ctx) {
Sig.Params.push_back(wasm::ValType(ParamType));
}
uint32_t ReturnCount = readVaruint32(Ctx);
- if (ReturnCount) {
- if (ReturnCount != 1) {
- return make_error<GenericBinaryError>(
- "Multiple return types not supported", object_error::parse_failed);
- }
- Sig.Returns.push_back(wasm::ValType(readUint8(Ctx)));
+ while (ReturnCount--) {
+ uint32_t ReturnType = readUint8(Ctx);
+ Sig.Returns.push_back(wasm::ValType(ReturnType));
}
Signatures.push_back(std::move(Sig));
}
diff --git a/llvm/lib/ObjectYAML/WasmEmitter.cpp b/llvm/lib/ObjectYAML/WasmEmitter.cpp
index 42c57d42ad7..debc040587a 100644
--- a/llvm/lib/ObjectYAML/WasmEmitter.cpp
+++ b/llvm/lib/ObjectYAML/WasmEmitter.cpp
@@ -334,12 +334,9 @@ void WasmWriter::writeSectionContent(raw_ostream &OS,
encodeULEB128(Sig.ParamTypes.size(), OS);
for (auto ParamType : Sig.ParamTypes)
writeUint8(OS, ParamType);
- if (Sig.ReturnType == wasm::WASM_TYPE_NORESULT) {
- encodeULEB128(0, OS);
- } else {
- encodeULEB128(1, OS);
- writeUint8(OS, Sig.ReturnType);
- }
+ encodeULEB128(Sig.ReturnTypes.size(), OS);
+ for (auto ReturnType : Sig.ReturnTypes)
+ writeUint8(OS, ReturnType);
}
}
diff --git a/llvm/lib/ObjectYAML/WasmYAML.cpp b/llvm/lib/ObjectYAML/WasmYAML.cpp
index 04f56947959..232d5122004 100644
--- a/llvm/lib/ObjectYAML/WasmYAML.cpp
+++ b/llvm/lib/ObjectYAML/WasmYAML.cpp
@@ -295,8 +295,8 @@ void ScalarEnumerationTraits<WasmYAML::SectionType>::enumeration(
void MappingTraits<WasmYAML::Signature>::mapping(
IO &IO, WasmYAML::Signature &Signature) {
IO.mapRequired("Index", Signature.Index);
- IO.mapRequired("ReturnType", Signature.ReturnType);
IO.mapRequired("ParamTypes", Signature.ParamTypes);
+ IO.mapRequired("ReturnTypes", Signature.ReturnTypes);
}
void MappingTraits<WasmYAML::Table>::mapping(IO &IO, WasmYAML::Table &Table) {
@@ -560,7 +560,6 @@ void ScalarEnumerationTraits<WasmYAML::ValueType>::enumeration(
ECase(V128);
ECase(FUNCREF);
ECase(FUNC);
- ECase(NORESULT);
#undef ECase
}
diff --git a/llvm/test/CodeGen/WebAssembly/multivalue.ll b/llvm/test/CodeGen/WebAssembly/multivalue.ll
index 877851f6a36..ee32852ef57 100644
--- a/llvm/test/CodeGen/WebAssembly/multivalue.ll
+++ b/llvm/test/CodeGen/WebAssembly/multivalue.ll
@@ -1,4 +1,5 @@
; RUN: llc < %s -asm-verbose=false -verify-machineinstrs -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -mattr=+multivalue | FileCheck %s
+; RUN: llc < %s --filetype=obj -mattr=+multivalue | obj2yaml | FileCheck %s --check-prefix OBJ
; Test that the multivalue returns, function types, and block types
; work as expected.
@@ -42,3 +43,19 @@ loop:
; CHECK-NEXT: .int8 43
; CHECK-NEXT: .int8 10
; CHECK-NEXT: .ascii "multivalue"
+
+; OBJ-LABEL: - Type: TYPE
+; OBJ-NEXT: Signatures:
+; OBJ-NEXT: - Index: 0
+; OBJ-NEXT: ParamTypes:
+; OBJ-NEXT: - I32
+; OBJ-NEXT: - I32
+; OBJ-NEXT: ReturnTypes:
+; OBJ-NEXT: - I32
+; OBJ-NEXT: - I32
+; OBJ-NEXT: - Index: 1
+; OBJ-NEXT: ParamTypes:
+; OBJ-NEXT: - I32
+; OBJ-NEXT: ReturnTypes:
+; OBJ-NEXT: - I32
+; OBJ-NEXT: - I64
diff --git a/llvm/test/CodeGen/WebAssembly/tailcall.ll b/llvm/test/CodeGen/WebAssembly/tailcall.ll
index a277b4f7bc2..f4d4499bcef 100644
--- a/llvm/test/CodeGen/WebAssembly/tailcall.ll
+++ b/llvm/test/CodeGen/WebAssembly/tailcall.ll
@@ -215,12 +215,13 @@ define i1 @mismatched_return_trunc() {
; return-called functions include the proper return types
; YAML-LABEL: - Index: 8
-; YAML-NEXT: ReturnType: I32
; YAML-NEXT: ParamTypes:
; YAML-NEXT: - I32
; YAML-NEXT: - F32
; YAML-NEXT: - I64
; YAML-NEXT: - F64
+; YAML-NEXT: ReturnTypes:
+; YAML-NEXT: - I32
define i32 @unique_caller(i32 (i32, float, i64, double)** %p) {
%f = load i32 (i32, float, i64, double)*, i32 (i32, float, i64, double)** %p
%v = tail call i32 %f(i32 0, float 0., i64 0, double 0.)
diff --git a/llvm/test/MC/WebAssembly/assembler-binary.ll b/llvm/test/MC/WebAssembly/assembler-binary.ll
index 3683d63e435..35fa4111117 100644
--- a/llvm/test/MC/WebAssembly/assembler-binary.ll
+++ b/llvm/test/MC/WebAssembly/assembler-binary.ll
@@ -38,12 +38,12 @@ 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: NORESULT
; CHECK-NEXT: ParamTypes: []
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Type: IMPORT
; CHECK-NEXT: Imports:
; CHECK-NEXT: - Module: env
diff --git a/llvm/test/MC/WebAssembly/comdat.ll b/llvm/test/MC/WebAssembly/comdat.ll
index ecc5e5be27a..e50f5bf1cc9 100644
--- a/llvm/test/MC/WebAssembly/comdat.ll
+++ b/llvm/test/MC/WebAssembly/comdat.ll
@@ -28,8 +28,9 @@ define linkonce_odr i32 @sharedFn() #1 comdat($sharedComdat) {
; 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: IMPORT
; CHECK-NEXT: Imports:
; CHECK-NEXT: - Module: env
diff --git a/llvm/test/MC/WebAssembly/data-section.s b/llvm/test/MC/WebAssembly/data-section.s
index 70d9de2bb93..52e60f6d4a7 100644
--- a/llvm/test/MC/WebAssembly/data-section.s
+++ b/llvm/test/MC/WebAssembly/data-section.s
@@ -35,8 +35,9 @@ test0:
# BIN-NEXT: - Type: TYPE
# BIN-NEXT: Signatures:
# BIN-NEXT: - Index: 0
-# BIN-NEXT: ReturnType: I32
# BIN-NEXT: ParamTypes: []
+# BIN-NEXT: ReturnTypes:
+# BIN-NEXT: - I32
# BIN-NEXT: - Type: IMPORT
# BIN-NEXT: Imports:
# BIN-NEXT: - Module: env
diff --git a/llvm/test/MC/WebAssembly/event-section.ll b/llvm/test/MC/WebAssembly/event-section.ll
index 2b5b5bba9fe..b662c290d3c 100644
--- a/llvm/test/MC/WebAssembly/event-section.ll
+++ b/llvm/test/MC/WebAssembly/event-section.ll
@@ -19,13 +19,14 @@ define i32 @test_throw1(i8* %p) {
; CHECK-NEXT: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: I32
; CHECK-NEXT: ParamTypes:
; CHECK-NEXT: - I32
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; 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/llvm/test/MC/WebAssembly/external-func-address.ll b/llvm/test/MC/WebAssembly/external-func-address.ll
index 9d3b33592e0..9c16c02a4a0 100644
--- a/llvm/test/MC/WebAssembly/external-func-address.ll
+++ b/llvm/test/MC/WebAssembly/external-func-address.ll
@@ -27,15 +27,16 @@ define void @call(i32) {
; 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: - I32
; CHECK-NEXT: - I32
; CHECK-NEXT: - I32
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK: - Type: IMPORT
; CHECK-NEXT: Imports:
; CHECK: - Module: env
diff --git a/llvm/test/MC/WebAssembly/libcall.ll b/llvm/test/MC/WebAssembly/libcall.ll
index b2253583898..9f8abba70c0 100644
--- a/llvm/test/MC/WebAssembly/libcall.ll
+++ b/llvm/test/MC/WebAssembly/libcall.ll
@@ -17,14 +17,15 @@ declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture r
; CHECK-NEXT: - Type: TYPE
; CHECK-NEXT: Signatures:
; CHECK-NEXT: - Index: 0
-; CHECK-NEXT: ReturnType: NORESULT
; CHECK-NEXT: ParamTypes:
; CHECK-NEXT: - I32
; CHECK-NEXT: - I32
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Index: 1
-; CHECK-NEXT: ReturnType: I32
; CHECK-NEXT: ParamTypes:
; CHECK-NEXT: - I32
; CHECK-NEXT: - I32
; CHECK-NEXT: - I32
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK-NEXT: - Type: IMPORT
diff --git a/llvm/test/MC/WebAssembly/reloc-pic.s b/llvm/test/MC/WebAssembly/reloc-pic.s
index 2b7ef54a3a5..626f8d993e3 100644
--- a/llvm/test/MC/WebAssembly/reloc-pic.s
+++ b/llvm/test/MC/WebAssembly/reloc-pic.s
@@ -52,8 +52,9 @@ hidden_func:
# 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/llvm/test/MC/WebAssembly/type-index.s b/llvm/test/MC/WebAssembly/type-index.s
index 707f6aa9894..9c77434589f 100644
--- a/llvm/test/MC/WebAssembly/type-index.s
+++ b/llvm/test/MC/WebAssembly/type-index.s
@@ -22,13 +22,15 @@ test0:
# BIN-NEXT: - Type: TYPE
# BIN-NEXT: Signatures:
# BIN-NEXT: - Index: 0
-# BIN-NEXT: ReturnType: I32
# BIN-NEXT: ParamTypes:
# BIN-NEXT: - I32
+# BIN-NEXT: ReturnTypes:
+# BIN-NEXT: - I32
# BIN-NEXT: - Index: 1
-# BIN-NEXT: ReturnType: F64
# BIN-NEXT: ParamTypes:
# BIN-NEXT: - F64
+# BIN-NEXT: ReturnTypes:
+# BIN-NEXT: - F64
# BIN-NEXT: - Type: IMPORT
# BIN-NEXT: Imports:
# BIN-NEXT: - Module: env
@@ -64,4 +66,3 @@ test0:
# BIN-NEXT: Flags: [ BINDING_LOCAL ]
# BIN-NEXT: Function: 0
# BIN-NEXT: ...
-
diff --git a/llvm/test/MC/WebAssembly/types.ll b/llvm/test/MC/WebAssembly/types.ll
index 6eeeef2f531..c049d3ce0e8 100644
--- a/llvm/test/MC/WebAssembly/types.ll
+++ b/llvm/test/MC/WebAssembly/types.ll
@@ -37,32 +37,37 @@ define void @vararg(i32, i32, ...) {
; CHECK-LABEL: - 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: ReturnTypes:
+; CHECK-NEXT: - I32
; CHECK-NEXT: - Index: 2
-; CHECK-NEXT: ReturnType: I64
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - I64
; CHECK-NEXT: - Index: 3
-; CHECK-NEXT: ReturnType: F32
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - F32
; CHECK-NEXT: - Index: 4
-; CHECK-NEXT: ReturnType: F64
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - F64
; CHECK-NEXT: - Index: 5
-; CHECK-NEXT: ReturnType: V128
; CHECK-NEXT: ParamTypes:
+; CHECK-NEXT: ReturnTypes:
+; CHECK-NEXT: - V128
; CHECK-NEXT: - Index: 6
-; CHECK-NEXT: ReturnType: NORESULT
; CHECK-NEXT: ParamTypes:
; CHECK-NEXT: - I32
+; CHECK-NEXT: ReturnTypes: []
; CHECK-NEXT: - Index: 7
-; CHECK-NEXT: ReturnType: NORESULT
; CHECK-NEXT: ParamTypes:
; CHECK-NEXT: - I32
; CHECK-NEXT: - I32
; CHECK-NEXT: - I32
+; CHECK-NEXT: ReturnTypes: []
; should be no additional types
-; CHECK-NOT: ReturnType
+; CHECK-NOT: ReturnTypes
diff --git a/llvm/test/MC/WebAssembly/weak-alias.ll b/llvm/test/MC/WebAssembly/weak-alias.ll
index 20a27edd343..c9c707e69e2 100644
--- a/llvm/test/MC/WebAssembly/weak-alias.ll
+++ b/llvm/test/MC/WebAssembly/weak-alias.ll
@@ -49,8 +49,9 @@ entry:
; CHECK: - 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/llvm/test/Object/wasm-duplicate-name.test b/llvm/test/Object/wasm-duplicate-name.test
index 1bf20778028..666291c9524 100644
--- a/llvm/test/Object/wasm-duplicate-name.test
+++ b/llvm/test/Object/wasm-duplicate-name.test
@@ -7,9 +7,10 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: I32
ParamTypes:
- I32
+ ReturnTypes:
+ - I32
- Type: IMPORT
Imports:
- Module: foo
diff --git a/llvm/test/Object/wasm-relocs-and-producers.yaml b/llvm/test/Object/wasm-relocs-and-producers.yaml
index 01ad2bb89fb..2bdc12e4619 100644
--- a/llvm/test/Object/wasm-relocs-and-producers.yaml
+++ b/llvm/test/Object/wasm-relocs-and-producers.yaml
@@ -16,8 +16,8 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: NORESULT
ParamTypes: []
+ ReturnTypes: []
- Type: IMPORT
Imports:
- Module: env
diff --git a/llvm/test/ObjectYAML/wasm/code_section.yaml b/llvm/test/ObjectYAML/wasm/code_section.yaml
index 0171938a6a3..dad75e081ea 100644
--- a/llvm/test/ObjectYAML/wasm/code_section.yaml
+++ b/llvm/test/ObjectYAML/wasm/code_section.yaml
@@ -6,14 +6,15 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: F32
ParamTypes:
- I32
+ ReturnTypes:
+ - F32
- Index: 1
- ReturnType: NORESULT
ParamTypes:
- I32
- I64
+ ReturnTypes: []
- Type: FUNCTION
FunctionTypes:
- 0
@@ -59,14 +60,15 @@ Sections:
# CHECK: - Type: TYPE
# CHECK: Signatures:
# CHECK: - Index: 0
-# CHECK: ReturnType: F32
# CHECK: ParamTypes:
# CHECK: - I32
+# CHECK: ReturnTypes:
+# CHECK: - F32
# CHECK: - Index: 1
-# CHECK: ReturnType: NORESULT
# CHECK: ParamTypes:
# CHECK: - I32
# CHECK: - I64
+# CHECK: ReturnTypes: []
# CHECK: - Type: CODE
# CHECK: Relocations:
# CHECK: - Type: R_WASM_TABLE_INDEX_SLEB
diff --git a/llvm/test/ObjectYAML/wasm/event_section.yaml b/llvm/test/ObjectYAML/wasm/event_section.yaml
index 91683bd3da4..5c64cc81552 100644
--- a/llvm/test/ObjectYAML/wasm/event_section.yaml
+++ b/llvm/test/ObjectYAML/wasm/event_section.yaml
@@ -7,13 +7,14 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: I32
ParamTypes:
- I32
+ ReturnTypes:
+ - I32
- Index: 1
- ReturnType: NORESULT
ParamTypes:
- I32
+ ReturnTypes: []
- Type: FUNCTION
FunctionTypes: [ 0 ]
- Type: EVENT
@@ -53,13 +54,14 @@ Sections:
# CHECK-NEXT: - Type: TYPE
# CHECK-NEXT: Signatures:
# CHECK-NEXT: - Index: 0
-# CHECK-NEXT: ReturnType: I32
# CHECK-NEXT: ParamTypes:
# CHECK-NEXT: - I32
+# CHECK-NEXT: ReturnTypes:
+# CHECK-NEXT: - I32
# CHECK-NEXT: - Index: 1
-# CHECK-NEXT: ReturnType: NORESULT
# CHECK-NEXT: ParamTypes:
# CHECK-NEXT: - I32
+# CHECK-NEXT: ReturnTypes: []
# CHECK-NEXT: - Type: FUNCTION
# CHECK-NEXT: FunctionTypes: [ 0 ]
# CHECK-NEXT: - Type: EVENT
diff --git a/llvm/test/ObjectYAML/wasm/export_section.yaml b/llvm/test/ObjectYAML/wasm/export_section.yaml
index af72f136811..4b3487cec5a 100644
--- a/llvm/test/ObjectYAML/wasm/export_section.yaml
+++ b/llvm/test/ObjectYAML/wasm/export_section.yaml
@@ -6,8 +6,8 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: NORESULT
ParamTypes:
+ ReturnTypes: []
- Type: FUNCTION
FunctionTypes: [ 0, 0 ]
- Type: GLOBAL
@@ -25,7 +25,7 @@ Sections:
Opcode: I64_CONST
Value: 64
- Type: EXPORT
- Exports:
+ Exports:
- Name: function_export
Kind: FUNCTION
Index: 1
@@ -52,7 +52,7 @@ Sections:
# CHECK: Version: 0x00000001
# CHECK: Sections:
# CHECK: - Type: EXPORT
-# CHECK: Exports:
+# CHECK: Exports:
# CHECK: - Name: function_export
# CHECK: Kind: FUNCTION
# CHECK: Index: 1
diff --git a/llvm/test/ObjectYAML/wasm/function_section.yaml b/llvm/test/ObjectYAML/wasm/function_section.yaml
index d3161445295..8bfe4fa7f58 100644
--- a/llvm/test/ObjectYAML/wasm/function_section.yaml
+++ b/llvm/test/ObjectYAML/wasm/function_section.yaml
@@ -6,12 +6,12 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: NORESULT
ParamTypes:
+ ReturnTypes: []
- Index: 1
- ReturnType: NORESULT
ParamTypes:
- I32
+ ReturnTypes: []
- Type: FUNCTION
FunctionTypes: [ 1, 0 ]
- Type: CODE
diff --git a/llvm/test/ObjectYAML/wasm/import_memory_shared.yaml b/llvm/test/ObjectYAML/wasm/import_memory_shared.yaml
index 849bdc5314d..b6ca9fa44f9 100644
--- a/llvm/test/ObjectYAML/wasm/import_memory_shared.yaml
+++ b/llvm/test/ObjectYAML/wasm/import_memory_shared.yaml
@@ -6,9 +6,10 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: I32
ParamTypes:
- I32
+ ReturnTypes:
+ - I32
- Type: IMPORT
Imports:
- Module: foo
@@ -25,7 +26,7 @@ Sections:
# CHECK: Version: 0x00000001
# CHECK: Sections:
# CHECK: - Type: IMPORT
-# CHECK: Imports:
+# CHECK: Imports:
# CHECK: - Module: foo
# CHECK: Field: imported_memory
# CHECK: Kind: MEMORY
diff --git a/llvm/test/ObjectYAML/wasm/import_section.yaml b/llvm/test/ObjectYAML/wasm/import_section.yaml
index 90de6f0fec7..2df2f3928ec 100644
--- a/llvm/test/ObjectYAML/wasm/import_section.yaml
+++ b/llvm/test/ObjectYAML/wasm/import_section.yaml
@@ -6,9 +6,10 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: I32
ParamTypes:
- I32
+ ReturnTypes:
+ - I32
- Type: IMPORT
Imports:
- Module: foo
@@ -42,7 +43,7 @@ Sections:
# CHECK: Version: 0x00000001
# CHECK: Sections:
# CHECK: - Type: IMPORT
-# CHECK: Imports:
+# CHECK: Imports:
# CHECK: - Module: foo
# CHECK: Field: imported_function
# CHECK: Kind: FUNCTION
diff --git a/llvm/test/ObjectYAML/wasm/invalid_section_order.yaml b/llvm/test/ObjectYAML/wasm/invalid_section_order.yaml
index 4e3581ec5eb..71767576979 100644
--- a/llvm/test/ObjectYAML/wasm/invalid_section_order.yaml
+++ b/llvm/test/ObjectYAML/wasm/invalid_section_order.yaml
@@ -7,8 +7,8 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: NORESULT
ParamTypes: []
+ ReturnTypes: []
- Type: CODE
Functions:
- Index: 0
diff --git a/llvm/test/ObjectYAML/wasm/linking_section.yaml b/llvm/test/ObjectYAML/wasm/linking_section.yaml
index 39827410b0e..2e3da8791c7 100644
--- a/llvm/test/ObjectYAML/wasm/linking_section.yaml
+++ b/llvm/test/ObjectYAML/wasm/linking_section.yaml
@@ -6,9 +6,10 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: I32
ParamTypes:
- I32
+ ReturnTypes:
+ - I32
- Type: IMPORT
Imports:
- Module: foo
diff --git a/llvm/test/ObjectYAML/wasm/name_section.yaml b/llvm/test/ObjectYAML/wasm/name_section.yaml
index f7a489d7542..a22b25771e1 100644
--- a/llvm/test/ObjectYAML/wasm/name_section.yaml
+++ b/llvm/test/ObjectYAML/wasm/name_section.yaml
@@ -6,9 +6,10 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: I32
ParamTypes:
- I32
+ ReturnTypes:
+ - I32
- Type: IMPORT
Imports:
- Module: foo
diff --git a/llvm/test/ObjectYAML/wasm/start_section.yaml b/llvm/test/ObjectYAML/wasm/start_section.yaml
index 5d57c1b7a05..754adea5a18 100644
--- a/llvm/test/ObjectYAML/wasm/start_section.yaml
+++ b/llvm/test/ObjectYAML/wasm/start_section.yaml
@@ -7,8 +7,8 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: NORESULT
- ParamTypes:
+ ParamTypes: []
+ ReturnTypes: []
- Type: FUNCTION
FunctionTypes: [ 0, 0, 0 ]
- Type: START
diff --git a/llvm/test/ObjectYAML/wasm/type_section.yaml b/llvm/test/ObjectYAML/wasm/type_section.yaml
index a87949fed06..beb3a16e766 100644
--- a/llvm/test/ObjectYAML/wasm/type_section.yaml
+++ b/llvm/test/ObjectYAML/wasm/type_section.yaml
@@ -6,15 +6,17 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: I32
ParamTypes:
- F32
- F32
+ ReturnTypes:
+ - I32
- Index: 1
- ReturnType: I64
ParamTypes:
- F64
- F64
+ ReturnTypes:
+ - I64
...
# CHECK: --- !WASM
# CHECK: FileHeader:
@@ -23,13 +25,15 @@ Sections:
# CHECK: - Type: TYPE
# CHECK: Signatures:
# CHECK: - Index: 0
-# CHECK: ReturnType: I32
# CHECK: ParamTypes:
# CHECK: - F32
# CHECK: - F32
+# CHECK: ReturnTypes:
+# CHECK: - I32
# CHECK: - Index: 1
-# CHECK: ReturnType: I64
# CHECK: ParamTypes:
# CHECK: - F64
# CHECK: - F64
+# CHECK: ReturnTypes:
+# CHECK: - I64
# CHECK: ...
diff --git a/llvm/test/ObjectYAML/wasm/weak_symbols.yaml b/llvm/test/ObjectYAML/wasm/weak_symbols.yaml
index fb85b829a37..82bc70c244f 100644
--- a/llvm/test/ObjectYAML/wasm/weak_symbols.yaml
+++ b/llvm/test/ObjectYAML/wasm/weak_symbols.yaml
@@ -6,12 +6,13 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: I32
- ParamTypes:
+ ParamTypes: []
+ ReturnTypes:
+ - I32
- Type: FUNCTION
FunctionTypes: [ 0, 0 ]
- Type: GLOBAL
- Globals:
+ Globals:
- Index: 0
Type: I32
Mutable: false
@@ -19,7 +20,7 @@ Sections:
Opcode: I32_CONST
Value: 1
- Type: EXPORT
- Exports:
+ Exports:
- Name: function_export
Kind: FUNCTION
Index: 1
@@ -54,7 +55,7 @@ Sections:
# CHECK: Version: 0x00000001
# CHECK: Sections:
# CHECK: - Type: EXPORT
-# CHECK: Exports:
+# CHECK: Exports:
# CHECK: - Name: function_export
# CHECK: Kind: FUNCTION
# CHECK: Index: 1
diff --git a/llvm/test/tools/llvm-nm/wasm/exports.yaml b/llvm/test/tools/llvm-nm/wasm/exports.yaml
index eddcbc22c1f..15c98ae2bf4 100644
--- a/llvm/test/tools/llvm-nm/wasm/exports.yaml
+++ b/llvm/test/tools/llvm-nm/wasm/exports.yaml
@@ -9,9 +9,10 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: I32
ParamTypes:
- I32
+ ReturnTypes:
+ - I32
- Type: FUNCTION
FunctionTypes: [ 0 ]
- Type: GLOBAL
diff --git a/llvm/test/tools/llvm-nm/wasm/imports.yaml b/llvm/test/tools/llvm-nm/wasm/imports.yaml
index 2ea0d0f13fe..37b0ce486c3 100644
--- a/llvm/test/tools/llvm-nm/wasm/imports.yaml
+++ b/llvm/test/tools/llvm-nm/wasm/imports.yaml
@@ -9,9 +9,10 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: I32
ParamTypes:
- I32
+ ReturnTypes:
+ - I32
- Type: IMPORT
Imports:
- Module: env
diff --git a/llvm/test/tools/llvm-nm/wasm/weak-symbols.yaml b/llvm/test/tools/llvm-nm/wasm/weak-symbols.yaml
index a81559402dc..d8e4cece0fe 100644
--- a/llvm/test/tools/llvm-nm/wasm/weak-symbols.yaml
+++ b/llvm/test/tools/llvm-nm/wasm/weak-symbols.yaml
@@ -9,9 +9,10 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: I32
ParamTypes:
- I32
+ ReturnTypes:
+ - I32
- Type: IMPORT
Imports:
- Module: env
diff --git a/llvm/test/tools/llvm-readobj/wasm-imports.test b/llvm/test/tools/llvm-readobj/wasm-imports.test
index fd1e5c8e641..6eb19673d99 100644
--- a/llvm/test/tools/llvm-readobj/wasm-imports.test
+++ b/llvm/test/tools/llvm-readobj/wasm-imports.test
@@ -9,11 +9,12 @@ Sections:
- Type: TYPE
Signatures:
- Index: 0
- ReturnType: I32
ParamTypes: []
+ ReturnTypes:
+ - I32
- Index: 1
- ReturnType: NORESULT
ParamTypes: []
+ ReturnTypes: []
- Type: IMPORT
Imports:
- Module: env
diff --git a/llvm/tools/obj2yaml/wasm2yaml.cpp b/llvm/tools/obj2yaml/wasm2yaml.cpp
index 7a540974d50..ea7a1e983bd 100644
--- a/llvm/tools/obj2yaml/wasm2yaml.cpp
+++ b/llvm/tools/obj2yaml/wasm2yaml.cpp
@@ -198,13 +198,10 @@ ErrorOr<WasmYAML::Object *> WasmDumper::dump() {
for (const auto &FunctionSig : Obj.types()) {
WasmYAML::Signature Sig;
Sig.Index = Index++;
- Sig.ReturnType = wasm::WASM_TYPE_NORESULT;
- assert(FunctionSig.Returns.size() <= 1 &&
- "Functions with multiple returns are not supported");
- if (FunctionSig.Returns.size())
- Sig.ReturnType = static_cast<uint32_t>(FunctionSig.Returns[0]);
for (const auto &ParamType : FunctionSig.Params)
Sig.ParamTypes.emplace_back(static_cast<uint32_t>(ParamType));
+ for (const auto &ReturnType : FunctionSig.Returns)
+ Sig.ReturnTypes.emplace_back(static_cast<uint32_t>(ReturnType));
TypeSec->Signatures.push_back(Sig);
}
S = std::move(TypeSec);
OpenPOWER on IntegriCloud