[WebAssembly] Encode block signatures as SLEB instead of ULEB
authorDerek Schuff <dschuff@google.com>
Mon, 17 Apr 2017 20:28:28 +0000 (20:28 +0000)
committerDerek Schuff <dschuff@google.com>
Mon, 17 Apr 2017 20:28:28 +0000 (20:28 +0000)
Use SLEB (varint) for block_type immediates in accordance with the spec.

Patch by Yury Delendik

llvm-svn: 300490

llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCCodeEmitter.cpp

index a0b0089..544cd65 100644 (file)
@@ -94,6 +94,8 @@ void WebAssemblyMCCodeEmitter::encodeInstruction(
               MCFixupKind(WebAssembly::fixup_code_global_index), MI.getLoc()));
           ++MCNumFixups;
           encodeULEB128(uint64_t(MO.getImm()), OS);
+        } else if (Info.OperandType == WebAssembly::OPERAND_SIGNATURE) {
+          encodeSLEB128(int64_t(MO.getImm()), OS);
         } else {
           encodeULEB128(uint64_t(MO.getImm()), OS);
         }