| ... | ... | @@ -683,7 +683,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void { |
| 683 | 683 | .save_err_return_trace_index=> @panic("TODO try self.airSaveErrReturnTraceIndex(inst)"), |
| 684 | 684 | |
| 685 | 685 | .wrap_optional => try self.airWrapOptional(inst), |
| 686 | | .wrap_errunion_payload => @panic("TODO try self.airWrapErrUnionPayload(inst)"), |
| 686 | .wrap_errunion_payload => try self.airWrapErrUnionPayload(inst), |
| 687 | 687 | .wrap_errunion_err => try self.airWrapErrUnionErr(inst), |
| 688 | 688 | |
| 689 | 689 | .add_optimized, |
| ... | ... | @@ -2493,6 +2493,13 @@ fn airWrapErrUnionErr(self: *Self, inst: Air.Inst.Index) !void { |
| 2493 | 2493 | return self.finishAir(inst, result, .{ ty_op.operand, .none, .none }); |
| 2494 | 2494 | } |
| 2495 | 2495 | |
| 2496 | /// T to E!T |
| 2497 | fn airWrapErrUnionPayload(self: *Self, inst: Air.Inst.Index) !void { |
| 2498 | const ty_op = self.air.instructions.items(.data)[inst].ty_op; |
| 2499 | const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement wrap errunion payload for {}", .{self.target.cpu.arch}); |
| 2500 | return self.finishAir(inst, result, .{ ty_op.operand, .none, .none }); |
| 2501 | } |
| 2502 | |
| 2496 | 2503 | fn airWrapOptional(self: *Self, inst: Air.Inst.Index) !void { |
| 2497 | 2504 | const ty_op = self.air.instructions.items(.data)[inst].ty_op; |
| 2498 | 2505 | const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: { |