commit d9ce69dc3949fb11c43520096001b7f06e1a96f3 (tree)
parent 3ece9758574e600c1d97add143c24fefed3d2d82
Author: Jacob Young <jacobly0@users.noreply.github.com>
Date: Sat, 25 Mar 2023 02:37:31 -0400
codegen: fix ptr-like optional constants
Diffstat:
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git 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()) });