aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-03-26 17:31:42 +0200
committerGitHub <noreply@github.com>2023-03-26 17:31:42 +0200
commit32591c1d99297b370e34674dc135705c3849968d (patch)
treed8fde435747702cd2d2a765b3ca29f3c351c6490 /src/codegen.zig
parent4a5628e7306a242ce0d2f14f09eaf17ad4ae87b2 (diff)
parent65f77878b4d37a2e179c90f5f0b2515d0901a43e (diff)
downloadzig-32591c1d99297b370e34674dc135705c3849968d.tar.gz
zig-32591c1d99297b370e34674dc135705c3849968d.zip
Merge pull request #15076 from jacobly0/x86_64-backend
x86_64: implement things
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()) });