| ... | ... | @@ -182,7 +182,7 @@ const Namespace = Module.Namespace; |
| 182 | 182 | const CompileError = Module.CompileError; |
| 183 | 183 | const SemaError = Module.SemaError; |
| 184 | 184 | const Decl = Module.Decl; |
| 185 | | const LazySrcLoc = std.zig.LazySrcLoc; |
| 185 | const LazySrcLoc = Zcu.LazySrcLoc; |
| 186 | 186 | const RangeSet = @import("RangeSet.zig"); |
| 187 | 187 | const target_util = @import("target.zig"); |
| 188 | 188 | const Package = @import("Package.zig"); |
| ... | ... | @@ -395,6 +395,18 @@ pub const Block = struct { |
| 395 | 395 | /// `block` in order for codegen to match lexical scoping for debug vars. |
| 396 | 396 | need_debug_scope: ?*bool = null, |
| 397 | 397 | |
| 398 | // These functions will be less stupid soon! |
| 399 | |
| 400 | fn nodeOffset(block: Block, node_offset: i32) LazySrcLoc { |
| 401 | _ = block; |
| 402 | return LazySrcLoc.nodeOffset(node_offset); |
| 403 | } |
| 404 | |
| 405 | fn tokenOffset(block: Block, tok_offset: u32) LazySrcLoc { |
| 406 | _ = block; |
| 407 | return .{ .token_offset = tok_offset }; |
| 408 | } |
| 409 | |
| 398 | 410 | const ComptimeReason = union(enum) { |
| 399 | 411 | c_import: struct { |
| 400 | 412 | block: *Block, |
| ... | ... | @@ -1449,7 +1461,7 @@ fn analyzeBodyInner( |
| 1449 | 1461 | .check_comptime_control_flow => { |
| 1450 | 1462 | if (!block.is_comptime) { |
| 1451 | 1463 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 1452 | | const src = inst_data.src(); |
| 1464 | const src = block.nodeOffset(inst_data.src_node); |
| 1453 | 1465 | const inline_block = inst_data.operand.toIndex().?; |
| 1454 | 1466 | |
| 1455 | 1467 | var check_block = block; |
| ... | ... | @@ -1482,13 +1494,13 @@ fn analyzeBodyInner( |
| 1482 | 1494 | }, |
| 1483 | 1495 | .restore_err_ret_index_unconditional => { |
| 1484 | 1496 | const un_node = datas[@intFromEnum(inst)].un_node; |
| 1485 | | try sema.restoreErrRetIndex(block, un_node.src(), un_node.operand, .none); |
| 1497 | try sema.restoreErrRetIndex(block, block.nodeOffset(un_node.src_node), un_node.operand, .none); |
| 1486 | 1498 | i += 1; |
| 1487 | 1499 | continue; |
| 1488 | 1500 | }, |
| 1489 | 1501 | .restore_err_ret_index_fn_entry => { |
| 1490 | 1502 | const un_node = datas[@intFromEnum(inst)].un_node; |
| 1491 | | try sema.restoreErrRetIndex(block, un_node.src(), .none, un_node.operand); |
| 1503 | try sema.restoreErrRetIndex(block, block.nodeOffset(un_node.src_node), .none, un_node.operand); |
| 1492 | 1504 | i += 1; |
| 1493 | 1505 | continue; |
| 1494 | 1506 | }, |
| ... | ... | @@ -1667,7 +1679,7 @@ fn analyzeBodyInner( |
| 1667 | 1679 | try labeled_block.block.instructions.appendSlice(gpa, block.instructions.items[block_index..]); |
| 1668 | 1680 | block.instructions.items.len = block_index; |
| 1669 | 1681 | |
| 1670 | | const block_result = try sema.resolveAnalyzedBlock(block, inst_data.src(), &labeled_block.block, &labeled_block.label.merges, need_debug_scope); |
| 1682 | const block_result = try sema.resolveAnalyzedBlock(block, block.nodeOffset(inst_data.src_node), &labeled_block.block, &labeled_block.label.merges, need_debug_scope); |
| 1671 | 1683 | { |
| 1672 | 1684 | // Destroy the ad-hoc block entry so that it does not interfere with |
| 1673 | 1685 | // the next iteration of comptime control flow, if any. |
| ... | ... | @@ -1736,7 +1748,7 @@ fn analyzeBodyInner( |
| 1736 | 1748 | .@"try" => blk: { |
| 1737 | 1749 | if (!block.is_comptime) break :blk try sema.zirTry(block, inst); |
| 1738 | 1750 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 1739 | | const src = inst_data.src(); |
| 1751 | const src = block.nodeOffset(inst_data.src_node); |
| 1740 | 1752 | const operand_src: LazySrcLoc = .{ .node_offset_bin_lhs = inst_data.src_node }; |
| 1741 | 1753 | const extra = sema.code.extraData(Zir.Inst.Try, inst_data.payload_index); |
| 1742 | 1754 | const inline_body = sema.code.bodySlice(extra.end, extra.data.body_len); |
| ... | ... | @@ -1762,7 +1774,7 @@ fn analyzeBodyInner( |
| 1762 | 1774 | .try_ptr => blk: { |
| 1763 | 1775 | if (!block.is_comptime) break :blk try sema.zirTryPtr(block, inst); |
| 1764 | 1776 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 1765 | | const src = inst_data.src(); |
| 1777 | const src = block.nodeOffset(inst_data.src_node); |
| 1766 | 1778 | const operand_src: LazySrcLoc = .{ .node_offset_bin_lhs = inst_data.src_node }; |
| 1767 | 1779 | const extra = sema.code.extraData(Zir.Inst.Try, inst_data.payload_index); |
| 1768 | 1780 | const inline_body = sema.code.bodySlice(extra.end, extra.data.body_len); |
| ... | ... | @@ -1929,7 +1941,7 @@ fn resolveDestType( |
| 1929 | 1941 | const msg = msg: { |
| 1930 | 1942 | const msg = try sema.errMsg(block, src, "{s} must have a known result type", .{builtin_name}); |
| 1931 | 1943 | errdefer msg.destroy(sema.gpa); |
| 1932 | | switch (sema.genericPoisonReason(zir_ref)) { |
| 1944 | switch (sema.genericPoisonReason(block, zir_ref)) { |
| 1933 | 1945 | .anytype_param => |call_src| try sema.errNote(block, call_src, msg, "result type is unknown due to anytype parameter", .{}), |
| 1934 | 1946 | .anyopaque_ptr => |ptr_src| try sema.errNote(block, ptr_src, msg, "result type is unknown due to opaque pointer type", .{}), |
| 1935 | 1947 | .unknown => {}, |
| ... | ... | @@ -1963,7 +1975,7 @@ const GenericPoisonReason = union(enum) { |
| 1963 | 1975 | |
| 1964 | 1976 | /// Backtracks through ZIR instructions to determine the reason a generic poison |
| 1965 | 1977 | /// type was created. Used for error reporting. |
| 1966 | | fn genericPoisonReason(sema: *Sema, ref: Zir.Inst.Ref) GenericPoisonReason { |
| 1978 | fn genericPoisonReason(sema: *Sema, block: *Block, ref: Zir.Inst.Ref) GenericPoisonReason { |
| 1967 | 1979 | var cur = ref; |
| 1968 | 1980 | while (true) { |
| 1969 | 1981 | const inst = cur.toIndex() orelse return .unknown; |
| ... | ... | @@ -1999,7 +2011,7 @@ fn genericPoisonReason(sema: *Sema, ref: Zir.Inst.Ref) GenericPoisonReason { |
| 1999 | 2011 | cur = un_node.operand; |
| 2000 | 2012 | } else { |
| 2001 | 2013 | // This must be an anyopaque pointer! |
| 2002 | | return .{ .anyopaque_ptr = un_node.src() }; |
| 2014 | return .{ .anyopaque_ptr = block.nodeOffset(un_node.src_node) }; |
| 2003 | 2015 | } |
| 2004 | 2016 | }, |
| 2005 | 2017 | .call, .field_call => { |
| ... | ... | @@ -2007,7 +2019,7 @@ fn genericPoisonReason(sema: *Sema, ref: Zir.Inst.Ref) GenericPoisonReason { |
| 2007 | 2019 | // evaluating an `anytype` function parameter. |
| 2008 | 2020 | // TODO: better source location - function decl rather than call |
| 2009 | 2021 | const pl_node = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 2010 | | return .{ .anytype_param = pl_node.src() }; |
| 2022 | return .{ .anytype_param = block.nodeOffset(pl_node.src_node) }; |
| 2011 | 2023 | }, |
| 2012 | 2024 | else => return .unknown, |
| 2013 | 2025 | } |
| ... | ... | @@ -2776,7 +2788,7 @@ fn zirStructDecl( |
| 2776 | 2788 | const ip = &mod.intern_pool; |
| 2777 | 2789 | const small: Zir.Inst.StructDecl.Small = @bitCast(extended.small); |
| 2778 | 2790 | const extra = sema.code.extraData(Zir.Inst.StructDecl, extended.operand); |
| 2779 | | const src = extra.data.src(); |
| 2791 | const src: LazySrcLoc = .{ .node_abs = extra.data.src_node }; |
| 2780 | 2792 | var extra_index = extra.end; |
| 2781 | 2793 | |
| 2782 | 2794 | const captures_len = if (small.has_captures_len) blk: { |
| ... | ... | @@ -2991,7 +3003,7 @@ fn zirEnumDecl( |
| 2991 | 3003 | const extra = sema.code.extraData(Zir.Inst.EnumDecl, extended.operand); |
| 2992 | 3004 | var extra_index: usize = extra.end; |
| 2993 | 3005 | |
| 2994 | | const src = extra.data.src(); |
| 3006 | const src: LazySrcLoc = .{ .node_abs = extra.data.src_node }; |
| 2995 | 3007 | |
| 2996 | 3008 | const tag_type_ref = if (small.has_tag_type) blk: { |
| 2997 | 3009 | const tag_type_ref: Zir.Inst.Ref = @enumFromInt(sema.code.extra[extra_index]); |
| ... | ... | @@ -3282,7 +3294,7 @@ fn zirUnionDecl( |
| 3282 | 3294 | const extra = sema.code.extraData(Zir.Inst.UnionDecl, extended.operand); |
| 3283 | 3295 | var extra_index: usize = extra.end; |
| 3284 | 3296 | |
| 3285 | | const src = extra.data.src(); |
| 3297 | const src: LazySrcLoc = .{ .node_abs = extra.data.src_node }; |
| 3286 | 3298 | |
| 3287 | 3299 | extra_index += @intFromBool(small.has_tag_type); |
| 3288 | 3300 | const captures_len = if (small.has_captures_len) blk: { |
| ... | ... | @@ -3397,7 +3409,7 @@ fn zirOpaqueDecl( |
| 3397 | 3409 | const extra = sema.code.extraData(Zir.Inst.OpaqueDecl, extended.operand); |
| 3398 | 3410 | var extra_index: usize = extra.end; |
| 3399 | 3411 | |
| 3400 | | const src = extra.data.src(); |
| 3412 | const src: LazySrcLoc = .{ .node_abs = extra.data.src_node }; |
| 3401 | 3413 | |
| 3402 | 3414 | const captures_len = if (small.has_captures_len) blk: { |
| 3403 | 3415 | const captures_len = sema.code.extra[extra_index]; |
| ... | ... | @@ -3528,7 +3540,7 @@ fn zirRef(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Ins |
| 3528 | 3540 | |
| 3529 | 3541 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_tok; |
| 3530 | 3542 | const operand = try sema.resolveInst(inst_data.operand); |
| 3531 | | return sema.analyzeRef(block, inst_data.src(), operand); |
| 3543 | return sema.analyzeRef(block, block.tokenOffset(inst_data.src_tok), operand); |
| 3532 | 3544 | } |
| 3533 | 3545 | |
| 3534 | 3546 | fn zirEnsureResultUsed(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void { |
| ... | ... | @@ -3537,7 +3549,7 @@ fn zirEnsureResultUsed(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Compile |
| 3537 | 3549 | |
| 3538 | 3550 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 3539 | 3551 | const operand = try sema.resolveInst(inst_data.operand); |
| 3540 | | const src = inst_data.src(); |
| 3552 | const src = block.nodeOffset(inst_data.src_node); |
| 3541 | 3553 | |
| 3542 | 3554 | return sema.ensureResultUsed(block, sema.typeOf(operand), src); |
| 3543 | 3555 | } |
| ... | ... | @@ -3581,7 +3593,7 @@ fn zirEnsureResultNonError(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Com |
| 3581 | 3593 | const mod = sema.mod; |
| 3582 | 3594 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 3583 | 3595 | const operand = try sema.resolveInst(inst_data.operand); |
| 3584 | | const src = inst_data.src(); |
| 3596 | const src = block.nodeOffset(inst_data.src_node); |
| 3585 | 3597 | const operand_ty = sema.typeOf(operand); |
| 3586 | 3598 | switch (operand_ty.zigTypeTag(mod)) { |
| 3587 | 3599 | .ErrorSet => return sema.fail(block, src, "error set is discarded", .{}), |
| ... | ... | @@ -3604,7 +3616,7 @@ fn zirEnsureErrUnionPayloadVoid(sema: *Sema, block: *Block, inst: Zir.Inst.Index |
| 3604 | 3616 | |
| 3605 | 3617 | const mod = sema.mod; |
| 3606 | 3618 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 3607 | | const src = inst_data.src(); |
| 3619 | const src = block.nodeOffset(inst_data.src_node); |
| 3608 | 3620 | const operand = try sema.resolveInst(inst_data.operand); |
| 3609 | 3621 | const operand_ty = sema.typeOf(operand); |
| 3610 | 3622 | const err_union_ty = if (operand_ty.zigTypeTag(mod) == .Pointer) |
| ... | ... | @@ -3629,7 +3641,7 @@ fn zirIndexablePtrLen(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileE |
| 3629 | 3641 | defer tracy.end(); |
| 3630 | 3642 | |
| 3631 | 3643 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 3632 | | const src = inst_data.src(); |
| 3644 | const src = block.nodeOffset(inst_data.src_node); |
| 3633 | 3645 | const object = try sema.resolveInst(inst_data.operand); |
| 3634 | 3646 | |
| 3635 | 3647 | return indexablePtrLen(sema, block, src, object); |
| ... | ... | @@ -4223,7 +4235,7 @@ fn zirResolveInferredAlloc(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Com |
| 4223 | 4235 | const mod = sema.mod; |
| 4224 | 4236 | const gpa = sema.gpa; |
| 4225 | 4237 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 4226 | | const src = inst_data.src(); |
| 4238 | const src = block.nodeOffset(inst_data.src_node); |
| 4227 | 4239 | const ty_src: LazySrcLoc = .{ .node_offset_var_decl_ty = inst_data.src_node }; |
| 4228 | 4240 | const ptr = try sema.resolveInst(inst_data.operand); |
| 4229 | 4241 | const ptr_inst = ptr.toIndex().?; |
| ... | ... | @@ -4364,7 +4376,7 @@ fn zirForLen(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air. |
| 4364 | 4376 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 4365 | 4377 | const extra = sema.code.extraData(Zir.Inst.MultiOp, inst_data.payload_index); |
| 4366 | 4378 | const args = sema.code.refSlice(extra.end, extra.data.operands_len); |
| 4367 | | const src = inst_data.src(); |
| 4379 | const src = block.nodeOffset(inst_data.src_node); |
| 4368 | 4380 | |
| 4369 | 4381 | var len: Air.Inst.Ref = .none; |
| 4370 | 4382 | var len_val: ?Value = null; |
| ... | ... | @@ -4507,13 +4519,13 @@ fn optEuBasePtrInit(sema: *Sema, block: *Block, ptr: Air.Inst.Ref, src: LazySrcL |
| 4507 | 4519 | fn zirOptEuBasePtrInit(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 4508 | 4520 | const un_node = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 4509 | 4521 | const ptr = try sema.resolveInst(un_node.operand); |
| 4510 | | return sema.optEuBasePtrInit(block, ptr, un_node.src()); |
| 4522 | return sema.optEuBasePtrInit(block, ptr, block.nodeOffset(un_node.src_node)); |
| 4511 | 4523 | } |
| 4512 | 4524 | |
| 4513 | 4525 | fn zirCoercePtrElemTy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 4514 | 4526 | const mod = sema.mod; |
| 4515 | 4527 | const pl_node = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 4516 | | const src = pl_node.src(); |
| 4528 | const src = block.nodeOffset(pl_node.src_node); |
| 4517 | 4529 | const extra = sema.code.extraData(Zir.Inst.Bin, pl_node.payload_index).data; |
| 4518 | 4530 | const uncoerced_val = try sema.resolveInst(extra.rhs); |
| 4519 | 4531 | const maybe_wrapped_ptr_ty = sema.resolveType(block, .unneeded, extra.lhs) catch |err| switch (err) { |
| ... | ... | @@ -4564,7 +4576,7 @@ fn zirCoercePtrElemTy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileE |
| 4564 | 4576 | fn zirValidateRefTy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void { |
| 4565 | 4577 | const mod = sema.mod; |
| 4566 | 4578 | const un_tok = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_tok; |
| 4567 | | const src = un_tok.src(); |
| 4579 | const src = block.tokenOffset(un_tok.src_tok); |
| 4568 | 4580 | // In case of GenericPoison, we don't actually have a type, so this will be |
| 4569 | 4581 | // treated as an untyped address-of operator. |
| 4570 | 4582 | const operand_air_inst = sema.resolveInst(un_tok.operand) catch |err| switch (err) { |
| ... | ... | @@ -4593,7 +4605,7 @@ fn zirValidateArrayInitRefTy( |
| 4593 | 4605 | ) CompileError!Air.Inst.Ref { |
| 4594 | 4606 | const mod = sema.mod; |
| 4595 | 4607 | const pl_node = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 4596 | | const src = pl_node.src(); |
| 4608 | const src = block.nodeOffset(pl_node.src_node); |
| 4597 | 4609 | const extra = sema.code.extraData(Zir.Inst.ArrayInitRefTy, pl_node.payload_index).data; |
| 4598 | 4610 | const maybe_wrapped_ptr_ty = sema.resolveType(block, .unneeded, extra.ptr_ty) catch |err| switch (err) { |
| 4599 | 4611 | error.GenericPoison => return .generic_poison_type, |
| ... | ... | @@ -4635,7 +4647,7 @@ fn zirValidateArrayInitTy( |
| 4635 | 4647 | ) CompileError!void { |
| 4636 | 4648 | const mod = sema.mod; |
| 4637 | 4649 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 4638 | | const src = inst_data.src(); |
| 4650 | const src = block.nodeOffset(inst_data.src_node); |
| 4639 | 4651 | const ty_src: LazySrcLoc = if (is_result_ty) src else .{ .node_offset_init_ty = inst_data.src_node }; |
| 4640 | 4652 | const extra = sema.code.extraData(Zir.Inst.ArrayInit, inst_data.payload_index).data; |
| 4641 | 4653 | const ty = sema.resolveType(block, ty_src, extra.ty) catch |err| switch (err) { |
| ... | ... | @@ -4698,7 +4710,7 @@ fn zirValidateStructInitTy( |
| 4698 | 4710 | ) CompileError!void { |
| 4699 | 4711 | const mod = sema.mod; |
| 4700 | 4712 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 4701 | | const src = inst_data.src(); |
| 4713 | const src = block.nodeOffset(inst_data.src_node); |
| 4702 | 4714 | const ty = sema.resolveType(block, src, inst_data.operand) catch |err| switch (err) { |
| 4703 | 4715 | // It's okay for the type to be unknown: this will result in an anonymous struct init. |
| 4704 | 4716 | error.GenericPoison => return, |
| ... | ... | @@ -4723,7 +4735,7 @@ fn zirValidatePtrStructInit( |
| 4723 | 4735 | |
| 4724 | 4736 | const mod = sema.mod; |
| 4725 | 4737 | const validate_inst = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 4726 | | const init_src = validate_inst.src(); |
| 4738 | const init_src = block.nodeOffset(validate_inst.src_node); |
| 4727 | 4739 | const validate_extra = sema.code.extraData(Zir.Inst.Block, validate_inst.payload_index); |
| 4728 | 4740 | const instrs = sema.code.bodySlice(validate_extra.end, validate_extra.data.body_len); |
| 4729 | 4741 | const field_ptr_data = sema.code.instructions.items(.data)[@intFromEnum(instrs[0])].pl_node; |
| ... | ... | @@ -4898,11 +4910,11 @@ fn validateUnionInit( |
| 4898 | 4910 | try sema.storePtr2(block, init_src, union_ptr, init_src, union_init, init_src, .store); |
| 4899 | 4911 | return; |
| 4900 | 4912 | } else if (try sema.typeRequiresComptime(union_ty)) { |
| 4901 | | return sema.failWithNeededComptime(block, field_ptr_data.src(), .{ |
| 4913 | return sema.failWithNeededComptime(block, block.nodeOffset(field_ptr_data.src_node), .{ |
| 4902 | 4914 | .needed_comptime_reason = "initializer of comptime only union must be comptime-known", |
| 4903 | 4915 | }); |
| 4904 | 4916 | } |
| 4905 | | if (init_ref) |v| try sema.validateRuntimeValue(block, field_ptr_data.src(), v); |
| 4917 | if (init_ref) |v| try sema.validateRuntimeValue(block, block.nodeOffset(field_ptr_data.src_node), v); |
| 4906 | 4918 | |
| 4907 | 4919 | const new_tag = Air.internedToRef(tag_val.toIntern()); |
| 4908 | 4920 | const set_tag_inst = try block.addBinOp(.set_union_tag, union_ptr, new_tag); |
| ... | ... | @@ -5089,7 +5101,7 @@ fn validateStructInit( |
| 5089 | 5101 | field_values[i] = val.toIntern(); |
| 5090 | 5102 | } else if (require_comptime) { |
| 5091 | 5103 | const field_ptr_data = sema.code.instructions.items(.data)[@intFromEnum(field_ptr)].pl_node; |
| 5092 | | return sema.failWithNeededComptime(block, field_ptr_data.src(), .{ |
| 5104 | return sema.failWithNeededComptime(block, block.nodeOffset(field_ptr_data.src_node), .{ |
| 5093 | 5105 | .needed_comptime_reason = "initializer of comptime only struct must be comptime-known", |
| 5094 | 5106 | }); |
| 5095 | 5107 | } else { |
| ... | ... | @@ -5213,7 +5225,7 @@ fn zirValidatePtrArrayInit( |
| 5213 | 5225 | ) CompileError!void { |
| 5214 | 5226 | const mod = sema.mod; |
| 5215 | 5227 | const validate_inst = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 5216 | | const init_src = validate_inst.src(); |
| 5228 | const init_src = block.nodeOffset(validate_inst.src_node); |
| 5217 | 5229 | const validate_extra = sema.code.extraData(Zir.Inst.Block, validate_inst.payload_index); |
| 5218 | 5230 | const instrs = sema.code.bodySlice(validate_extra.end, validate_extra.data.body_len); |
| 5219 | 5231 | const first_elem_ptr_data = sema.code.instructions.items(.data)[@intFromEnum(instrs[0])].pl_node; |
| ... | ... | @@ -5418,7 +5430,7 @@ fn zirValidatePtrArrayInit( |
| 5418 | 5430 | fn zirValidateDeref(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void { |
| 5419 | 5431 | const mod = sema.mod; |
| 5420 | 5432 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 5421 | | const src = inst_data.src(); |
| 5433 | const src = block.nodeOffset(inst_data.src_node); |
| 5422 | 5434 | const operand = try sema.resolveInst(inst_data.operand); |
| 5423 | 5435 | const operand_ty = sema.typeOf(operand); |
| 5424 | 5436 | |
| ... | ... | @@ -5462,7 +5474,7 @@ fn zirValidateDestructure(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Comp |
| 5462 | 5474 | const mod = sema.mod; |
| 5463 | 5475 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 5464 | 5476 | const extra = sema.code.extraData(Zir.Inst.ValidateDestructure, inst_data.payload_index).data; |
| 5465 | | const src = inst_data.src(); |
| 5477 | const src = block.nodeOffset(inst_data.src_node); |
| 5466 | 5478 | const destructure_src = LazySrcLoc.nodeOffset(extra.destructure_node); |
| 5467 | 5479 | const operand = try sema.resolveInst(extra.operand); |
| 5468 | 5480 | const operand_ty = sema.typeOf(operand); |
| ... | ... | @@ -5593,7 +5605,7 @@ fn zirStoreToInferredPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Compi |
| 5593 | 5605 | defer tracy.end(); |
| 5594 | 5606 | |
| 5595 | 5607 | const pl_node = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 5596 | | const src = pl_node.src(); |
| 5608 | const src = block.nodeOffset(pl_node.src_node); |
| 5597 | 5609 | const bin = sema.code.extraData(Zir.Inst.Bin, pl_node.payload_index).data; |
| 5598 | 5610 | const ptr = try sema.resolveInst(bin.lhs); |
| 5599 | 5611 | const operand = try sema.resolveInst(bin.rhs); |
| ... | ... | @@ -5675,7 +5687,7 @@ fn storeToInferredAllocComptime( |
| 5675 | 5687 | |
| 5676 | 5688 | fn zirSetEvalBranchQuota(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void { |
| 5677 | 5689 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 5678 | | const src = inst_data.src(); |
| 5690 | const src = block.nodeOffset(inst_data.src_node); |
| 5679 | 5691 | const quota: u32 = @intCast(try sema.resolveInt(block, src, inst_data.operand, Type.u32, .{ |
| 5680 | 5692 | .needed_comptime_reason = "eval branch quota must be comptime-known", |
| 5681 | 5693 | })); |
| ... | ... | @@ -5690,7 +5702,7 @@ fn zirStoreNode(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!v |
| 5690 | 5702 | const zir_tags = sema.code.instructions.items(.tag); |
| 5691 | 5703 | const zir_datas = sema.code.instructions.items(.data); |
| 5692 | 5704 | const inst_data = zir_datas[@intFromEnum(inst)].pl_node; |
| 5693 | | const src = inst_data.src(); |
| 5705 | const src = block.nodeOffset(inst_data.src_node); |
| 5694 | 5706 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 5695 | 5707 | const ptr = try sema.resolveInst(extra.lhs); |
| 5696 | 5708 | const operand = try sema.resolveInst(extra.rhs); |
| ... | ... | @@ -5824,7 +5836,7 @@ fn zirCompileError(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro |
| 5824 | 5836 | defer tracy.end(); |
| 5825 | 5837 | |
| 5826 | 5838 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 5827 | | const src = inst_data.src(); |
| 5839 | const src = block.nodeOffset(inst_data.src_node); |
| 5828 | 5840 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 5829 | 5841 | const msg = try sema.resolveConstString(block, operand_src, inst_data.operand, .{ |
| 5830 | 5842 | .needed_comptime_reason = "compile error string must be comptime-known", |
| ... | ... | @@ -5874,7 +5886,7 @@ fn zirCompileLog( |
| 5874 | 5886 | |
| 5875 | 5887 | fn zirPanic(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void { |
| 5876 | 5888 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 5877 | | const src = inst_data.src(); |
| 5889 | const src = block.nodeOffset(inst_data.src_node); |
| 5878 | 5890 | const msg_inst = try sema.resolveInst(inst_data.operand); |
| 5879 | 5891 | |
| 5880 | 5892 | // `panicWithMsg` would perform this coercion for us, but we can get a better |
| ... | ... | @@ -5901,7 +5913,7 @@ fn zirLoop(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileError |
| 5901 | 5913 | |
| 5902 | 5914 | const mod = sema.mod; |
| 5903 | 5915 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 5904 | | const src = inst_data.src(); |
| 5916 | const src = parent_block.nodeOffset(inst_data.src_node); |
| 5905 | 5917 | const extra = sema.code.extraData(Zir.Inst.Block, inst_data.payload_index); |
| 5906 | 5918 | const body = sema.code.bodySlice(extra.end, extra.data.body_len); |
| 5907 | 5919 | const gpa = sema.gpa; |
| ... | ... | @@ -5974,7 +5986,7 @@ fn zirCImport(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileEr |
| 5974 | 5986 | const comp = mod.comp; |
| 5975 | 5987 | const gpa = sema.gpa; |
| 5976 | 5988 | const pl_node = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 5977 | | const src = pl_node.src(); |
| 5989 | const src = parent_block.nodeOffset(pl_node.src_node); |
| 5978 | 5990 | const extra = sema.code.extraData(Zir.Inst.Block, pl_node.payload_index); |
| 5979 | 5991 | const body = sema.code.bodySlice(extra.end, extra.data.body_len); |
| 5980 | 5992 | |
| ... | ... | @@ -6076,7 +6088,7 @@ fn zirCImport(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileEr |
| 6076 | 6088 | |
| 6077 | 6089 | fn zirSuspendBlock(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 6078 | 6090 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 6079 | | const src = inst_data.src(); |
| 6091 | const src = parent_block.nodeOffset(inst_data.src_node); |
| 6080 | 6092 | return sema.failWithUseOfAsync(parent_block, src); |
| 6081 | 6093 | } |
| 6082 | 6094 | |
| ... | ... | @@ -6085,7 +6097,7 @@ fn zirBlock(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index, force_compt |
| 6085 | 6097 | defer tracy.end(); |
| 6086 | 6098 | |
| 6087 | 6099 | const pl_node = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 6088 | | const src = pl_node.src(); |
| 6100 | const src = parent_block.nodeOffset(pl_node.src_node); |
| 6089 | 6101 | const extra = sema.code.extraData(Zir.Inst.Block, pl_node.payload_index); |
| 6090 | 6102 | const body = sema.code.bodySlice(extra.end, extra.data.body_len); |
| 6091 | 6103 | const gpa = sema.gpa; |
| ... | ... | @@ -6420,7 +6432,7 @@ fn zirExport(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void |
| 6420 | 6432 | const mod = sema.mod; |
| 6421 | 6433 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 6422 | 6434 | const extra = sema.code.extraData(Zir.Inst.Export, inst_data.payload_index).data; |
| 6423 | | const src = inst_data.src(); |
| 6435 | const src = block.nodeOffset(inst_data.src_node); |
| 6424 | 6436 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 6425 | 6437 | const options_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node }; |
| 6426 | 6438 | const decl_name = try mod.intern_pool.getOrPutString( |
| ... | ... | @@ -6460,7 +6472,7 @@ fn zirExportValue(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError |
| 6460 | 6472 | const mod = sema.mod; |
| 6461 | 6473 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 6462 | 6474 | const extra = sema.code.extraData(Zir.Inst.ExportValue, inst_data.payload_index).data; |
| 6463 | | const src = inst_data.src(); |
| 6475 | const src = block.nodeOffset(inst_data.src_node); |
| 6464 | 6476 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 6465 | 6477 | const options_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node }; |
| 6466 | 6478 | const operand = try sema.resolveInstConst(block, operand_src, extra.operand, .{ |
| ... | ... | @@ -6777,7 +6789,7 @@ fn addDbgVar( |
| 6777 | 6789 | fn zirDeclRef(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 6778 | 6790 | const mod = sema.mod; |
| 6779 | 6791 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].str_tok; |
| 6780 | | const src = inst_data.src(); |
| 6792 | const src = block.tokenOffset(inst_data.src_tok); |
| 6781 | 6793 | const decl_name = try mod.intern_pool.getOrPutString( |
| 6782 | 6794 | sema.gpa, |
| 6783 | 6795 | inst_data.get(sema.code), |
| ... | ... | @@ -6791,7 +6803,7 @@ fn zirDeclRef(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air |
| 6791 | 6803 | fn zirDeclVal(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 6792 | 6804 | const mod = sema.mod; |
| 6793 | 6805 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].str_tok; |
| 6794 | | const src = inst_data.src(); |
| 6806 | const src = block.tokenOffset(inst_data.src_tok); |
| 6795 | 6807 | const decl_name = try mod.intern_pool.getOrPutString( |
| 6796 | 6808 | sema.gpa, |
| 6797 | 6809 | inst_data.get(sema.code), |
| ... | ... | @@ -7059,7 +7071,7 @@ fn zirCall( |
| 7059 | 7071 | const mod = sema.mod; |
| 7060 | 7072 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 7061 | 7073 | const callee_src: LazySrcLoc = .{ .node_offset_call_func = inst_data.src_node }; |
| 7062 | | const call_src = inst_data.src(); |
| 7074 | const call_src = block.nodeOffset(inst_data.src_node); |
| 7063 | 7075 | const ExtraType = switch (kind) { |
| 7064 | 7076 | .direct => Zir.Inst.Call, |
| 7065 | 7077 | .field => Zir.Inst.FieldCall, |
| ... | ... | @@ -8084,7 +8096,7 @@ fn analyzeInlineCallArg( |
| 8084 | 8096 | // Evaluate the parameter type expression now that previous ones have |
| 8085 | 8097 | // been mapped, and coerce the corresponding argument to it. |
| 8086 | 8098 | const pl_tok = ics.callee().code.instructions.items(.data)[@intFromEnum(inst)].pl_tok; |
| 8087 | | const param_src = pl_tok.src(); |
| 8099 | const param_src = param_block.tokenOffset(pl_tok.src_tok); |
| 8088 | 8100 | const extra = ics.callee().code.extraData(Zir.Inst.Param, pl_tok.payload_index); |
| 8089 | 8101 | const param_body = ics.callee().code.bodySlice(extra.end, extra.data.body_len); |
| 8090 | 8102 | const param_ty = param_ty: { |
| ... | ... | @@ -8324,7 +8336,11 @@ fn instantiateGenericCall( |
| 8324 | 8336 | } |
| 8325 | 8337 | |
| 8326 | 8338 | const param_ty_inst = try child_sema.resolveInlineBody(&child_block, param_ty_body, param_inst); |
| 8327 | | break :param_ty try child_sema.analyzeAsType(&child_block, param_data.src(), param_ty_inst); |
| 8339 | break :param_ty try child_sema.analyzeAsType( |
| 8340 | &child_block, |
| 8341 | child_block.tokenOffset(param_data.src_tok), |
| 8342 | param_ty_inst, |
| 8343 | ); |
| 8328 | 8344 | }, |
| 8329 | 8345 | else => unreachable, |
| 8330 | 8346 | } |
| ... | ... | @@ -8358,11 +8374,11 @@ fn instantiateGenericCall( |
| 8358 | 8374 | const arg_src = args_info.argSrc(block, arg_index); |
| 8359 | 8375 | const msg = try sema.errMsg(block, arg_src, "runtime-known argument passed to comptime parameter", .{}); |
| 8360 | 8376 | errdefer msg.destroy(sema.gpa); |
| 8361 | | const param_src = switch (param_tag) { |
| 8362 | | .param_comptime => fn_zir.instructions.items(.data)[@intFromEnum(param_inst)].pl_tok.src(), |
| 8363 | | .param_anytype_comptime => fn_zir.instructions.items(.data)[@intFromEnum(param_inst)].str_tok.src(), |
| 8377 | const param_src = child_block.tokenOffset(switch (param_tag) { |
| 8378 | .param_comptime => fn_zir.instructions.items(.data)[@intFromEnum(param_inst)].pl_tok.src_tok, |
| 8379 | .param_anytype_comptime => fn_zir.instructions.items(.data)[@intFromEnum(param_inst)].str_tok.src_tok, |
| 8364 | 8380 | else => unreachable, |
| 8365 | | }; |
| 8381 | }); |
| 8366 | 8382 | try child_sema.errNote(&child_block, param_src, msg, "declared comptime here", .{}); |
| 8367 | 8383 | break :msg msg; |
| 8368 | 8384 | }), |
| ... | ... | @@ -8373,11 +8389,11 @@ fn instantiateGenericCall( |
| 8373 | 8389 | const arg_src = args_info.argSrc(block, arg_index); |
| 8374 | 8390 | const msg = try sema.errMsg(block, arg_src, "runtime-known argument passed to parameter of comptime-only type", .{}); |
| 8375 | 8391 | errdefer msg.destroy(sema.gpa); |
| 8376 | | const param_src = switch (param_tag) { |
| 8377 | | .param => fn_zir.instructions.items(.data)[@intFromEnum(param_inst)].pl_tok.src(), |
| 8378 | | .param_anytype => fn_zir.instructions.items(.data)[@intFromEnum(param_inst)].str_tok.src(), |
| 8392 | const param_src = child_block.tokenOffset(switch (param_tag) { |
| 8393 | .param => fn_zir.instructions.items(.data)[@intFromEnum(param_inst)].pl_tok.src_tok, |
| 8394 | .param_anytype => fn_zir.instructions.items(.data)[@intFromEnum(param_inst)].str_tok.src_tok, |
| 8379 | 8395 | else => unreachable, |
| 8380 | | }; |
| 8396 | }); |
| 8381 | 8397 | try child_sema.errNote(&child_block, param_src, msg, "declared here", .{}); |
| 8382 | 8398 | const src_decl = mod.declPtr(block.src_decl); |
| 8383 | 8399 | try sema.explainWhyTypeIsComptime(msg, src_decl.toSrcLoc(arg_src, mod), arg_ty); |
| ... | ... | @@ -8560,7 +8576,7 @@ fn zirElemType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai |
| 8560 | 8576 | fn zirIndexablePtrElemType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 8561 | 8577 | const mod = sema.mod; |
| 8562 | 8578 | const un_node = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 8563 | | const src = un_node.src(); |
| 8579 | const src = block.nodeOffset(un_node.src_node); |
| 8564 | 8580 | const ptr_ty = sema.resolveType(block, src, un_node.operand) catch |err| switch (err) { |
| 8565 | 8581 | error.GenericPoison => return .generic_poison_type, |
| 8566 | 8582 | else => |e| return e, |
| ... | ... | @@ -8585,7 +8601,7 @@ fn zirVectorElemType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileEr |
| 8585 | 8601 | else => |e| return e, |
| 8586 | 8602 | }; |
| 8587 | 8603 | if (!vec_ty.isVector(mod)) { |
| 8588 | | return sema.fail(block, un_node.src(), "expected vector type, found '{}'", .{vec_ty.fmt(mod)}); |
| 8604 | return sema.fail(block, block.nodeOffset(un_node.src_node), "expected vector type, found '{}'", .{vec_ty.fmt(mod)}); |
| 8589 | 8605 | } |
| 8590 | 8606 | return Air.internedToRef(vec_ty.childType(mod).toIntern()); |
| 8591 | 8607 | } |
| ... | ... | @@ -8672,7 +8688,7 @@ fn zirAnyframeType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro |
| 8672 | 8688 | |
| 8673 | 8689 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 8674 | 8690 | if (true) { |
| 8675 | | return sema.failWithUseOfAsync(block, inst_data.src()); |
| 8691 | return sema.failWithUseOfAsync(block, block.nodeOffset(inst_data.src_node)); |
| 8676 | 8692 | } |
| 8677 | 8693 | const mod = sema.mod; |
| 8678 | 8694 | const operand_src: LazySrcLoc = .{ .node_offset_anyframe_type = inst_data.src_node }; |
| ... | ... | @@ -8888,7 +8904,7 @@ fn zirEnumLiteral(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError |
| 8888 | 8904 | fn zirIntFromEnum(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 8889 | 8905 | const mod = sema.mod; |
| 8890 | 8906 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 8891 | | const src = inst_data.src(); |
| 8907 | const src = block.nodeOffset(inst_data.src_node); |
| 8892 | 8908 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 8893 | 8909 | const operand = try sema.resolveInst(inst_data.operand); |
| 8894 | 8910 | const operand_ty = sema.typeOf(operand); |
| ... | ... | @@ -8946,7 +8962,7 @@ fn zirEnumFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError |
| 8946 | 8962 | const mod = sema.mod; |
| 8947 | 8963 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 8948 | 8964 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 8949 | | const src = inst_data.src(); |
| 8965 | const src = block.nodeOffset(inst_data.src_node); |
| 8950 | 8966 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 8951 | 8967 | const dest_ty = try sema.resolveDestType(block, src, extra.lhs, .remove_eu_opt, "@enumFromInt"); |
| 8952 | 8968 | const operand = try sema.resolveInst(extra.rhs); |
| ... | ... | @@ -9015,7 +9031,7 @@ fn zirOptionalPayloadPtr( |
| 9015 | 9031 | |
| 9016 | 9032 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 9017 | 9033 | const optional_ptr = try sema.resolveInst(inst_data.operand); |
| 9018 | | const src = inst_data.src(); |
| 9034 | const src = block.nodeOffset(inst_data.src_node); |
| 9019 | 9035 | |
| 9020 | 9036 | return sema.analyzeOptionalPayloadPtr(block, src, optional_ptr, safety_check, false); |
| 9021 | 9037 | } |
| ... | ... | @@ -9099,7 +9115,7 @@ fn zirOptionalPayload( |
| 9099 | 9115 | |
| 9100 | 9116 | const mod = sema.mod; |
| 9101 | 9117 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 9102 | | const src = inst_data.src(); |
| 9118 | const src = block.nodeOffset(inst_data.src_node); |
| 9103 | 9119 | const operand = try sema.resolveInst(inst_data.operand); |
| 9104 | 9120 | const operand_ty = sema.typeOf(operand); |
| 9105 | 9121 | const result_ty = switch (operand_ty.zigTypeTag(mod)) { |
| ... | ... | @@ -9151,7 +9167,7 @@ fn zirErrUnionPayload( |
| 9151 | 9167 | |
| 9152 | 9168 | const mod = sema.mod; |
| 9153 | 9169 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 9154 | | const src = inst_data.src(); |
| 9170 | const src = block.nodeOffset(inst_data.src_node); |
| 9155 | 9171 | const operand = try sema.resolveInst(inst_data.operand); |
| 9156 | 9172 | const operand_src = src; |
| 9157 | 9173 | const err_union_ty = sema.typeOf(operand); |
| ... | ... | @@ -9204,7 +9220,7 @@ fn zirErrUnionPayloadPtr( |
| 9204 | 9220 | |
| 9205 | 9221 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 9206 | 9222 | const operand = try sema.resolveInst(inst_data.operand); |
| 9207 | | const src = inst_data.src(); |
| 9223 | const src = block.nodeOffset(inst_data.src_node); |
| 9208 | 9224 | |
| 9209 | 9225 | return sema.analyzeErrUnionPayloadPtr(block, src, operand, false, false); |
| 9210 | 9226 | } |
| ... | ... | @@ -9288,7 +9304,7 @@ fn zirErrUnionCode(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro |
| 9288 | 9304 | defer tracy.end(); |
| 9289 | 9305 | |
| 9290 | 9306 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 9291 | | const src = inst_data.src(); |
| 9307 | const src = block.nodeOffset(inst_data.src_node); |
| 9292 | 9308 | const operand = try sema.resolveInst(inst_data.operand); |
| 9293 | 9309 | return sema.analyzeErrUnionCode(block, src, operand); |
| 9294 | 9310 | } |
| ... | ... | @@ -9321,7 +9337,7 @@ fn zirErrUnionCodePtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileE |
| 9321 | 9337 | defer tracy.end(); |
| 9322 | 9338 | |
| 9323 | 9339 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 9324 | | const src = inst_data.src(); |
| 9340 | const src = block.nodeOffset(inst_data.src_node); |
| 9325 | 9341 | const operand = try sema.resolveInst(inst_data.operand); |
| 9326 | 9342 | return sema.analyzeErrUnionCodePtr(block, src, operand); |
| 9327 | 9343 | } |
| ... | ... | @@ -9997,11 +10013,11 @@ fn finishFunc( |
| 9997 | 10013 | param_body[0..block.params.len], |
| 9998 | 10014 | ) |is_comptime, name_nts, param_index| { |
| 9999 | 10015 | if (!is_comptime) { |
| 10000 | | const param_src = switch (tags[@intFromEnum(param_index)]) { |
| 10001 | | .param => data[@intFromEnum(param_index)].pl_tok.src(), |
| 10002 | | .param_anytype => data[@intFromEnum(param_index)].str_tok.src(), |
| 10016 | const param_src = block.tokenOffset(switch (tags[@intFromEnum(param_index)]) { |
| 10017 | .param => data[@intFromEnum(param_index)].pl_tok.src_tok, |
| 10018 | .param_anytype => data[@intFromEnum(param_index)].str_tok.src_tok, |
| 10003 | 10019 | else => unreachable, |
| 10004 | | }; |
| 10020 | }); |
| 10005 | 10021 | const name = sema.code.nullTerminatedString(name_nts); |
| 10006 | 10022 | if (name.len != 0) { |
| 10007 | 10023 | try sema.errNote(block, param_src, msg, "param '{s}' is required to be comptime", .{name}); |
| ... | ... | @@ -10084,7 +10100,7 @@ fn zirParam( |
| 10084 | 10100 | comptime_syntax: bool, |
| 10085 | 10101 | ) CompileError!void { |
| 10086 | 10102 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_tok; |
| 10087 | | const src = inst_data.src(); |
| 10103 | const src = block.tokenOffset(inst_data.src_tok); |
| 10088 | 10104 | const extra = sema.code.extraData(Zir.Inst.Param, inst_data.payload_index); |
| 10089 | 10105 | const param_name: Zir.NullTerminatedString = extra.data.name; |
| 10090 | 10106 | const body = sema.code.bodySlice(extra.end, extra.data.body_len); |
| ... | ... | @@ -10194,7 +10210,7 @@ fn zirAsNode(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air. |
| 10194 | 10210 | defer tracy.end(); |
| 10195 | 10211 | |
| 10196 | 10212 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10197 | | const src = inst_data.src(); |
| 10213 | const src = block.nodeOffset(inst_data.src_node); |
| 10198 | 10214 | const extra = sema.code.extraData(Zir.Inst.As, inst_data.payload_index).data; |
| 10199 | 10215 | return sema.analyzeAs(block, src, extra.dest_type, extra.operand, false); |
| 10200 | 10216 | } |
| ... | ... | @@ -10204,7 +10220,7 @@ fn zirAsShiftOperand(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileEr |
| 10204 | 10220 | defer tracy.end(); |
| 10205 | 10221 | |
| 10206 | 10222 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10207 | | const src = inst_data.src(); |
| 10223 | const src = block.nodeOffset(inst_data.src_node); |
| 10208 | 10224 | const extra = sema.code.extraData(Zir.Inst.As, inst_data.payload_index).data; |
| 10209 | 10225 | return sema.analyzeAs(block, src, extra.dest_type, extra.operand, true); |
| 10210 | 10226 | } |
| ... | ... | @@ -10301,7 +10317,7 @@ fn zirIntFromPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError! |
| 10301 | 10317 | .storage = .{ .elems = new_elems }, |
| 10302 | 10318 | } })); |
| 10303 | 10319 | } |
| 10304 | | try sema.requireRuntimeBlock(block, inst_data.src(), ptr_src); |
| 10320 | try sema.requireRuntimeBlock(block, block.nodeOffset(inst_data.src_node), ptr_src); |
| 10305 | 10321 | try sema.validateRuntimeValue(block, ptr_src, operand); |
| 10306 | 10322 | if (!is_vector) { |
| 10307 | 10323 | return block.addUnOp(.int_from_ptr, operand); |
| ... | ... | @@ -10323,7 +10339,7 @@ fn zirFieldVal(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai |
| 10323 | 10339 | |
| 10324 | 10340 | const mod = sema.mod; |
| 10325 | 10341 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10326 | | const src = inst_data.src(); |
| 10342 | const src = block.nodeOffset(inst_data.src_node); |
| 10327 | 10343 | const field_name_src: LazySrcLoc = .{ .node_offset_field_name = inst_data.src_node }; |
| 10328 | 10344 | const extra = sema.code.extraData(Zir.Inst.Field, inst_data.payload_index).data; |
| 10329 | 10345 | const field_name = try mod.intern_pool.getOrPutString( |
| ... | ... | @@ -10341,7 +10357,7 @@ fn zirFieldPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai |
| 10341 | 10357 | |
| 10342 | 10358 | const mod = sema.mod; |
| 10343 | 10359 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10344 | | const src = inst_data.src(); |
| 10360 | const src = block.nodeOffset(inst_data.src_node); |
| 10345 | 10361 | const field_name_src: LazySrcLoc = .{ .node_offset_field_name = inst_data.src_node }; |
| 10346 | 10362 | const extra = sema.code.extraData(Zir.Inst.Field, inst_data.payload_index).data; |
| 10347 | 10363 | const field_name = try mod.intern_pool.getOrPutString( |
| ... | ... | @@ -10359,7 +10375,7 @@ fn zirStructInitFieldPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Compi |
| 10359 | 10375 | |
| 10360 | 10376 | const mod = sema.mod; |
| 10361 | 10377 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10362 | | const src = inst_data.src(); |
| 10378 | const src = block.nodeOffset(inst_data.src_node); |
| 10363 | 10379 | const field_name_src: LazySrcLoc = .{ .node_offset_field_name_init = inst_data.src_node }; |
| 10364 | 10380 | const extra = sema.code.extraData(Zir.Inst.Field, inst_data.payload_index).data; |
| 10365 | 10381 | const field_name = try mod.intern_pool.getOrPutString( |
| ... | ... | @@ -10384,7 +10400,7 @@ fn zirFieldValNamed(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErr |
| 10384 | 10400 | defer tracy.end(); |
| 10385 | 10401 | |
| 10386 | 10402 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10387 | | const src = inst_data.src(); |
| 10403 | const src = block.nodeOffset(inst_data.src_node); |
| 10388 | 10404 | const field_name_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node }; |
| 10389 | 10405 | const extra = sema.code.extraData(Zir.Inst.FieldNamed, inst_data.payload_index).data; |
| 10390 | 10406 | const object = try sema.resolveInst(extra.lhs); |
| ... | ... | @@ -10399,7 +10415,7 @@ fn zirFieldPtrNamed(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErr |
| 10399 | 10415 | defer tracy.end(); |
| 10400 | 10416 | |
| 10401 | 10417 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10402 | | const src = inst_data.src(); |
| 10418 | const src = block.nodeOffset(inst_data.src_node); |
| 10403 | 10419 | const field_name_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node }; |
| 10404 | 10420 | const extra = sema.code.extraData(Zir.Inst.FieldNamed, inst_data.payload_index).data; |
| 10405 | 10421 | const object_ptr = try sema.resolveInst(extra.lhs); |
| ... | ... | @@ -10414,14 +10430,14 @@ fn zirIntCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air |
| 10414 | 10430 | defer tracy.end(); |
| 10415 | 10431 | |
| 10416 | 10432 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10417 | | const src = inst_data.src(); |
| 10433 | const src = block.nodeOffset(inst_data.src_node); |
| 10418 | 10434 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 10419 | 10435 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 10420 | 10436 | |
| 10421 | 10437 | const dest_ty = try sema.resolveDestType(block, src, extra.lhs, .remove_eu_opt, "@intCast"); |
| 10422 | 10438 | const operand = try sema.resolveInst(extra.rhs); |
| 10423 | 10439 | |
| 10424 | | return sema.intCast(block, inst_data.src(), dest_ty, src, operand, operand_src, true); |
| 10440 | return sema.intCast(block, block.nodeOffset(inst_data.src_node), dest_ty, src, operand, operand_src, true); |
| 10425 | 10441 | } |
| 10426 | 10442 | |
| 10427 | 10443 | fn intCast( |
| ... | ... | @@ -10584,7 +10600,7 @@ fn zirBitcast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air |
| 10584 | 10600 | |
| 10585 | 10601 | const mod = sema.mod; |
| 10586 | 10602 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10587 | | const src = inst_data.src(); |
| 10603 | const src = block.nodeOffset(inst_data.src_node); |
| 10588 | 10604 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 10589 | 10605 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 10590 | 10606 | |
| ... | ... | @@ -10718,7 +10734,7 @@ fn zirBitcast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air |
| 10718 | 10734 | .Vector, |
| 10719 | 10735 | => {}, |
| 10720 | 10736 | } |
| 10721 | | return sema.bitCast(block, dest_ty, operand, inst_data.src(), operand_src); |
| 10737 | return sema.bitCast(block, dest_ty, operand, block.nodeOffset(inst_data.src_node), operand_src); |
| 10722 | 10738 | } |
| 10723 | 10739 | |
| 10724 | 10740 | fn zirFloatCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| ... | ... | @@ -10727,7 +10743,7 @@ fn zirFloatCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A |
| 10727 | 10743 | |
| 10728 | 10744 | const mod = sema.mod; |
| 10729 | 10745 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10730 | | const src = inst_data.src(); |
| 10746 | const src = block.nodeOffset(inst_data.src_node); |
| 10731 | 10747 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 10732 | 10748 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 10733 | 10749 | |
| ... | ... | @@ -10781,7 +10797,7 @@ fn zirFloatCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A |
| 10781 | 10797 | if (dest_is_comptime_float) { |
| 10782 | 10798 | return sema.fail(block, operand_src, "unable to cast runtime value to 'comptime_float'", .{}); |
| 10783 | 10799 | } |
| 10784 | | try sema.requireRuntimeBlock(block, inst_data.src(), operand_src); |
| 10800 | try sema.requireRuntimeBlock(block, block.nodeOffset(inst_data.src_node), operand_src); |
| 10785 | 10801 | |
| 10786 | 10802 | const src_bits = operand_scalar_ty.floatBits(target); |
| 10787 | 10803 | const dst_bits = dest_scalar_ty.floatBits(target); |
| ... | ... | @@ -10806,7 +10822,7 @@ fn zirElemVal(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air |
| 10806 | 10822 | defer tracy.end(); |
| 10807 | 10823 | |
| 10808 | 10824 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10809 | | const src = inst_data.src(); |
| 10825 | const src = block.nodeOffset(inst_data.src_node); |
| 10810 | 10826 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 10811 | 10827 | const array = try sema.resolveInst(extra.lhs); |
| 10812 | 10828 | const elem_index = try sema.resolveInst(extra.rhs); |
| ... | ... | @@ -10818,7 +10834,7 @@ fn zirElemValNode(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError |
| 10818 | 10834 | defer tracy.end(); |
| 10819 | 10835 | |
| 10820 | 10836 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10821 | | const src = inst_data.src(); |
| 10837 | const src = block.nodeOffset(inst_data.src_node); |
| 10822 | 10838 | const elem_index_src: LazySrcLoc = .{ .node_offset_array_access_index = inst_data.src_node }; |
| 10823 | 10839 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 10824 | 10840 | const array = try sema.resolveInst(extra.lhs); |
| ... | ... | @@ -10844,7 +10860,7 @@ fn zirElemPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air |
| 10844 | 10860 | |
| 10845 | 10861 | const mod = sema.mod; |
| 10846 | 10862 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10847 | | const src = inst_data.src(); |
| 10863 | const src = block.nodeOffset(inst_data.src_node); |
| 10848 | 10864 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 10849 | 10865 | const array_ptr = try sema.resolveInst(extra.lhs); |
| 10850 | 10866 | const elem_index = try sema.resolveInst(extra.rhs); |
| ... | ... | @@ -10871,7 +10887,7 @@ fn zirElemPtrNode(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError |
| 10871 | 10887 | defer tracy.end(); |
| 10872 | 10888 | |
| 10873 | 10889 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10874 | | const src = inst_data.src(); |
| 10890 | const src = block.nodeOffset(inst_data.src_node); |
| 10875 | 10891 | const elem_index_src: LazySrcLoc = .{ .node_offset_array_access_index = inst_data.src_node }; |
| 10876 | 10892 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 10877 | 10893 | const array_ptr = try sema.resolveInst(extra.lhs); |
| ... | ... | @@ -10886,7 +10902,7 @@ fn zirArrayInitElemPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Compile |
| 10886 | 10902 | |
| 10887 | 10903 | const mod = sema.mod; |
| 10888 | 10904 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10889 | | const src = inst_data.src(); |
| 10905 | const src = block.nodeOffset(inst_data.src_node); |
| 10890 | 10906 | const extra = sema.code.extraData(Zir.Inst.ElemPtrImm, inst_data.payload_index).data; |
| 10891 | 10907 | const array_ptr = try sema.resolveInst(extra.ptr); |
| 10892 | 10908 | const elem_index = try sema.mod.intRef(Type.usize, extra.index); |
| ... | ... | @@ -10905,7 +10921,7 @@ fn zirSliceStart(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError! |
| 10905 | 10921 | defer tracy.end(); |
| 10906 | 10922 | |
| 10907 | 10923 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10908 | | const src = inst_data.src(); |
| 10924 | const src = block.nodeOffset(inst_data.src_node); |
| 10909 | 10925 | const extra = sema.code.extraData(Zir.Inst.SliceStart, inst_data.payload_index).data; |
| 10910 | 10926 | const array_ptr = try sema.resolveInst(extra.lhs); |
| 10911 | 10927 | const start = try sema.resolveInst(extra.start); |
| ... | ... | @@ -10921,7 +10937,7 @@ fn zirSliceEnd(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai |
| 10921 | 10937 | defer tracy.end(); |
| 10922 | 10938 | |
| 10923 | 10939 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10924 | | const src = inst_data.src(); |
| 10940 | const src = block.nodeOffset(inst_data.src_node); |
| 10925 | 10941 | const extra = sema.code.extraData(Zir.Inst.SliceEnd, inst_data.payload_index).data; |
| 10926 | 10942 | const array_ptr = try sema.resolveInst(extra.lhs); |
| 10927 | 10943 | const start = try sema.resolveInst(extra.start); |
| ... | ... | @@ -10938,7 +10954,7 @@ fn zirSliceSentinel(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErr |
| 10938 | 10954 | defer tracy.end(); |
| 10939 | 10955 | |
| 10940 | 10956 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10941 | | const src = inst_data.src(); |
| 10957 | const src = block.nodeOffset(inst_data.src_node); |
| 10942 | 10958 | const sentinel_src: LazySrcLoc = .{ .node_offset_slice_sentinel = inst_data.src_node }; |
| 10943 | 10959 | const extra = sema.code.extraData(Zir.Inst.SliceSentinel, inst_data.payload_index).data; |
| 10944 | 10960 | const array_ptr = try sema.resolveInst(extra.lhs); |
| ... | ... | @@ -10957,7 +10973,7 @@ fn zirSliceLength(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError |
| 10957 | 10973 | defer tracy.end(); |
| 10958 | 10974 | |
| 10959 | 10975 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 10960 | | const src = inst_data.src(); |
| 10976 | const src = block.nodeOffset(inst_data.src_node); |
| 10961 | 10977 | const extra = sema.code.extraData(Zir.Inst.SliceLength, inst_data.payload_index).data; |
| 10962 | 10978 | const array_ptr = try sema.resolveInst(extra.lhs); |
| 10963 | 10979 | const start = try sema.resolveInst(extra.start); |
| ... | ... | @@ -11017,7 +11033,9 @@ const SwitchProngAnalysis = struct { |
| 11017 | 11033 | merges: *Block.Merges, |
| 11018 | 11034 | ) CompileError!Air.Inst.Ref { |
| 11019 | 11035 | const sema = spa.sema; |
| 11020 | | const src = sema.code.instructions.items(.data)[@intFromEnum(spa.switch_block_inst)].pl_node.src(); |
| 11036 | const src = spa.parent_block.nodeOffset( |
| 11037 | sema.code.instructions.items(.data)[@intFromEnum(spa.switch_block_inst)].pl_node.src_node, |
| 11038 | ); |
| 11021 | 11039 | |
| 11022 | 11040 | if (has_tag_capture) { |
| 11023 | 11041 | const tag_ref = try spa.analyzeTagCapture(child_block, raw_capture_src, inline_case_capture); |
| ... | ... | @@ -11566,7 +11584,7 @@ fn zirSwitchBlockErrUnion(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Comp |
| 11566 | 11584 | const mod = sema.mod; |
| 11567 | 11585 | const gpa = sema.gpa; |
| 11568 | 11586 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 11569 | | const switch_src = inst_data.src(); |
| 11587 | const switch_src = block.nodeOffset(inst_data.src_node); |
| 11570 | 11588 | const switch_src_node_offset = inst_data.src_node; |
| 11571 | 11589 | const switch_operand_src: LazySrcLoc = .{ .node_offset_switch_operand = switch_src_node_offset }; |
| 11572 | 11590 | const else_prong_src: LazySrcLoc = .{ .node_offset_switch_special_prong = switch_src_node_offset }; |
| ... | ... | @@ -11874,7 +11892,7 @@ fn zirSwitchBlock(sema: *Sema, block: *Block, inst: Zir.Inst.Index, operand_is_r |
| 11874 | 11892 | const mod = sema.mod; |
| 11875 | 11893 | const gpa = sema.gpa; |
| 11876 | 11894 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 11877 | | const src = inst_data.src(); |
| 11895 | const src = block.nodeOffset(inst_data.src_node); |
| 11878 | 11896 | const src_node_offset = inst_data.src_node; |
| 11879 | 11897 | const operand_src: LazySrcLoc = .{ .node_offset_switch_operand = src_node_offset }; |
| 11880 | 11898 | const special_prong_src: LazySrcLoc = .{ .node_offset_switch_special_prong = src_node_offset }; |
| ... | ... | @@ -13396,7 +13414,7 @@ fn validateErrSetSwitch( |
| 13396 | 13414 | const ip = &mod.intern_pool; |
| 13397 | 13415 | |
| 13398 | 13416 | const src_node_offset = inst_data.src_node; |
| 13399 | | const src = inst_data.src(); |
| 13417 | const src = block.nodeOffset(src_node_offset); |
| 13400 | 13418 | |
| 13401 | 13419 | var extra_index: usize = else_case.end; |
| 13402 | 13420 | { |
| ... | ... | @@ -13836,7 +13854,7 @@ fn maybeErrorUnwrapComptime(sema: *Sema, block: *Block, body: []const Zir.Inst.I |
| 13836 | 13854 | } |
| 13837 | 13855 | } else return; |
| 13838 | 13856 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].@"unreachable"; |
| 13839 | | const src = inst_data.src(); |
| 13857 | const src = block.nodeOffset(inst_data.src_node); |
| 13840 | 13858 | |
| 13841 | 13859 | if (try sema.resolveDefinedValue(block, src, operand)) |val| { |
| 13842 | 13860 | if (val.getErrorName(sema.mod).unwrap()) |name| { |
| ... | ... | @@ -13900,7 +13918,7 @@ fn zirHasDecl(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air |
| 13900 | 13918 | const mod = sema.mod; |
| 13901 | 13919 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 13902 | 13920 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 13903 | | const src = inst_data.src(); |
| 13921 | const src = block.nodeOffset(inst_data.src_node); |
| 13904 | 13922 | const lhs_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 13905 | 13923 | const rhs_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node }; |
| 13906 | 13924 | const container_type = try sema.resolveType(block, lhs_src, extra.lhs); |
| ... | ... | @@ -13932,7 +13950,7 @@ fn zirImport(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air. |
| 13932 | 13950 | |
| 13933 | 13951 | const mod = sema.mod; |
| 13934 | 13952 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].str_tok; |
| 13935 | | const operand_src = inst_data.src(); |
| 13953 | const operand_src = block.tokenOffset(inst_data.src_tok); |
| 13936 | 13954 | const operand = inst_data.get(sema.code); |
| 13937 | 13955 | |
| 13938 | 13956 | const result = mod.importFile(block.getFileScope(mod), operand) catch |err| switch (err) { |
| ... | ... | @@ -14012,7 +14030,7 @@ fn zirShl( |
| 14012 | 14030 | |
| 14013 | 14031 | const mod = sema.mod; |
| 14014 | 14032 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 14015 | | const src = inst_data.src(); |
| 14033 | const src = block.nodeOffset(inst_data.src_node); |
| 14016 | 14034 | const lhs_src: LazySrcLoc = .{ .node_offset_bin_lhs = inst_data.src_node }; |
| 14017 | 14035 | const rhs_src: LazySrcLoc = .{ .node_offset_bin_rhs = inst_data.src_node }; |
| 14018 | 14036 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| ... | ... | @@ -14182,7 +14200,7 @@ fn zirShr( |
| 14182 | 14200 | |
| 14183 | 14201 | const mod = sema.mod; |
| 14184 | 14202 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 14185 | | const src = inst_data.src(); |
| 14203 | const src = block.nodeOffset(inst_data.src_node); |
| 14186 | 14204 | const lhs_src: LazySrcLoc = .{ .node_offset_bin_lhs = inst_data.src_node }; |
| 14187 | 14205 | const rhs_src: LazySrcLoc = .{ .node_offset_bin_rhs = inst_data.src_node }; |
| 14188 | 14206 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| ... | ... | @@ -14371,7 +14389,7 @@ fn zirBitNot(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air. |
| 14371 | 14389 | |
| 14372 | 14390 | const mod = sema.mod; |
| 14373 | 14391 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 14374 | | const src = inst_data.src(); |
| 14392 | const src = block.nodeOffset(inst_data.src_node); |
| 14375 | 14393 | const operand_src: LazySrcLoc = .{ .node_offset_un_op = inst_data.src_node }; |
| 14376 | 14394 | |
| 14377 | 14395 | const operand = try sema.resolveInst(inst_data.operand); |
| ... | ... | @@ -14520,7 +14538,7 @@ fn zirArrayCat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai |
| 14520 | 14538 | const rhs = try sema.resolveInst(extra.rhs); |
| 14521 | 14539 | const lhs_ty = sema.typeOf(lhs); |
| 14522 | 14540 | const rhs_ty = sema.typeOf(rhs); |
| 14523 | | const src = inst_data.src(); |
| 14541 | const src = block.nodeOffset(inst_data.src_node); |
| 14524 | 14542 | |
| 14525 | 14543 | const lhs_is_tuple = lhs_ty.isTuple(mod); |
| 14526 | 14544 | const rhs_is_tuple = rhs_ty.isTuple(mod); |
| ... | ... | @@ -14871,7 +14889,7 @@ fn zirArrayMul(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai |
| 14871 | 14889 | const extra = sema.code.extraData(Zir.Inst.ArrayMul, inst_data.payload_index).data; |
| 14872 | 14890 | const uncoerced_lhs = try sema.resolveInst(extra.lhs); |
| 14873 | 14891 | const uncoerced_lhs_ty = sema.typeOf(uncoerced_lhs); |
| 14874 | | const src: LazySrcLoc = inst_data.src(); |
| 14892 | const src: LazySrcLoc = block.nodeOffset(inst_data.src_node); |
| 14875 | 14893 | const lhs_src: LazySrcLoc = .{ .node_offset_bin_lhs = inst_data.src_node }; |
| 14876 | 14894 | const operator_src: LazySrcLoc = .{ .node_offset_main_token = inst_data.src_node }; |
| 14877 | 14895 | const rhs_src: LazySrcLoc = .{ .node_offset_bin_rhs = inst_data.src_node }; |
| ... | ... | @@ -15041,7 +15059,7 @@ fn zirArrayMul(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai |
| 15041 | 15059 | fn zirNegate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 15042 | 15060 | const mod = sema.mod; |
| 15043 | 15061 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 15044 | | const src = inst_data.src(); |
| 15062 | const src = block.nodeOffset(inst_data.src_node); |
| 15045 | 15063 | const lhs_src = src; |
| 15046 | 15064 | const rhs_src: LazySrcLoc = .{ .node_offset_un_op = inst_data.src_node }; |
| 15047 | 15065 | |
| ... | ... | @@ -15073,7 +15091,7 @@ fn zirNegate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air. |
| 15073 | 15091 | fn zirNegateWrap(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 15074 | 15092 | const mod = sema.mod; |
| 15075 | 15093 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 15076 | | const src = inst_data.src(); |
| 15094 | const src = block.nodeOffset(inst_data.src_node); |
| 15077 | 15095 | const lhs_src = src; |
| 15078 | 15096 | const rhs_src: LazySrcLoc = .{ .node_offset_un_op = inst_data.src_node }; |
| 15079 | 15097 | |
| ... | ... | @@ -16991,7 +17009,7 @@ fn zirLoad(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.In |
| 16991 | 17009 | defer tracy.end(); |
| 16992 | 17010 | |
| 16993 | 17011 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 16994 | | const src = inst_data.src(); |
| 17012 | const src = block.nodeOffset(inst_data.src_node); |
| 16995 | 17013 | const ptr_src = src; // TODO better source location |
| 16996 | 17014 | const ptr = try sema.resolveInst(inst_data.operand); |
| 16997 | 17015 | return sema.analyzeLoad(block, src, ptr, ptr_src); |
| ... | ... | @@ -17181,7 +17199,7 @@ fn zirCmpEq( |
| 17181 | 17199 | const mod = sema.mod; |
| 17182 | 17200 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 17183 | 17201 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 17184 | | const src: LazySrcLoc = inst_data.src(); |
| 17202 | const src: LazySrcLoc = block.nodeOffset(inst_data.src_node); |
| 17185 | 17203 | const lhs_src: LazySrcLoc = .{ .node_offset_bin_lhs = inst_data.src_node }; |
| 17186 | 17204 | const rhs_src: LazySrcLoc = .{ .node_offset_bin_rhs = inst_data.src_node }; |
| 17187 | 17205 | const lhs = try sema.resolveInst(extra.lhs); |
| ... | ... | @@ -17297,7 +17315,7 @@ fn zirCmp( |
| 17297 | 17315 | |
| 17298 | 17316 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 17299 | 17317 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 17300 | | const src: LazySrcLoc = inst_data.src(); |
| 17318 | const src: LazySrcLoc = block.nodeOffset(inst_data.src_node); |
| 17301 | 17319 | const lhs_src: LazySrcLoc = .{ .node_offset_bin_lhs = inst_data.src_node }; |
| 17302 | 17320 | const rhs_src: LazySrcLoc = .{ .node_offset_bin_rhs = inst_data.src_node }; |
| 17303 | 17321 | const lhs = try sema.resolveInst(extra.lhs); |
| ... | ... | @@ -17724,7 +17742,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai |
| 17724 | 17742 | const gpa = sema.gpa; |
| 17725 | 17743 | const ip = &mod.intern_pool; |
| 17726 | 17744 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 17727 | | const src = inst_data.src(); |
| 17745 | const src = block.nodeOffset(inst_data.src_node); |
| 17728 | 17746 | const ty = try sema.resolveType(block, src, inst_data.operand); |
| 17729 | 17747 | const type_info_ty = try sema.getBuiltinType("Type"); |
| 17730 | 17748 | const type_info_tag_ty = type_info_ty.unionTagType(mod).?; |
| ... | ... | @@ -18906,7 +18924,7 @@ fn zirTypeofBuiltin(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErr |
| 18906 | 18924 | |
| 18907 | 18925 | fn zirTypeofLog2IntType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 18908 | 18926 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 18909 | | const src = inst_data.src(); |
| 18927 | const src = block.nodeOffset(inst_data.src_node); |
| 18910 | 18928 | const operand = try sema.resolveInst(inst_data.operand); |
| 18911 | 18929 | const operand_ty = sema.typeOf(operand); |
| 18912 | 18930 | const res_ty = try sema.log2IntType(block, operand_ty, src); |
| ... | ... | @@ -18998,7 +19016,7 @@ fn zirBoolNot(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air |
| 18998 | 19016 | |
| 18999 | 19017 | const mod = sema.mod; |
| 19000 | 19018 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 19001 | | const src = inst_data.src(); |
| 19019 | const src = block.nodeOffset(inst_data.src_node); |
| 19002 | 19020 | const operand_src: LazySrcLoc = .{ .node_offset_un_op = inst_data.src_node }; |
| 19003 | 19021 | const uncasted_operand = try sema.resolveInst(inst_data.operand); |
| 19004 | 19022 | |
| ... | ... | @@ -19155,7 +19173,7 @@ fn zirIsNonNull( |
| 19155 | 19173 | defer tracy.end(); |
| 19156 | 19174 | |
| 19157 | 19175 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 19158 | | const src = inst_data.src(); |
| 19176 | const src = block.nodeOffset(inst_data.src_node); |
| 19159 | 19177 | const operand = try sema.resolveInst(inst_data.operand); |
| 19160 | 19178 | try sema.checkNullableType(block, src, sema.typeOf(operand)); |
| 19161 | 19179 | return sema.analyzeIsNull(block, src, operand, true); |
| ... | ... | @@ -19171,7 +19189,7 @@ fn zirIsNonNullPtr( |
| 19171 | 19189 | |
| 19172 | 19190 | const mod = sema.mod; |
| 19173 | 19191 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 19174 | | const src = inst_data.src(); |
| 19192 | const src = block.nodeOffset(inst_data.src_node); |
| 19175 | 19193 | const ptr = try sema.resolveInst(inst_data.operand); |
| 19176 | 19194 | try sema.checkNullableType(block, src, sema.typeOf(ptr).elemType2(mod)); |
| 19177 | 19195 | if ((try sema.resolveValue(ptr)) == null) { |
| ... | ... | @@ -19196,7 +19214,7 @@ fn zirIsNonErr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai |
| 19196 | 19214 | defer tracy.end(); |
| 19197 | 19215 | |
| 19198 | 19216 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 19199 | | const src = inst_data.src(); |
| 19217 | const src = block.nodeOffset(inst_data.src_node); |
| 19200 | 19218 | const operand = try sema.resolveInst(inst_data.operand); |
| 19201 | 19219 | try sema.checkErrorType(block, src, sema.typeOf(operand)); |
| 19202 | 19220 | return sema.analyzeIsNonErr(block, src, operand); |
| ... | ... | @@ -19208,7 +19226,7 @@ fn zirIsNonErrPtr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError |
| 19208 | 19226 | |
| 19209 | 19227 | const mod = sema.mod; |
| 19210 | 19228 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 19211 | | const src = inst_data.src(); |
| 19229 | const src = block.nodeOffset(inst_data.src_node); |
| 19212 | 19230 | const ptr = try sema.resolveInst(inst_data.operand); |
| 19213 | 19231 | try sema.checkErrorType(block, src, sema.typeOf(ptr).elemType2(mod)); |
| 19214 | 19232 | const loaded = try sema.analyzeLoad(block, src, ptr, src); |
| ... | ... | @@ -19220,7 +19238,7 @@ fn zirRetIsNonErr(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError |
| 19220 | 19238 | defer tracy.end(); |
| 19221 | 19239 | |
| 19222 | 19240 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 19223 | | const src = inst_data.src(); |
| 19241 | const src = block.nodeOffset(inst_data.src_node); |
| 19224 | 19242 | const operand = try sema.resolveInst(inst_data.operand); |
| 19225 | 19243 | return sema.analyzeIsNonErr(block, src, operand); |
| 19226 | 19244 | } |
| ... | ... | @@ -19302,7 +19320,7 @@ fn zirCondbr( |
| 19302 | 19320 | |
| 19303 | 19321 | fn zirTry(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 19304 | 19322 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 19305 | | const src = inst_data.src(); |
| 19323 | const src = parent_block.nodeOffset(inst_data.src_node); |
| 19306 | 19324 | const operand_src: LazySrcLoc = .{ .node_offset_bin_lhs = inst_data.src_node }; |
| 19307 | 19325 | const extra = sema.code.extraData(Zir.Inst.Try, inst_data.payload_index); |
| 19308 | 19326 | const body = sema.code.bodySlice(extra.end, extra.data.body_len); |
| ... | ... | @@ -19349,7 +19367,7 @@ fn zirTry(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileError! |
| 19349 | 19367 | |
| 19350 | 19368 | fn zirTryPtr(sema: *Sema, parent_block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 19351 | 19369 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 19352 | | const src = inst_data.src(); |
| 19370 | const src = parent_block.nodeOffset(inst_data.src_node); |
| 19353 | 19371 | const operand_src: LazySrcLoc = .{ .node_offset_bin_lhs = inst_data.src_node }; |
| 19354 | 19372 | const extra = sema.code.extraData(Zir.Inst.Try, inst_data.payload_index); |
| 19355 | 19373 | const body = sema.code.bodySlice(extra.end, extra.data.body_len); |
| ... | ... | @@ -19474,7 +19492,7 @@ fn addRuntimeBreak(sema: *Sema, child_block: *Block, block_inst: Zir.Inst.Index, |
| 19474 | 19492 | |
| 19475 | 19493 | fn zirUnreachable(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void { |
| 19476 | 19494 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].@"unreachable"; |
| 19477 | | const src = inst_data.src(); |
| 19495 | const src = block.nodeOffset(inst_data.src_node); |
| 19478 | 19496 | |
| 19479 | 19497 | if (block.is_comptime) { |
| 19480 | 19498 | return sema.fail(block, src, "reached unreachable code", .{}); |
| ... | ... | @@ -19498,13 +19516,13 @@ fn zirRetErrValue( |
| 19498 | 19516 | ) CompileError!void { |
| 19499 | 19517 | const mod = sema.mod; |
| 19500 | 19518 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].str_tok; |
| 19519 | const src = block.tokenOffset(inst_data.src_tok); |
| 19501 | 19520 | const err_name = try mod.intern_pool.getOrPutString( |
| 19502 | 19521 | sema.gpa, |
| 19503 | 19522 | inst_data.get(sema.code), |
| 19504 | 19523 | .no_embedded_nulls, |
| 19505 | 19524 | ); |
| 19506 | 19525 | _ = try mod.getErrorValue(err_name); |
| 19507 | | const src = inst_data.src(); |
| 19508 | 19526 | // Return the error code from the function. |
| 19509 | 19527 | const error_set_type = try mod.singleErrorSetType(err_name); |
| 19510 | 19528 | const result_inst = Air.internedToRef((try mod.intern(.{ .err = .{ |
| ... | ... | @@ -19524,7 +19542,7 @@ fn zirRetImplicit( |
| 19524 | 19542 | |
| 19525 | 19543 | const mod = sema.mod; |
| 19526 | 19544 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_tok; |
| 19527 | | const r_brace_src = inst_data.src(); |
| 19545 | const r_brace_src = block.tokenOffset(inst_data.src_tok); |
| 19528 | 19546 | if (block.inlining == null and sema.func_is_naked) { |
| 19529 | 19547 | assert(!block.is_comptime); |
| 19530 | 19548 | if (block.wantSafety()) { |
| ... | ... | @@ -19570,7 +19588,7 @@ fn zirRetNode(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!voi |
| 19570 | 19588 | |
| 19571 | 19589 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 19572 | 19590 | const operand = try sema.resolveInst(inst_data.operand); |
| 19573 | | const src = inst_data.src(); |
| 19591 | const src = block.nodeOffset(inst_data.src_node); |
| 19574 | 19592 | |
| 19575 | 19593 | return sema.analyzeRet(block, operand, src, .{ .node_offset_return_operand = inst_data.src_node }); |
| 19576 | 19594 | } |
| ... | ... | @@ -19580,7 +19598,7 @@ fn zirRetLoad(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!voi |
| 19580 | 19598 | defer tracy.end(); |
| 19581 | 19599 | |
| 19582 | 19600 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 19583 | | const src = inst_data.src(); |
| 19601 | const src = block.nodeOffset(inst_data.src_node); |
| 19584 | 19602 | const ret_ptr = try sema.resolveInst(inst_data.operand); |
| 19585 | 19603 | |
| 19586 | 19604 | if (block.is_comptime or block.inlining != null or sema.func_is_naked) { |
| ... | ... | @@ -19679,7 +19697,7 @@ fn zirSaveErrRetIndex(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileE |
| 19679 | 19697 | |
| 19680 | 19698 | fn zirRestoreErrRetIndex(sema: *Sema, start_block: *Block, extended: Zir.Inst.Extended.InstData) CompileError!void { |
| 19681 | 19699 | const extra = sema.code.extraData(Zir.Inst.RestoreErrRetIndex, extended.operand).data; |
| 19682 | | return sema.restoreErrRetIndex(start_block, extra.src(), extra.block, extra.operand); |
| 19700 | return sema.restoreErrRetIndex(start_block, start_block.nodeOffset(extra.src_node), extra.block, extra.operand); |
| 19683 | 19701 | } |
| 19684 | 19702 | |
| 19685 | 19703 | /// If `operand` is non-error (or is `none`), restores the error return trace to |
| ... | ... | @@ -20006,7 +20024,7 @@ fn zirStructInitEmpty(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileE |
| 20006 | 20024 | defer tracy.end(); |
| 20007 | 20025 | |
| 20008 | 20026 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 20009 | | const src = inst_data.src(); |
| 20027 | const src = block.nodeOffset(inst_data.src_node); |
| 20010 | 20028 | const ty_src: LazySrcLoc = .{ .node_offset_init_ty = inst_data.src_node }; |
| 20011 | 20029 | const obj_ty = try sema.resolveType(block, ty_src, inst_data.operand); |
| 20012 | 20030 | const mod = sema.mod; |
| ... | ... | @@ -20026,7 +20044,7 @@ fn zirStructInitEmptyResult(sema: *Sema, block: *Block, inst: Zir.Inst.Index, is |
| 20026 | 20044 | |
| 20027 | 20045 | const mod = sema.mod; |
| 20028 | 20046 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 20029 | | const src = inst_data.src(); |
| 20047 | const src = block.nodeOffset(inst_data.src_node); |
| 20030 | 20048 | const ty_operand = sema.resolveType(block, src, inst_data.operand) catch |err| switch (err) { |
| 20031 | 20049 | // Generic poison means this is an untyped anonymous empty struct init |
| 20032 | 20050 | error.GenericPoison => return .empty_struct, |
| ... | ... | @@ -20158,7 +20176,7 @@ fn zirStructInit( |
| 20158 | 20176 | const zir_datas = sema.code.instructions.items(.data); |
| 20159 | 20177 | const inst_data = zir_datas[@intFromEnum(inst)].pl_node; |
| 20160 | 20178 | const extra = sema.code.extraData(Zir.Inst.StructInit, inst_data.payload_index); |
| 20161 | | const src = inst_data.src(); |
| 20179 | const src = block.nodeOffset(inst_data.src_node); |
| 20162 | 20180 | |
| 20163 | 20181 | const mod = sema.mod; |
| 20164 | 20182 | const ip = &mod.intern_pool; |
| ... | ... | @@ -20503,7 +20521,7 @@ fn zirStructInitAnon( |
| 20503 | 20521 | inst: Zir.Inst.Index, |
| 20504 | 20522 | ) CompileError!Air.Inst.Ref { |
| 20505 | 20523 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 20506 | | const src = inst_data.src(); |
| 20524 | const src = block.nodeOffset(inst_data.src_node); |
| 20507 | 20525 | const extra = sema.code.extraData(Zir.Inst.StructInitAnon, inst_data.payload_index); |
| 20508 | 20526 | return sema.structInitAnon(block, src, .anon_init, extra.data, extra.end, false); |
| 20509 | 20527 | } |
| ... | ... | @@ -20655,7 +20673,7 @@ fn zirArrayInit( |
| 20655 | 20673 | const mod = sema.mod; |
| 20656 | 20674 | const gpa = sema.gpa; |
| 20657 | 20675 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 20658 | | const src = inst_data.src(); |
| 20676 | const src = block.nodeOffset(inst_data.src_node); |
| 20659 | 20677 | |
| 20660 | 20678 | const extra = sema.code.extraData(Zir.Inst.MultiOp, inst_data.payload_index); |
| 20661 | 20679 | const args = sema.code.refSlice(extra.end, extra.data.operands_len); |
| ... | ... | @@ -20818,7 +20836,7 @@ fn zirArrayInitAnon( |
| 20818 | 20836 | inst: Zir.Inst.Index, |
| 20819 | 20837 | ) CompileError!Air.Inst.Ref { |
| 20820 | 20838 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 20821 | | const src = inst_data.src(); |
| 20839 | const src = block.nodeOffset(inst_data.src_node); |
| 20822 | 20840 | const extra = sema.code.extraData(Zir.Inst.MultiOp, inst_data.payload_index); |
| 20823 | 20841 | const operands = sema.code.refSlice(extra.end, extra.data.operands_len); |
| 20824 | 20842 | return sema.arrayInitAnon(block, src, operands, false); |
| ... | ... | @@ -20931,7 +20949,7 @@ fn zirStructInitFieldType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) Comp |
| 20931 | 20949 | const ip = &mod.intern_pool; |
| 20932 | 20950 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 20933 | 20951 | const extra = sema.code.extraData(Zir.Inst.FieldType, inst_data.payload_index).data; |
| 20934 | | const ty_src = inst_data.src(); |
| 20952 | const ty_src = block.nodeOffset(inst_data.src_node); |
| 20935 | 20953 | const field_name_src: LazySrcLoc = .{ .node_offset_field_name_init = inst_data.src_node }; |
| 20936 | 20954 | const wrapped_aggregate_ty = sema.resolveType(block, ty_src, extra.container_type) catch |err| switch (err) { |
| 20937 | 20955 | // Since this is a ZIR instruction that returns a type, encountering |
| ... | ... | @@ -21054,7 +21072,7 @@ fn zirAlignOf(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air |
| 21054 | 21072 | fn zirIntFromBool(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 21055 | 21073 | const mod = sema.mod; |
| 21056 | 21074 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 21057 | | const src = inst_data.src(); |
| 21075 | const src = block.nodeOffset(inst_data.src_node); |
| 21058 | 21076 | const operand = try sema.resolveInst(inst_data.operand); |
| 21059 | 21077 | const operand_ty = sema.typeOf(operand); |
| 21060 | 21078 | const is_vector = operand_ty.zigTypeTag(mod) == .Vector; |
| ... | ... | @@ -21216,7 +21234,7 @@ fn zirUnaryMath( |
| 21216 | 21234 | fn zirTagName(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 21217 | 21235 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 21218 | 21236 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 21219 | | const src = inst_data.src(); |
| 21237 | const src = block.nodeOffset(inst_data.src_node); |
| 21220 | 21238 | const operand = try sema.resolveInst(inst_data.operand); |
| 21221 | 21239 | const operand_ty = sema.typeOf(operand); |
| 21222 | 21240 | const mod = sema.mod; |
| ... | ... | @@ -22512,20 +22530,20 @@ fn zirTypeName(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai |
| 22512 | 22530 | |
| 22513 | 22531 | fn zirFrameType(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 22514 | 22532 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 22515 | | const src = inst_data.src(); |
| 22533 | const src = block.nodeOffset(inst_data.src_node); |
| 22516 | 22534 | return sema.failWithUseOfAsync(block, src); |
| 22517 | 22535 | } |
| 22518 | 22536 | |
| 22519 | 22537 | fn zirFrameSize(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 22520 | 22538 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 22521 | | const src = inst_data.src(); |
| 22539 | const src = block.nodeOffset(inst_data.src_node); |
| 22522 | 22540 | return sema.failWithUseOfAsync(block, src); |
| 22523 | 22541 | } |
| 22524 | 22542 | |
| 22525 | 22543 | fn zirIntFromFloat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 22526 | 22544 | const mod = sema.mod; |
| 22527 | 22545 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 22528 | | const src = inst_data.src(); |
| 22546 | const src = block.nodeOffset(inst_data.src_node); |
| 22529 | 22547 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 22530 | 22548 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 22531 | 22549 | const dest_ty = try sema.resolveDestType(block, src, extra.lhs, .remove_eu_opt, "@intFromFloat"); |
| ... | ... | @@ -22550,7 +22568,7 @@ fn zirIntFromFloat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro |
| 22550 | 22568 | }); |
| 22551 | 22569 | } |
| 22552 | 22570 | |
| 22553 | | try sema.requireRuntimeBlock(block, inst_data.src(), operand_src); |
| 22571 | try sema.requireRuntimeBlock(block, src, operand_src); |
| 22554 | 22572 | if (dest_scalar_ty.intInfo(mod).bits == 0) { |
| 22555 | 22573 | if (!is_vector) { |
| 22556 | 22574 | if (block.wantSafety()) { |
| ... | ... | @@ -22607,7 +22625,7 @@ fn zirIntFromFloat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro |
| 22607 | 22625 | fn zirFloatFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 22608 | 22626 | const mod = sema.mod; |
| 22609 | 22627 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 22610 | | const src = inst_data.src(); |
| 22628 | const src = block.nodeOffset(inst_data.src_node); |
| 22611 | 22629 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 22612 | 22630 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 22613 | 22631 | const dest_ty = try sema.resolveDestType(block, src, extra.lhs, .remove_eu_opt, "@floatFromInt"); |
| ... | ... | @@ -22649,7 +22667,7 @@ fn zirFloatFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileErro |
| 22649 | 22667 | fn zirPtrFromInt(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 22650 | 22668 | const mod = sema.mod; |
| 22651 | 22669 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 22652 | | const src = inst_data.src(); |
| 22670 | const src = block.nodeOffset(inst_data.src_node); |
| 22653 | 22671 | |
| 22654 | 22672 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 22655 | 22673 | |
| ... | ... | @@ -22934,7 +22952,7 @@ fn zirPtrCastFull(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstDa |
| 22934 | 22952 | |
| 22935 | 22953 | fn zirPtrCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 22936 | 22954 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 22937 | | const src = inst_data.src(); |
| 22955 | const src = block.nodeOffset(inst_data.src_node); |
| 22938 | 22956 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 22939 | 22957 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 22940 | 22958 | const dest_ty = try sema.resolveDestType(block, src, extra.lhs, .remove_eu, "@ptrCast"); |
| ... | ... | @@ -23381,7 +23399,7 @@ fn zirPtrCastNoDest(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.Inst |
| 23381 | 23399 | fn zirTruncate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 23382 | 23400 | const mod = sema.mod; |
| 23383 | 23401 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 23384 | | const src = inst_data.src(); |
| 23402 | const src = block.nodeOffset(inst_data.src_node); |
| 23385 | 23403 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 23386 | 23404 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 23387 | 23405 | const dest_ty = try sema.resolveDestType(block, src, extra.lhs, .remove_eu_opt, "@truncate"); |
| ... | ... | @@ -23471,7 +23489,7 @@ fn zirBitCount( |
| 23471 | 23489 | ) CompileError!Air.Inst.Ref { |
| 23472 | 23490 | const mod = sema.mod; |
| 23473 | 23491 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 23474 | | const src = inst_data.src(); |
| 23492 | const src = block.nodeOffset(inst_data.src_node); |
| 23475 | 23493 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 23476 | 23494 | const operand = try sema.resolveInst(inst_data.operand); |
| 23477 | 23495 | const operand_ty = sema.typeOf(operand); |
| ... | ... | @@ -23525,7 +23543,7 @@ fn zirBitCount( |
| 23525 | 23543 | fn zirByteSwap(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 23526 | 23544 | const mod = sema.mod; |
| 23527 | 23545 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 23528 | | const src = inst_data.src(); |
| 23546 | const src = block.nodeOffset(inst_data.src_node); |
| 23529 | 23547 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 23530 | 23548 | const operand = try sema.resolveInst(inst_data.operand); |
| 23531 | 23549 | const operand_ty = sema.typeOf(operand); |
| ... | ... | @@ -23581,7 +23599,7 @@ fn zirByteSwap(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai |
| 23581 | 23599 | |
| 23582 | 23600 | fn zirBitReverse(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 23583 | 23601 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 23584 | | const src = inst_data.src(); |
| 23602 | const src = block.nodeOffset(inst_data.src_node); |
| 23585 | 23603 | const operand_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 23586 | 23604 | const operand = try sema.resolveInst(inst_data.operand); |
| 23587 | 23605 | const operand_ty = sema.typeOf(operand); |
| ... | ... | @@ -24290,7 +24308,7 @@ fn zirSplat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.I |
| 24290 | 24308 | const mod = sema.mod; |
| 24291 | 24309 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 24292 | 24310 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 24293 | | const src = inst_data.src(); |
| 24311 | const src = block.nodeOffset(inst_data.src_node); |
| 24294 | 24312 | const scalar_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 24295 | 24313 | const dest_ty = try sema.resolveDestType(block, src, extra.lhs, .remove_eu_opt, "@splat"); |
| 24296 | 24314 | |
| ... | ... | @@ -24312,7 +24330,7 @@ fn zirSplat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.I |
| 24312 | 24330 | return Air.internedToRef((try sema.splat(dest_ty, scalar_val)).toIntern()); |
| 24313 | 24331 | } |
| 24314 | 24332 | |
| 24315 | | try sema.requireRuntimeBlock(block, inst_data.src(), scalar_src); |
| 24333 | try sema.requireRuntimeBlock(block, src, scalar_src); |
| 24316 | 24334 | return block.addTyOp(.splat, dest_ty, scalar); |
| 24317 | 24335 | } |
| 24318 | 24336 | |
| ... | ... | @@ -24377,7 +24395,7 @@ fn zirReduce(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air. |
| 24377 | 24395 | return Air.internedToRef(accum.toIntern()); |
| 24378 | 24396 | } |
| 24379 | 24397 | |
| 24380 | | try sema.requireRuntimeBlock(block, inst_data.src(), operand_src); |
| 24398 | try sema.requireRuntimeBlock(block, block.nodeOffset(inst_data.src_node), operand_src); |
| 24381 | 24399 | return block.addInst(.{ |
| 24382 | 24400 | .tag = if (block.float_mode == .optimized) .reduce_optimized else .reduce, |
| 24383 | 24401 | .data = .{ .reduce = .{ |
| ... | ... | @@ -24704,7 +24722,7 @@ fn zirAtomicLoad(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError! |
| 24704 | 24722 | } |
| 24705 | 24723 | } |
| 24706 | 24724 | |
| 24707 | | try sema.requireRuntimeBlock(block, inst_data.src(), ptr_src); |
| 24725 | try sema.requireRuntimeBlock(block, block.nodeOffset(inst_data.src_node), ptr_src); |
| 24708 | 24726 | return block.addInst(.{ |
| 24709 | 24727 | .tag = .atomic_load, |
| 24710 | 24728 | .data = .{ .atomic_load = .{ |
| ... | ... | @@ -24718,7 +24736,7 @@ fn zirAtomicRmw(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A |
| 24718 | 24736 | const mod = sema.mod; |
| 24719 | 24737 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 24720 | 24738 | const extra = sema.code.extraData(Zir.Inst.AtomicRmw, inst_data.payload_index).data; |
| 24721 | | const src = inst_data.src(); |
| 24739 | const src = block.nodeOffset(inst_data.src_node); |
| 24722 | 24740 | // zig fmt: off |
| 24723 | 24741 | const elem_ty_src : LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 24724 | 24742 | const ptr_src : LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node }; |
| ... | ... | @@ -24803,7 +24821,7 @@ fn zirAtomicRmw(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A |
| 24803 | 24821 | fn zirAtomicStore(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void { |
| 24804 | 24822 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 24805 | 24823 | const extra = sema.code.extraData(Zir.Inst.AtomicStore, inst_data.payload_index).data; |
| 24806 | | const src = inst_data.src(); |
| 24824 | const src = block.nodeOffset(inst_data.src_node); |
| 24807 | 24825 | // zig fmt: off |
| 24808 | 24826 | const elem_ty_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 24809 | 24827 | const ptr_src : LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node }; |
| ... | ... | @@ -24839,7 +24857,7 @@ fn zirAtomicStore(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError |
| 24839 | 24857 | fn zirMulAdd(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 24840 | 24858 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 24841 | 24859 | const extra = sema.code.extraData(Zir.Inst.MulAdd, inst_data.payload_index).data; |
| 24842 | | const src = inst_data.src(); |
| 24860 | const src = block.nodeOffset(inst_data.src_node); |
| 24843 | 24861 | |
| 24844 | 24862 | const mulend1_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node }; |
| 24845 | 24863 | const mulend2_src: LazySrcLoc = .{ .node_offset_builtin_call_arg2 = inst_data.src_node }; |
| ... | ... | @@ -24909,7 +24927,7 @@ fn zirBuiltinCall(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError |
| 24909 | 24927 | const modifier_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 24910 | 24928 | const func_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node }; |
| 24911 | 24929 | const args_src: LazySrcLoc = .{ .node_offset_builtin_call_arg2 = inst_data.src_node }; |
| 24912 | | const call_src = inst_data.src(); |
| 24930 | const call_src = block.nodeOffset(inst_data.src_node); |
| 24913 | 24931 | |
| 24914 | 24932 | const extra = sema.code.extraData(Zir.Inst.BuiltinCall, inst_data.payload_index).data; |
| 24915 | 24933 | const func = try sema.resolveInst(extra.callee); |
| ... | ... | @@ -25003,7 +25021,7 @@ fn zirFieldParentPtr(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.Ins |
| 25003 | 25021 | const FlagsInt = @typeInfo(Zir.Inst.FullPtrCastFlags).Struct.backing_integer.?; |
| 25004 | 25022 | const flags: Zir.Inst.FullPtrCastFlags = @bitCast(@as(FlagsInt, @truncate(extended.small))); |
| 25005 | 25023 | assert(!flags.ptr_cast); |
| 25006 | | const inst_src = extra.src(); |
| 25024 | const inst_src = block.nodeOffset(extra.src_node); |
| 25007 | 25025 | const field_name_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = extra.src_node }; |
| 25008 | 25026 | const field_ptr_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = extra.src_node }; |
| 25009 | 25027 | |
| ... | ... | @@ -25213,7 +25231,7 @@ fn zirMinMax( |
| 25213 | 25231 | ) CompileError!Air.Inst.Ref { |
| 25214 | 25232 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 25215 | 25233 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 25216 | | const src = inst_data.src(); |
| 25234 | const src = block.nodeOffset(inst_data.src_node); |
| 25217 | 25235 | const lhs_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 25218 | 25236 | const rhs_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node }; |
| 25219 | 25237 | const lhs = try sema.resolveInst(extra.lhs); |
| ... | ... | @@ -25514,7 +25532,7 @@ fn upgradeToArrayPtr(sema: *Sema, block: *Block, ptr: Air.Inst.Ref, len: u64) !A |
| 25514 | 25532 | fn zirMemcpy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void { |
| 25515 | 25533 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 25516 | 25534 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 25517 | | const src = inst_data.src(); |
| 25535 | const src = block.nodeOffset(inst_data.src_node); |
| 25518 | 25536 | const dest_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 25519 | 25537 | const src_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node }; |
| 25520 | 25538 | const dest_ptr = try sema.resolveInst(extra.lhs); |
| ... | ... | @@ -25734,7 +25752,7 @@ fn zirMemset(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void |
| 25734 | 25752 | const ip = &mod.intern_pool; |
| 25735 | 25753 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].pl_node; |
| 25736 | 25754 | const extra = sema.code.extraData(Zir.Inst.Bin, inst_data.payload_index).data; |
| 25737 | | const src = inst_data.src(); |
| 25755 | const src = block.nodeOffset(inst_data.src_node); |
| 25738 | 25756 | const dest_src: LazySrcLoc = .{ .node_offset_builtin_call_arg0 = inst_data.src_node }; |
| 25739 | 25757 | const value_src: LazySrcLoc = .{ .node_offset_builtin_call_arg1 = inst_data.src_node }; |
| 25740 | 25758 | const dest_ptr = try sema.resolveInst(extra.lhs); |
| ... | ... | @@ -25819,7 +25837,7 @@ fn zirBuiltinAsyncCall(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.I |
| 25819 | 25837 | |
| 25820 | 25838 | fn zirResume(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Air.Inst.Ref { |
| 25821 | 25839 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 25822 | | const src = inst_data.src(); |
| 25840 | const src = block.nodeOffset(inst_data.src_node); |
| 25823 | 25841 | return sema.failWithUseOfAsync(block, src); |
| 25824 | 25842 | } |
| 25825 | 25843 | |
| ... | ... | @@ -25829,7 +25847,7 @@ fn zirAwait( |
| 25829 | 25847 | inst: Zir.Inst.Index, |
| 25830 | 25848 | ) CompileError!Air.Inst.Ref { |
| 25831 | 25849 | const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node; |
| 25832 | | const src = inst_data.src(); |
| 25850 | const src = block.nodeOffset(inst_data.src_node); |
| 25833 | 25851 | |
| 25834 | 25852 | return sema.failWithUseOfAsync(block, src); |
| 25835 | 25853 | } |