aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index c48200e845..a99ff18dfd 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -1063,13 +1063,12 @@ pub fn genTypedValue(
},
.Optional => {
if (typed_value.ty.isPtrLikeOptional()) {
- if (typed_value.val.isNull())
- return GenResult.mcv(.{ .immediate = 0 });
+ if (typed_value.val.tag() == .null_value) return GenResult.mcv(.{ .immediate = 0 });
var buf: Type.Payload.ElemType = undefined;
return genTypedValue(bin_file, src_loc, .{
.ty = typed_value.ty.optionalChild(&buf),
- .val = typed_value.val,
+ .val = if (typed_value.val.castTag(.opt_payload)) |pl| pl.data else typed_value.val,
}, owner_decl_index);
} else if (typed_value.ty.abiSize(target) == 1) {
return GenResult.mcv(.{ .immediate = @boolToInt(!typed_value.val.isNull()) });