diff options
| author | jacob gw <jacoblevgw@gmail.com> | 2021-03-26 17:54:41 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-03-28 18:22:01 -0700 |
| commit | 0005b346375f1fbe7bc42c22d658e3218bbd599d (patch) | |
| tree | d88211b36f2be7689a138bf0d5f1a2e62f695323 /src/codegen.zig | |
| parent | f80f8a7a7835db5f8b13aab23b4ee79e88c25e63 (diff) | |
| download | zig-0005b346375f1fbe7bc42c22d658e3218bbd599d.tar.gz zig-0005b346375f1fbe7bc42c22d658e3218bbd599d.zip | |
stage2: implement sema for @errorToInt and @intToError
Diffstat (limited to 'src/codegen.zig')
| -rw-r--r-- | src/codegen.zig | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index 8c18c6777b..4142b562b3 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -898,6 +898,8 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type { .is_null_ptr => return self.genIsNullPtr(inst.castTag(.is_null_ptr).?), .is_err => return self.genIsErr(inst.castTag(.is_err).?), .is_err_ptr => return self.genIsErrPtr(inst.castTag(.is_err_ptr).?), + .error_to_int => return self.genErrorToInt(inst.castTag(.error_to_int).?), + .int_to_error => return self.genIntToError(inst.castTag(.int_to_error).?), .load => return self.genLoad(inst.castTag(.load).?), .loop => return self.genLoop(inst.castTag(.loop).?), .not => return self.genNot(inst.castTag(.not).?), @@ -2557,6 +2559,14 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type { return self.fail(inst.base.src, "TODO load the operand and call genIsErr", .{}); } + fn genErrorToInt(self: *Self, inst: *ir.Inst.UnOp) !MCValue { + return self.resolveInst(inst.operand); + } + + fn genIntToError(self: *Self, inst: *ir.Inst.UnOp) !MCValue { + return self.resolveInst(inst.operand); + } + fn genLoop(self: *Self, inst: *ir.Inst.Loop) !MCValue { // A loop is a setup to be able to jump back to the beginning. const start_index = self.code.items.len; |
