authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-03-25 02:37:31-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-03-25 16:23:55-04:00
logd9ce69dc3949fb11c43520096001b7f06e1a96f3
tree52924672c6b62c907ad742c42ceaf1a92a34e1f2
parent3ece9758574e600c1d97add143c24fefed3d2d82

codegen: fix ptr-like optional constants


1 files changed, 2 insertions(+), 3 deletions(-)

src/codegen.zig+2-3
...@@ -1063,13 +1063,12 @@ pub fn genTypedValue(...@@ -1063,13 +1063,12 @@ pub fn genTypedValue(
1063 },1063 },
1064 .Optional => {1064 .Optional => {
1065 if (typed_value.ty.isPtrLikeOptional()) {1065 if (typed_value.ty.isPtrLikeOptional()) {
1066 if (typed_value.val.isNull())1066 if (typed_value.val.tag() == .null_value) return GenResult.mcv(.{ .immediate = 0 });
1067 return GenResult.mcv(.{ .immediate = 0 });
10681067
1069 var buf: Type.Payload.ElemType = undefined;1068 var buf: Type.Payload.ElemType = undefined;
1070 return genTypedValue(bin_file, src_loc, .{1069 return genTypedValue(bin_file, src_loc, .{
1071 .ty = typed_value.ty.optionalChild(&buf),1070 .ty = typed_value.ty.optionalChild(&buf),
1072 .val = typed_value.val,1071 .val = if (typed_value.val.castTag(.opt_payload)) |pl| pl.data else typed_value.val,
1073 }, owner_decl_index);1072 }, owner_decl_index);
1074 } else if (typed_value.ty.abiSize(target) == 1) {1073 } else if (typed_value.ty.abiSize(target) == 1) {
1075 return GenResult.mcv(.{ .immediate = @boolToInt(!typed_value.val.isNull()) });1074 return GenResult.mcv(.{ .immediate = @boolToInt(!typed_value.val.isNull()) });