diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2023-03-25 02:37:31 -0400 |
|---|---|---|
| committer | Jacob Young <jacobly0@users.noreply.github.com> | 2023-03-25 16:23:55 -0400 |
| commit | d9ce69dc3949fb11c43520096001b7f06e1a96f3 (patch) | |
| tree | 52924672c6b62c907ad742c42ceaf1a92a34e1f2 /src/codegen.zig | |
| parent | 3ece9758574e600c1d97add143c24fefed3d2d82 (diff) | |
| download | zig-d9ce69dc3949fb11c43520096001b7f06e1a96f3.tar.gz zig-d9ce69dc3949fb11c43520096001b7f06e1a96f3.zip | |
codegen: fix ptr-like optional constants
Diffstat (limited to 'src/codegen.zig')
| -rw-r--r-- | src/codegen.zig | 5 |
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()) }); |
