From 3a059ebe4c84a1e541bb3b2ccee2e7cc25686a4d Mon Sep 17 00:00:00 2001 From: Luuk de Gram Date: Mon, 23 May 2022 22:06:27 +0200 Subject: wasm: Fixes for error union semantics --- src/codegen.zig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/codegen.zig') diff --git a/src/codegen.zig b/src/codegen.zig index 81b303ab82..0f411dc481 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -714,7 +714,7 @@ pub fn generateSymbol( const is_payload = typed_value.val.errorUnionIsPayload(); if (!payload_ty.hasRuntimeBitsIgnoreComptime()) { - const err_val = if (!is_payload) typed_value.val else Value.initTag(.zero); + const err_val = if (is_payload) Value.initTag(.zero) else typed_value.val; return generateSymbol(bin_file, src_loc, .{ .ty = error_ty, .val = err_val, @@ -763,7 +763,7 @@ pub fn generateSymbol( } // Payload size is larger than error set, so emit our error set last - if (error_align < payload_align) { + if (error_align <= payload_align) { const begin = code.items.len; switch (try generateSymbol(bin_file, src_loc, .{ .ty = error_ty, @@ -794,7 +794,7 @@ pub fn generateSymbol( try code.writer().writeInt(u32, kv.value, endian); }, else => { - try code.writer().writeByteNTimes(0, @intCast(usize, typed_value.ty.abiSize(target))); + try code.writer().writeByteNTimes(0, @intCast(usize, Type.anyerror.abiSize(target))); }, } return Result{ .appended = {} }; -- cgit v1.2.3