From 77072d1a1785f389c3c9918c6d7c6179ac2e43f4 Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Wed, 2 Mar 2022 17:40:37 +0100 Subject: [PATCH] x64: fix bug in lowering optionals directly to immediate --- src/arch/x86_64/CodeGen.zig | 2 +- test/behavior/cast.zig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig index da98c1c901..79e5c88050 100644 --- a/src/arch/x86_64/CodeGen.zig +++ b/src/arch/x86_64/CodeGen.zig @@ -5688,7 +5688,7 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue { .val = typed_value.val, }); } else if (typed_value.ty.abiSize(self.target.*) == 1) { - return MCValue{ .immediate = @boolToInt(typed_value.val.isNull()) }; + return MCValue{ .immediate = @boolToInt(!typed_value.val.isNull()) }; } }, .Enum => { diff --git a/test/behavior/cast.zig b/test/behavior/cast.zig index 9bdb0f35f6..60eacfee5d 100644 --- a/test/behavior/cast.zig +++ b/test/behavior/cast.zig @@ -179,7 +179,7 @@ test "@floatCast comptime_int and comptime_float" { test "coerce undefined to optional" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; try expect(MakeType(void).getNull() == null); try expect(MakeType(void).getNonNull() != null);