--- /dev/null
+# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown -o %t.o %s
+# RUN: wasm-ld %t.o -o %t.wasm
+# RUN: obj2yaml %t.wasm | FileCheck %s
+
+.globl _start
+.globl fn_i32
+.globl fn_i32_i32
+.globl fn_i32_i64
+.globl fn_i64_f64_i32_f32
+
+
+_start:
+ .functype _start () -> ()
+ call fn_i32
+ drop
+ call fn_i32_i32
+ drop
+ drop
+ call fn_i32_i64
+ drop
+ drop
+ call fn_i64_f64_i32_f32
+ drop
+ drop
+ drop
+ drop
+ end_function
+
+fn_i32:
+ .functype fn_i32 () -> (i32)
+ i32.const 1
+ end_function
+
+fn_i32_i32:
+ .functype fn_i32_i32 () -> (i32, i32)
+ i32.const 1
+ i32.const 1
+ end_function
+
+fn_i32_i64:
+ .functype fn_i32_i64 () -> (i32, i64)
+ i32.const 1
+ i64.const 1
+ end_function
+
+fn_i64_f64_i32_f32:
+ .functype fn_i64_f64_i32_f32 () -> (i64, f64, i32, f32)
+ i64.const 1
+ f64.const 1.0
+ i32.const 1
+ f32.const 1.0
+ end_function
+
+
+# CHECK: - Type: TYPE
+# CHECK-NEXT: Signatures:
+# CHECK-NEXT: - Index: 0
+# CHECK-NEXT: ParamTypes: []
+# CHECK-NEXT: ReturnTypes: []
+# CHECK-NEXT: - Index: 1
+# CHECK-NEXT: ParamTypes: []
+# CHECK-NEXT: ReturnTypes:
+# CHECK-NEXT: - I32
+# CHECK-NEXT: - Index: 2
+# CHECK-NEXT: ParamTypes: []
+# CHECK-NEXT: ReturnTypes:
+# CHECK-NEXT: - I32
+# CHECK-NEXT: - I32
+# CHECK-NEXT: - Index: 3
+# CHECK-NEXT: ParamTypes: []
+# CHECK-NEXT: ReturnTypes:
+# CHECK-NEXT: - I32
+# CHECK-NEXT: - I64
+# CHECK-NEXT: - Index: 4
+# CHECK-NEXT: ParamTypes: []
+# CHECK-NEXT: ReturnTypes:
+# CHECK-NEXT: - I64
+# CHECK-NEXT: - F64
+# CHECK-NEXT: - I32
+# CHECK-NEXT: - F32
writeValueType(os, paramType, "param type");
}
writeUleb128(os, sig.Returns.size(), "result Count");
- if (sig.Returns.size()) {
- writeValueType(os, sig.Returns[0], "result type");
+ for (ValType returnType : sig.Returns) {
+ writeValueType(os, returnType, "result type");
}
}