| ... | ... | @@ -672,7 +672,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void { |
| 672 | 672 | .unwrap_errunion_payload => try self.airUnwrapErrPayload(inst), |
| 673 | 673 | .unwrap_errunion_err_ptr => @panic("TODO try self.airUnwrapErrErrPtr(inst)"), |
| 674 | 674 | .unwrap_errunion_payload_ptr=> @panic("TODO try self.airUnwrapErrPayloadPtr(inst)"), |
| 675 | | .errunion_payload_ptr_set => @panic("TODO try self.airErrUnionPayloadPtrSet(inst)"), |
| 675 | .errunion_payload_ptr_set => try self.airErrUnionPayloadPtrSet(inst), |
| 676 | 676 | .err_return_trace => @panic("TODO try self.airErrReturnTrace(inst)"), |
| 677 | 677 | .set_err_return_trace => @panic("TODO try self.airSetErrReturnTrace(inst)"), |
| 678 | 678 | |
| ... | ... | @@ -1462,6 +1462,12 @@ fn airDiv(self: *Self, inst: Air.Inst.Index) !void { |
| 1462 | 1462 | return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none }); |
| 1463 | 1463 | } |
| 1464 | 1464 | |
| 1465 | fn airErrUnionPayloadPtrSet(self: *Self, inst: Air.Inst.Index) !void { |
| 1466 | const ty_op = self.air.instructions.items(.data)[inst].ty_op; |
| 1467 | const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement .errunion_payload_ptr_set for {}", .{self.target.cpu.arch}); |
| 1468 | return self.finishAir(inst, result, .{ ty_op.operand, .none, .none }); |
| 1469 | } |
| 1470 | |
| 1465 | 1471 | fn airFence(self: *Self, inst: Air.Inst.Index) !void { |
| 1466 | 1472 | // TODO weaken this as needed, currently this implements the strongest membar form |
| 1467 | 1473 | const fence = self.air.instructions.items(.data)[inst].fence; |