diff --git a/llvm/include/llvm/BinaryFormat/Wasm.h b/llvm/include/llvm/BinaryFormat/Wasm.h --- a/llvm/include/llvm/BinaryFormat/Wasm.h +++ b/llvm/include/llvm/BinaryFormat/Wasm.h @@ -103,7 +103,7 @@ struct WasmTagType { // Kind of tag. Currently only WASM_TAG_ATTRIBUTE_EXCEPTION is possible. - uint32_t Attribute; + uint8_t Attribute; uint32_t SigIndex; }; @@ -363,7 +363,7 @@ }; // Kinds of tag attributes. -enum WasmTagAttribute : unsigned { +enum WasmTagAttribute : uint8_t { WASM_TAG_ATTRIBUTE_EXCEPTION = 0x0, }; diff --git a/llvm/lib/MC/WasmObjectWriter.cpp b/llvm/lib/MC/WasmObjectWriter.cpp --- a/llvm/lib/MC/WasmObjectWriter.cpp +++ b/llvm/lib/MC/WasmObjectWriter.cpp @@ -814,7 +814,7 @@ encodeULEB128(NumElements, W->OS); // initial break; case wasm::WASM_EXTERNAL_TAG: - encodeULEB128(Import.Tag.Attribute, W->OS); + W->OS << char(Import.Tag.Attribute); encodeULEB128(Import.Tag.SigIndex, W->OS); break; default: @@ -848,7 +848,7 @@ encodeULEB128(Tags.size(), W->OS); for (const wasm::WasmTagType &Tag : Tags) { - encodeULEB128(Tag.Attribute, W->OS); + W->OS << char(Tag.Attribute); encodeULEB128(Tag.SigIndex, W->OS); } diff --git a/llvm/lib/Object/WasmObjectFile.cpp b/llvm/lib/Object/WasmObjectFile.cpp --- a/llvm/lib/Object/WasmObjectFile.cpp +++ b/llvm/lib/Object/WasmObjectFile.cpp @@ -1066,7 +1066,7 @@ } case wasm::WASM_EXTERNAL_TAG: NumImportedTags++; - Im.Tag.Attribute = readVarint32(Ctx); + Im.Tag.Attribute = readUint8(Ctx); Im.Tag.SigIndex = readVarint32(Ctx); break; default: @@ -1143,7 +1143,7 @@ while (Count--) { wasm::WasmTag Tag; Tag.Index = NumImportedTags + Tags.size(); - Tag.Type.Attribute = readVaruint32(Ctx); + Tag.Type.Attribute = readUint8(Ctx); Tag.Type.SigIndex = readVaruint32(Ctx); Tags.push_back(Tag); }