aboutsummaryrefslogtreecommitdiff
path: root/src/AstGen.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/AstGen.zig')
-rw-r--r--src/AstGen.zig24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/AstGen.zig b/src/AstGen.zig
index a0ff7a0e6e..d4b942ecbc 100644
--- a/src/AstGen.zig
+++ b/src/AstGen.zig
@@ -2332,8 +2332,6 @@ fn unusedResultExpr(gz: *GenZir, scope: *Scope, statement: Ast.Node.Index) Inner
.error_union_type,
.bit_not,
.error_value,
- .error_to_int,
- .int_to_error,
.slice_start,
.slice_end,
.slice_sentinel,
@@ -2420,7 +2418,6 @@ fn unusedResultExpr(gz: *GenZir, scope: *Scope, statement: Ast.Node.Index) Inner
.splat,
.reduce,
.shuffle,
- .select,
.atomic_load,
.atomic_rmw,
.mul_add,
@@ -7355,8 +7352,6 @@ fn builtinCall(
.align_of => return simpleUnOpType(gz, scope, rl, node, params[0], .align_of),
.ptr_to_int => return simpleUnOp(gz, scope, rl, node, .none, params[0], .ptr_to_int),
- .error_to_int => return simpleUnOp(gz, scope, rl, node, .none, params[0], .error_to_int),
- .int_to_error => return simpleUnOp(gz, scope, rl, node, .{ .coerced_ty = .u16_type }, params[0], .int_to_error),
.compile_error => return simpleUnOp(gz, scope, rl, node, .{ .ty = .const_slice_u8_type }, params[0], .compile_error),
.set_eval_branch_quota => return simpleUnOp(gz, scope, rl, node, .{ .coerced_ty = .u32_type }, params[0], .set_eval_branch_quota),
.enum_to_int => return simpleUnOp(gz, scope, rl, node, .none, params[0], .enum_to_int),
@@ -7396,6 +7391,22 @@ fn builtinCall(
.truncate => return typeCast(gz, scope, rl, node, params[0], params[1], .truncate),
// zig fmt: on
+ .error_to_int => {
+ const operand = try expr(gz, scope, .none, params[0]);
+ const result = try gz.addExtendedPayload(.error_to_int, Zir.Inst.UnNode{
+ .node = gz.nodeIndexToRelative(node),
+ .operand = operand,
+ });
+ return rvalue(gz, rl, result, node);
+ },
+ .int_to_error => {
+ const operand = try expr(gz, scope, .{ .coerced_ty = .u16_type }, params[0]);
+ const result = try gz.addExtendedPayload(.int_to_error, Zir.Inst.UnNode{
+ .node = gz.nodeIndexToRelative(node),
+ .operand = operand,
+ });
+ return rvalue(gz, rl, result, node);
+ },
.align_cast => {
const dest_align = try comptimeExpr(gz, scope, align_rl, params[0]);
const rhs = try expr(gz, scope, .none, params[1]);
@@ -7635,7 +7646,8 @@ fn builtinCall(
return rvalue(gz, rl, result, node);
},
.select => {
- const result = try gz.addPlNode(.select, node, Zir.Inst.Select{
+ const result = try gz.addExtendedPayload(.select, Zir.Inst.Select{
+ .node = gz.nodeIndexToRelative(node),
.elem_type = try typeExpr(gz, scope, params[0]),
.pred = try expr(gz, scope, .none, params[1]),
.a = try expr(gz, scope, .none, params[2]),