[WebAssemby] Implement block signatures.
Per spec changes, this implements block signatures, and adds just enough
logic to produce correct block signatures at the ends of functions.
Differential Revision: https://reviews.llvm.org/D25144
llvm-svn: 283503
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyInstrControl.td b/llvm/lib/Target/WebAssembly/WebAssemblyInstrControl.td
index d1af7313..f81cc59 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyInstrControl.td
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyInstrControl.td
@@ -61,8 +61,8 @@
// use/clobber VALUE_STACK to prevent them from being moved into the middle of
// an expression tree.
let Uses = [VALUE_STACK], Defs = [VALUE_STACK] in {
-def BLOCK : I<(outs), (ins), [], "block", 0x01>;
-def LOOP : I<(outs), (ins), [], "loop", 0x02>;
+def BLOCK : I<(outs), (ins Signature:$sig), [], "block \t$sig", 0x01>;
+def LOOP : I<(outs), (ins Signature:$sig), [], "loop \t$sig", 0x02>;
def END_BLOCK : I<(outs), (ins), [], "end_block">;
def END_LOOP : I<(outs), (ins), [], "end_loop">;
} // Uses = [VALUE_STACK], Defs = [VALUE_STACK]