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 da98c1c90124da3a71f92fb893ffada6dea9bf68..79e5c88050d32597736f112afd0d7b5b4e175ae0 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 9bdb0f35f63a9d4fb174f101f264b07952a60ea3..60eacfee5d36288c1853120f71a62db7ed03273c 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); -- 2.54.0