authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-09-26 15:22:57-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-09-26 16:06:05-07:00
log1b491e640d7c6a3cd71c4b146ca104ff0b136edd
tree3f3dc9f356304aeb82274488f3db24fc9786fd14
parentc9c080a187ae1839a5531d3d95c1080f38721229

fixes and make sema report errors when std.builtin wrong

instead of panicking

4 files changed, 95 insertions(+), 65 deletions(-)

lib/std/builtin.zig+1-1
...@@ -777,7 +777,7 @@ else...@@ -777,7 +777,7 @@ else
777/// root source file.777/// root source file.
778pub const Panic: type = if (@hasDecl(root, "Panic"))778pub const Panic: type = if (@hasDecl(root, "Panic"))
779 root.Panic779 root.Panic
780else if (std.builtin.zig_backend == .stage2_riscv64)780else if (builtin.zig_backend == .stage2_riscv64)
781 std.debug.SimplePanic // https://github.com/ziglang/zig/issues/21519781 std.debug.SimplePanic // https://github.com/ziglang/zig/issues/21519
782else782else
783 std.debug.FormattedPanic;783 std.debug.FormattedPanic;
src/Sema.zig+81-40
...@@ -2141,7 +2141,7 @@ pub fn setupErrorReturnTrace(sema: *Sema, block: *Block, last_arg_index: usize)...@@ -2141,7 +2141,7 @@ pub fn setupErrorReturnTrace(sema: *Sema, block: *Block, last_arg_index: usize)
2141 const addrs_ptr = try err_trace_block.addTy(.alloc, try pt.singleMutPtrType(addr_arr_ty));2141 const addrs_ptr = try err_trace_block.addTy(.alloc, try pt.singleMutPtrType(addr_arr_ty));
21422142
2143 // var st: StackTrace = undefined;2143 // var st: StackTrace = undefined;
2144 const stack_trace_ty = try pt.getBuiltinType("StackTrace");2144 const stack_trace_ty = try sema.getBuiltinType("StackTrace");
2145 try stack_trace_ty.resolveFields(pt);2145 try stack_trace_ty.resolveFields(pt);
2146 const st_ptr = try err_trace_block.addTy(.alloc, try pt.singleMutPtrType(stack_trace_ty));2146 const st_ptr = try err_trace_block.addTy(.alloc, try pt.singleMutPtrType(stack_trace_ty));
21472147
...@@ -6945,7 +6945,7 @@ pub fn analyzeSaveErrRetIndex(sema: *Sema, block: *Block) SemaError!Air.Inst.Ref...@@ -6945,7 +6945,7 @@ pub fn analyzeSaveErrRetIndex(sema: *Sema, block: *Block) SemaError!Air.Inst.Ref
69456945
6946 if (!block.ownerModule().error_tracing) return .none;6946 if (!block.ownerModule().error_tracing) return .none;
69476947
6948 const stack_trace_ty = try pt.getBuiltinType("StackTrace");6948 const stack_trace_ty = try sema.getBuiltinType("StackTrace");
6949 try stack_trace_ty.resolveFields(pt);6949 try stack_trace_ty.resolveFields(pt);
6950 const field_name = try zcu.intern_pool.getOrPutString(gpa, pt.tid, "index", .no_embedded_nulls);6950 const field_name = try zcu.intern_pool.getOrPutString(gpa, pt.tid, "index", .no_embedded_nulls);
6951 const field_index = sema.structFieldIndex(block, stack_trace_ty, field_name, LazySrcLoc.unneeded) catch |err| switch (err) {6951 const field_index = sema.structFieldIndex(block, stack_trace_ty, field_name, LazySrcLoc.unneeded) catch |err| switch (err) {
...@@ -6987,7 +6987,7 @@ fn popErrorReturnTrace(...@@ -6987,7 +6987,7 @@ fn popErrorReturnTrace(
6987 // AstGen determined this result does not go to an error-handling expr (try/catch/return etc.), or6987 // AstGen determined this result does not go to an error-handling expr (try/catch/return etc.), or
6988 // the result is comptime-known to be a non-error. Either way, pop unconditionally.6988 // the result is comptime-known to be a non-error. Either way, pop unconditionally.
69896989
6990 const stack_trace_ty = try pt.getBuiltinType("StackTrace");6990 const stack_trace_ty = try sema.getBuiltinType("StackTrace");
6991 try stack_trace_ty.resolveFields(pt);6991 try stack_trace_ty.resolveFields(pt);
6992 const ptr_stack_trace_ty = try pt.singleMutPtrType(stack_trace_ty);6992 const ptr_stack_trace_ty = try pt.singleMutPtrType(stack_trace_ty);
6993 const err_return_trace = try block.addTy(.err_return_trace, ptr_stack_trace_ty);6993 const err_return_trace = try block.addTy(.err_return_trace, ptr_stack_trace_ty);
...@@ -7013,7 +7013,7 @@ fn popErrorReturnTrace(...@@ -7013,7 +7013,7 @@ fn popErrorReturnTrace(
7013 defer then_block.instructions.deinit(gpa);7013 defer then_block.instructions.deinit(gpa);
70147014
7015 // If non-error, then pop the error return trace by restoring the index.7015 // If non-error, then pop the error return trace by restoring the index.
7016 const stack_trace_ty = try pt.getBuiltinType("StackTrace");7016 const stack_trace_ty = try sema.getBuiltinType("StackTrace");
7017 try stack_trace_ty.resolveFields(pt);7017 try stack_trace_ty.resolveFields(pt);
7018 const ptr_stack_trace_ty = try pt.singleMutPtrType(stack_trace_ty);7018 const ptr_stack_trace_ty = try pt.singleMutPtrType(stack_trace_ty);
7019 const err_return_trace = try then_block.addTy(.err_return_trace, ptr_stack_trace_ty);7019 const err_return_trace = try then_block.addTy(.err_return_trace, ptr_stack_trace_ty);
...@@ -7156,7 +7156,7 @@ fn zirCall(...@@ -7156,7 +7156,7 @@ fn zirCall(
7156 // If any input is an error-type, we might need to pop any trace it generated. Otherwise, we only7156 // If any input is an error-type, we might need to pop any trace it generated. Otherwise, we only
7157 // need to clean-up our own trace if we were passed to a non-error-handling expression.7157 // need to clean-up our own trace if we were passed to a non-error-handling expression.
7158 if (input_is_error or (pop_error_return_trace and return_ty.isError(zcu))) {7158 if (input_is_error or (pop_error_return_trace and return_ty.isError(zcu))) {
7159 const stack_trace_ty = try pt.getBuiltinType("StackTrace");7159 const stack_trace_ty = try sema.getBuiltinType("StackTrace");
7160 try stack_trace_ty.resolveFields(pt);7160 try stack_trace_ty.resolveFields(pt);
7161 const field_name = try zcu.intern_pool.getOrPutString(sema.gpa, pt.tid, "index", .no_embedded_nulls);7161 const field_name = try zcu.intern_pool.getOrPutString(sema.gpa, pt.tid, "index", .no_embedded_nulls);
7162 const field_index = try sema.structFieldIndex(block, stack_trace_ty, field_name, call_src);7162 const field_index = try sema.structFieldIndex(block, stack_trace_ty, field_name, call_src);
...@@ -10211,7 +10211,7 @@ fn finishFunc(...@@ -10211,7 +10211,7 @@ fn finishFunc(
10211 if (!final_is_generic and sema.wantErrorReturnTracing(return_type)) {10211 if (!final_is_generic and sema.wantErrorReturnTracing(return_type)) {
10212 // Make sure that StackTrace's fields are resolved so that the backend can10212 // Make sure that StackTrace's fields are resolved so that the backend can
10213 // lower this fn type.10213 // lower this fn type.
10214 const unresolved_stack_trace_ty = try pt.getBuiltinType("StackTrace");10214 const unresolved_stack_trace_ty = try sema.getBuiltinType("StackTrace");
10215 try unresolved_stack_trace_ty.resolveFields(pt);10215 try unresolved_stack_trace_ty.resolveFields(pt);
10216 }10216 }
1021710217
...@@ -14209,7 +14209,7 @@ fn maybeErrorUnwrap(...@@ -14209,7 +14209,7 @@ fn maybeErrorUnwrap(
14209 const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node;14209 const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node;
14210 const msg_inst = try sema.resolveInst(inst_data.operand);14210 const msg_inst = try sema.resolveInst(inst_data.operand);
1421114211
14212 const panic_fn = try pt.getBuiltinInnerType("Panic", "call");14212 const panic_fn = try getBuiltinInnerAsInst(sema, block, operand_src, "Panic", "call");
14213 const err_return_trace = try sema.getErrorReturnTrace(block);14213 const err_return_trace = try sema.getErrorReturnTrace(block);
14214 const args: [3]Air.Inst.Ref = .{ msg_inst, err_return_trace, .null_value };14214 const args: [3]Air.Inst.Ref = .{ msg_inst, err_return_trace, .null_value };
14215 try sema.callBuiltin(block, operand_src, panic_fn, .auto, &args, .@"safety check");14215 try sema.callBuiltin(block, operand_src, panic_fn, .auto, &args, .@"safety check");
...@@ -18246,7 +18246,7 @@ fn zirBuiltinSrc(...@@ -18246,7 +18246,7 @@ fn zirBuiltinSrc(
18246 } });18246 } });
18247 };18247 };
1824818248
18249 const src_loc_ty = try pt.getBuiltinType("SourceLocation");18249 const src_loc_ty = try sema.getBuiltinType("SourceLocation");
18250 const fields = .{18250 const fields = .{
18251 // module: [:0]const u8,18251 // module: [:0]const u8,
18252 module_name_val,18252 module_name_val,
...@@ -18273,7 +18273,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai...@@ -18273,7 +18273,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
18273 const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node;18273 const inst_data = sema.code.instructions.items(.data)[@intFromEnum(inst)].un_node;
18274 const src = block.nodeOffset(inst_data.src_node);18274 const src = block.nodeOffset(inst_data.src_node);
18275 const ty = try sema.resolveType(block, src, inst_data.operand);18275 const ty = try sema.resolveType(block, src, inst_data.operand);
18276 const type_info_ty = try pt.getBuiltinType("Type");18276 const type_info_ty = try sema.getBuiltinType("Type");
18277 const type_info_tag_ty = type_info_ty.unionTagType(zcu).?;18277 const type_info_tag_ty = type_info_ty.unionTagType(zcu).?;
1827818278
18279 if (ty.typeDeclInst(zcu)) |type_decl_inst| {18279 if (ty.typeDeclInst(zcu)) |type_decl_inst| {
...@@ -18364,7 +18364,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai...@@ -18364,7 +18364,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
18364 func_ty_info.return_type,18364 func_ty_info.return_type,
18365 } });18365 } });
1836618366
18367 const callconv_ty = try pt.getBuiltinType("CallingConvention");18367 const callconv_ty = try sema.getBuiltinType("CallingConvention");
1836818368
18369 const field_values = .{18369 const field_values = .{
18370 // calling_convention: CallingConvention,18370 // calling_convention: CallingConvention,
...@@ -18389,7 +18389,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai...@@ -18389,7 +18389,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
18389 },18389 },
18390 .int => {18390 .int => {
18391 const int_info_ty = try getInnerType(sema, block, src, type_info_ty, "Int");18391 const int_info_ty = try getInnerType(sema, block, src, type_info_ty, "Int");
18392 const signedness_ty = try pt.getBuiltinType("Signedness");18392 const signedness_ty = try sema.getBuiltinType("Signedness");
18393 const info = ty.intInfo(zcu);18393 const info = ty.intInfo(zcu);
18394 const field_values = .{18394 const field_values = .{
18395 // signedness: Signedness,18395 // signedness: Signedness,
...@@ -18429,7 +18429,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai...@@ -18429,7 +18429,7 @@ fn zirTypeInfo(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
18429 else18429 else
18430 try Type.fromInterned(info.child).lazyAbiAlignment(pt);18430 try Type.fromInterned(info.child).lazyAbiAlignment(pt);
1843118431
18432 const addrspace_ty = try pt.getBuiltinType("AddressSpace");18432 const addrspace_ty = try sema.getBuiltinType("AddressSpace");
18433 const pointer_ty = try getInnerType(sema, block, src, type_info_ty, "Pointer");18433 const pointer_ty = try getInnerType(sema, block, src, type_info_ty, "Pointer");
18434 const ptr_size_ty = try getInnerType(sema, block, src, pointer_ty, "Size");18434 const ptr_size_ty = try getInnerType(sema, block, src, pointer_ty, "Size");
1843518435
...@@ -20047,11 +20047,11 @@ fn retWithErrTracing(...@@ -20047,11 +20047,11 @@ fn retWithErrTracing(
20047 else => true,20047 else => true,
20048 };20048 };
20049 const gpa = sema.gpa;20049 const gpa = sema.gpa;
20050 const stack_trace_ty = try pt.getBuiltinType("StackTrace");20050 const stack_trace_ty = try sema.getBuiltinType("StackTrace");
20051 try stack_trace_ty.resolveFields(pt);20051 try stack_trace_ty.resolveFields(pt);
20052 const ptr_stack_trace_ty = try pt.singleMutPtrType(stack_trace_ty);20052 const ptr_stack_trace_ty = try pt.singleMutPtrType(stack_trace_ty);
20053 const err_return_trace = try block.addTy(.err_return_trace, ptr_stack_trace_ty);20053 const err_return_trace = try block.addTy(.err_return_trace, ptr_stack_trace_ty);
20054 const return_err_fn = try pt.getBuiltin("returnError");20054 const return_err_fn = try sema.getBuiltin("returnError");
20055 const args: [1]Air.Inst.Ref = .{err_return_trace};20055 const args: [1]Air.Inst.Ref = .{err_return_trace};
2005620056
20057 if (!need_check) {20057 if (!need_check) {
...@@ -21455,7 +21455,7 @@ fn getErrorReturnTrace(sema: *Sema, block: *Block) CompileError!Air.Inst.Ref {...@@ -21455,7 +21455,7 @@ fn getErrorReturnTrace(sema: *Sema, block: *Block) CompileError!Air.Inst.Ref {
21455 const pt = sema.pt;21455 const pt = sema.pt;
21456 const zcu = pt.zcu;21456 const zcu = pt.zcu;
21457 const ip = &zcu.intern_pool;21457 const ip = &zcu.intern_pool;
21458 const stack_trace_ty = try pt.getBuiltinType("StackTrace");21458 const stack_trace_ty = try sema.getBuiltinType("StackTrace");
21459 try stack_trace_ty.resolveFields(pt);21459 try stack_trace_ty.resolveFields(pt);
21460 const ptr_stack_trace_ty = try pt.singleMutPtrType(stack_trace_ty);21460 const ptr_stack_trace_ty = try pt.singleMutPtrType(stack_trace_ty);
21461 const opt_ptr_stack_trace_ty = try pt.optionalType(ptr_stack_trace_ty.toIntern());21461 const opt_ptr_stack_trace_ty = try pt.optionalType(ptr_stack_trace_ty.toIntern());
...@@ -21744,7 +21744,7 @@ fn zirReify(...@@ -21744,7 +21744,7 @@ fn zirReify(
21744 },21744 },
21745 },21745 },
21746 };21746 };
21747 const type_info_ty = try pt.getBuiltinType("Type");21747 const type_info_ty = try sema.getBuiltinType("Type");
21748 const uncasted_operand = try sema.resolveInst(extra.operand);21748 const uncasted_operand = try sema.resolveInst(extra.operand);
21749 const type_info = try sema.coerce(block, type_info_ty, uncasted_operand, operand_src);21749 const type_info = try sema.coerce(block, type_info_ty, uncasted_operand, operand_src);
21750 const val = try sema.resolveConstDefinedValue(block, operand_src, type_info, .{21750 const val = try sema.resolveConstDefinedValue(block, operand_src, type_info, .{
...@@ -22946,7 +22946,7 @@ fn reifyStruct(...@@ -22946,7 +22946,7 @@ fn reifyStruct(
2294622946
22947fn resolveVaListRef(sema: *Sema, block: *Block, src: LazySrcLoc, zir_ref: Zir.Inst.Ref) CompileError!Air.Inst.Ref {22947fn resolveVaListRef(sema: *Sema, block: *Block, src: LazySrcLoc, zir_ref: Zir.Inst.Ref) CompileError!Air.Inst.Ref {
22948 const pt = sema.pt;22948 const pt = sema.pt;
22949 const va_list_ty = try pt.getBuiltinType("VaList");22949 const va_list_ty = try sema.getBuiltinType("VaList");
22950 const va_list_ptr = try pt.singleMutPtrType(va_list_ty);22950 const va_list_ptr = try pt.singleMutPtrType(va_list_ty);
2295122951
22952 const inst = try sema.resolveInst(zir_ref);22952 const inst = try sema.resolveInst(zir_ref);
...@@ -22985,7 +22985,7 @@ fn zirCVaCopy(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData)...@@ -22985,7 +22985,7 @@ fn zirCVaCopy(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData)
22985 const va_list_src = block.builtinCallArgSrc(extra.node, 0);22985 const va_list_src = block.builtinCallArgSrc(extra.node, 0);
2298622986
22987 const va_list_ref = try sema.resolveVaListRef(block, va_list_src, extra.operand);22987 const va_list_ref = try sema.resolveVaListRef(block, va_list_src, extra.operand);
22988 const va_list_ty = try sema.pt.getBuiltinType("VaList");22988 const va_list_ty = try sema.getBuiltinType("VaList");
2298922989
22990 try sema.requireRuntimeBlock(block, src, null);22990 try sema.requireRuntimeBlock(block, src, null);
22991 return block.addTyOp(.c_va_copy, va_list_ty, va_list_ref);22991 return block.addTyOp(.c_va_copy, va_list_ty, va_list_ref);
...@@ -23005,7 +23005,7 @@ fn zirCVaEnd(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData) C...@@ -23005,7 +23005,7 @@ fn zirCVaEnd(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData) C
23005fn zirCVaStart(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData) CompileError!Air.Inst.Ref {23005fn zirCVaStart(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstData) CompileError!Air.Inst.Ref {
23006 const src = block.nodeOffset(@bitCast(extended.operand));23006 const src = block.nodeOffset(@bitCast(extended.operand));
2300723007
23008 const va_list_ty = try sema.pt.getBuiltinType("VaList");23008 const va_list_ty = try sema.getBuiltinType("VaList");
23009 try sema.requireRuntimeBlock(block, src, null);23009 try sema.requireRuntimeBlock(block, src, null);
23010 return block.addInst(.{23010 return block.addInst(.{
23011 .tag = .c_va_start,23011 .tag = .c_va_start,
...@@ -24617,7 +24617,7 @@ fn resolveExportOptions(...@@ -24617,7 +24617,7 @@ fn resolveExportOptions(
24617 const zcu = pt.zcu;24617 const zcu = pt.zcu;
24618 const gpa = sema.gpa;24618 const gpa = sema.gpa;
24619 const ip = &zcu.intern_pool;24619 const ip = &zcu.intern_pool;
24620 const export_options_ty = try pt.getBuiltinType("ExportOptions");24620 const export_options_ty = try sema.getBuiltinType("ExportOptions");
24621 const air_ref = try sema.resolveInst(zir_ref);24621 const air_ref = try sema.resolveInst(zir_ref);
24622 const options = try sema.coerce(block, export_options_ty, air_ref, src);24622 const options = try sema.coerce(block, export_options_ty, air_ref, src);
2462324623
...@@ -24681,7 +24681,7 @@ fn resolveBuiltinEnum(...@@ -24681,7 +24681,7 @@ fn resolveBuiltinEnum(
24681 reason: NeededComptimeReason,24681 reason: NeededComptimeReason,
24682) CompileError!@field(std.builtin, name) {24682) CompileError!@field(std.builtin, name) {
24683 const pt = sema.pt;24683 const pt = sema.pt;
24684 const ty = try pt.getBuiltinType(name);24684 const ty = try sema.getBuiltinType(name);
24685 const air_ref = try sema.resolveInst(zir_ref);24685 const air_ref = try sema.resolveInst(zir_ref);
24686 const coerced = try sema.coerce(block, ty, air_ref, src);24686 const coerced = try sema.coerce(block, ty, air_ref, src);
24687 const val = try sema.resolveConstDefinedValue(block, src, coerced, reason);24687 const val = try sema.resolveConstDefinedValue(block, src, coerced, reason);
...@@ -25450,7 +25450,7 @@ fn zirBuiltinCall(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError...@@ -25450,7 +25450,7 @@ fn zirBuiltinCall(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError
25450 const extra = sema.code.extraData(Zir.Inst.BuiltinCall, inst_data.payload_index).data;25450 const extra = sema.code.extraData(Zir.Inst.BuiltinCall, inst_data.payload_index).data;
25451 const func = try sema.resolveInst(extra.callee);25451 const func = try sema.resolveInst(extra.callee);
2545225452
25453 const modifier_ty = try pt.getBuiltinType("CallModifier");25453 const modifier_ty = try sema.getBuiltinType("CallModifier");
25454 const air_ref = try sema.resolveInst(extra.modifier);25454 const air_ref = try sema.resolveInst(extra.modifier);
25455 const modifier_ref = try sema.coerce(block, modifier_ty, air_ref, modifier_src);25455 const modifier_ref = try sema.coerce(block, modifier_ty, air_ref, modifier_src);
25456 const modifier_val = try sema.resolveConstDefinedValue(block, modifier_src, modifier_ref, .{25456 const modifier_val = try sema.resolveConstDefinedValue(block, modifier_src, modifier_ref, .{
...@@ -26576,7 +26576,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A...@@ -26576,7 +26576,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
26576 const body = sema.code.bodySlice(extra_index, body_len);26576 const body = sema.code.bodySlice(extra_index, body_len);
26577 extra_index += body.len;26577 extra_index += body.len;
2657826578
26579 const addrspace_ty = try pt.getBuiltinType("AddressSpace");26579 const addrspace_ty = try sema.getBuiltinType("AddressSpace");
26580 const val = try sema.resolveGenericBody(block, addrspace_src, body, inst, addrspace_ty, .{26580 const val = try sema.resolveGenericBody(block, addrspace_src, body, inst, addrspace_ty, .{
26581 .needed_comptime_reason = "addrspace must be comptime-known",26581 .needed_comptime_reason = "addrspace must be comptime-known",
26582 });26582 });
...@@ -26587,7 +26587,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A...@@ -26587,7 +26587,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
26587 } else if (extra.data.bits.has_addrspace_ref) blk: {26587 } else if (extra.data.bits.has_addrspace_ref) blk: {
26588 const addrspace_ref: Zir.Inst.Ref = @enumFromInt(sema.code.extra[extra_index]);26588 const addrspace_ref: Zir.Inst.Ref = @enumFromInt(sema.code.extra[extra_index]);
26589 extra_index += 1;26589 extra_index += 1;
26590 const addrspace_ty = try pt.getBuiltinType("AddressSpace");26590 const addrspace_ty = try sema.getBuiltinType("AddressSpace");
26591 const uncoerced_addrspace = sema.resolveInst(addrspace_ref) catch |err| switch (err) {26591 const uncoerced_addrspace = sema.resolveInst(addrspace_ref) catch |err| switch (err) {
26592 error.GenericPoison => break :blk null,26592 error.GenericPoison => break :blk null,
26593 else => |e| return e,26593 else => |e| return e,
...@@ -26641,7 +26641,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A...@@ -26641,7 +26641,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
26641 const body = sema.code.bodySlice(extra_index, body_len);26641 const body = sema.code.bodySlice(extra_index, body_len);
26642 extra_index += body.len;26642 extra_index += body.len;
2664326643
26644 const cc_ty = try pt.getBuiltinType("CallingConvention");26644 const cc_ty = try sema.getBuiltinType("CallingConvention");
26645 const val = try sema.resolveGenericBody(block, cc_src, body, inst, cc_ty, .{26645 const val = try sema.resolveGenericBody(block, cc_src, body, inst, cc_ty, .{
26646 .needed_comptime_reason = "calling convention must be comptime-known",26646 .needed_comptime_reason = "calling convention must be comptime-known",
26647 });26647 });
...@@ -26652,7 +26652,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A...@@ -26652,7 +26652,7 @@ fn zirFuncFancy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
26652 } else if (extra.data.bits.has_cc_ref) blk: {26652 } else if (extra.data.bits.has_cc_ref) blk: {
26653 const cc_ref: Zir.Inst.Ref = @enumFromInt(sema.code.extra[extra_index]);26653 const cc_ref: Zir.Inst.Ref = @enumFromInt(sema.code.extra[extra_index]);
26654 extra_index += 1;26654 extra_index += 1;
26655 const cc_ty = try pt.getBuiltinType("CallingConvention");26655 const cc_ty = try sema.getBuiltinType("CallingConvention");
26656 const uncoerced_cc = sema.resolveInst(cc_ref) catch |err| switch (err) {26656 const uncoerced_cc = sema.resolveInst(cc_ref) catch |err| switch (err) {
26657 error.GenericPoison => break :blk null,26657 error.GenericPoison => break :blk null,
26658 else => |e| return e,26658 else => |e| return e,
...@@ -26869,7 +26869,7 @@ fn resolvePrefetchOptions(...@@ -26869,7 +26869,7 @@ fn resolvePrefetchOptions(
26869 const zcu = pt.zcu;26869 const zcu = pt.zcu;
26870 const gpa = sema.gpa;26870 const gpa = sema.gpa;
26871 const ip = &zcu.intern_pool;26871 const ip = &zcu.intern_pool;
26872 const options_ty = try pt.getBuiltinType("PrefetchOptions");26872 const options_ty = try sema.getBuiltinType("PrefetchOptions");
26873 const options = try sema.coerce(block, options_ty, try sema.resolveInst(zir_ref), src);26873 const options = try sema.coerce(block, options_ty, try sema.resolveInst(zir_ref), src);
2687426874
26875 const rw_src = block.src(.{ .init_field_rw = src.offset.node_offset_builtin_call_arg.builtin_call_node });26875 const rw_src = block.src(.{ .init_field_rw = src.offset.node_offset_builtin_call_arg.builtin_call_node });
...@@ -26942,7 +26942,7 @@ fn resolveExternOptions(...@@ -26942,7 +26942,7 @@ fn resolveExternOptions(
26942 const gpa = sema.gpa;26942 const gpa = sema.gpa;
26943 const ip = &zcu.intern_pool;26943 const ip = &zcu.intern_pool;
26944 const options_inst = try sema.resolveInst(zir_ref);26944 const options_inst = try sema.resolveInst(zir_ref);
26945 const extern_options_ty = try pt.getBuiltinType("ExternOptions");26945 const extern_options_ty = try sema.getBuiltinType("ExternOptions");
26946 const options = try sema.coerce(block, extern_options_ty, options_inst, src);26946 const options = try sema.coerce(block, extern_options_ty, options_inst, src);
2694726947
26948 const name_src = block.src(.{ .init_field_name = src.offset.node_offset_builtin_call_arg.builtin_call_node });26948 const name_src = block.src(.{ .init_field_name = src.offset.node_offset_builtin_call_arg.builtin_call_node });
...@@ -27129,7 +27129,7 @@ fn zirBuiltinValue(sema: *Sema, extended: Zir.Inst.Extended.InstData) CompileErr...@@ -27129,7 +27129,7 @@ fn zirBuiltinValue(sema: *Sema, extended: Zir.Inst.Extended.InstData) CompileErr
2712927129
27130 // Values are handled here.27130 // Values are handled here.
27131 .calling_convention_c => {27131 .calling_convention_c => {
27132 const callconv_ty = try pt.getBuiltinType("CallingConvention");27132 const callconv_ty = try sema.getBuiltinType("CallingConvention");
27133 comptime assert(@intFromEnum(std.builtin.CallingConvention.C) == 1);27133 comptime assert(@intFromEnum(std.builtin.CallingConvention.C) == 1);
27134 const val = try pt.intern(.{ .enum_tag = .{27134 const val = try pt.intern(.{ .enum_tag = .{
27135 .ty = callconv_ty.toIntern(),27135 .ty = callconv_ty.toIntern(),
...@@ -27138,7 +27138,7 @@ fn zirBuiltinValue(sema: *Sema, extended: Zir.Inst.Extended.InstData) CompileErr...@@ -27138,7 +27138,7 @@ fn zirBuiltinValue(sema: *Sema, extended: Zir.Inst.Extended.InstData) CompileErr
27138 return Air.internedToRef(val);27138 return Air.internedToRef(val);
27139 },27139 },
27140 .calling_convention_inline => {27140 .calling_convention_inline => {
27141 const callconv_ty = try pt.getBuiltinType("CallingConvention");27141 const callconv_ty = try sema.getBuiltinType("CallingConvention");
27142 comptime assert(@intFromEnum(std.builtin.CallingConvention.Inline) == 4);27142 comptime assert(@intFromEnum(std.builtin.CallingConvention.Inline) == 4);
27143 const val = try pt.intern(.{ .enum_tag = .{27143 const val = try pt.intern(.{ .enum_tag = .{
27144 .ty = callconv_ty.toIntern(),27144 .ty = callconv_ty.toIntern(),
...@@ -27147,7 +27147,7 @@ fn zirBuiltinValue(sema: *Sema, extended: Zir.Inst.Extended.InstData) CompileErr...@@ -27147,7 +27147,7 @@ fn zirBuiltinValue(sema: *Sema, extended: Zir.Inst.Extended.InstData) CompileErr
27147 return Air.internedToRef(val);27147 return Air.internedToRef(val);
27148 },27148 },
27149 };27149 };
27150 const ty = try pt.getBuiltinType(type_name);27150 const ty = try sema.getBuiltinType(type_name);
27151 return Air.internedToRef(ty.toIntern());27151 return Air.internedToRef(ty.toIntern());
27152}27152}
2715327153
...@@ -27186,7 +27186,7 @@ fn zirBranchHint(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstDat...@@ -27186,7 +27186,7 @@ fn zirBranchHint(sema: *Sema, block: *Block, extended: Zir.Inst.Extended.InstDat
27186 const uncoerced_hint = try sema.resolveInst(extra.operand);27186 const uncoerced_hint = try sema.resolveInst(extra.operand);
27187 const operand_src = block.builtinCallArgSrc(extra.node, 0);27187 const operand_src = block.builtinCallArgSrc(extra.node, 0);
2718827188
27189 const hint_ty = try pt.getBuiltinType("BranchHint");27189 const hint_ty = try sema.getBuiltinType("BranchHint");
27190 const coerced_hint = try sema.coerce(block, hint_ty, uncoerced_hint, operand_src);27190 const coerced_hint = try sema.coerce(block, hint_ty, uncoerced_hint, operand_src);
27191 const hint_val = try sema.resolveConstDefinedValue(block, operand_src, coerced_hint, .{27191 const hint_val = try sema.resolveConstDefinedValue(block, operand_src, coerced_hint, .{
27192 .needed_comptime_reason = "operand to '@branchHint' must be comptime-known",27192 .needed_comptime_reason = "operand to '@branchHint' must be comptime-known",
...@@ -27650,7 +27650,7 @@ fn prepareSimplePanic(sema: *Sema, block: *Block, src: LazySrcLoc) !void {...@@ -27650,7 +27650,7 @@ fn prepareSimplePanic(sema: *Sema, block: *Block, src: LazySrcLoc) !void {
27650 }27650 }
2765127651
27652 if (zcu.null_stack_trace == .none) {27652 if (zcu.null_stack_trace == .none) {
27653 const stack_trace_ty = try pt.getBuiltinType("StackTrace");27653 const stack_trace_ty = try sema.getBuiltinType("StackTrace");
27654 try stack_trace_ty.resolveFields(pt);27654 try stack_trace_ty.resolveFields(pt);
27655 const target = zcu.getTarget();27655 const target = zcu.getTarget();
27656 const ptr_stack_trace_ty = try pt.ptrTypeSema(.{27656 const ptr_stack_trace_ty = try pt.ptrTypeSema(.{
...@@ -27678,7 +27678,7 @@ fn preparePanicId(sema: *Sema, block: *Block, src: LazySrcLoc, panic_id: Zcu.Pan...@@ -27678,7 +27678,7 @@ fn preparePanicId(sema: *Sema, block: *Block, src: LazySrcLoc, panic_id: Zcu.Pan
2767827678
27679 try sema.prepareSimplePanic(block, src);27679 try sema.prepareSimplePanic(block, src);
2768027680
27681 const panic_messages_ty = try pt.getBuiltinType("panic_messages");27681 const panic_messages_ty = try sema.getBuiltinType("panic_messages");
27682 const msg_nav_index = (sema.namespaceLookup(27682 const msg_nav_index = (sema.namespaceLookup(
27683 block,27683 block,
27684 LazySrcLoc.unneeded,27684 LazySrcLoc.unneeded,
...@@ -27846,7 +27846,7 @@ fn safetyPanicUnwrapError(sema: *Sema, block: *Block, src: LazySrcLoc, err: Air....@@ -27846,7 +27846,7 @@ fn safetyPanicUnwrapError(sema: *Sema, block: *Block, src: LazySrcLoc, err: Air.
27846 if (!zcu.backendSupportsFeature(.panic_fn)) {27846 if (!zcu.backendSupportsFeature(.panic_fn)) {
27847 _ = try block.addNoOp(.trap);27847 _ = try block.addNoOp(.trap);
27848 } else {27848 } else {
27849 const panic_fn = try pt.getBuiltinInnerType("Panic", "unwrapError");27849 const panic_fn = try getBuiltinInnerAsInst(sema, block, src, "Panic", "unwrapError");
27850 const err_return_trace = try sema.getErrorReturnTrace(block);27850 const err_return_trace = try sema.getErrorReturnTrace(block);
27851 const args: [2]Air.Inst.Ref = .{ err_return_trace, err };27851 const args: [2]Air.Inst.Ref = .{ err_return_trace, err };
27852 try sema.callBuiltin(block, src, panic_fn, .auto, &args, .@"safety check");27852 try sema.callBuiltin(block, src, panic_fn, .auto, &args, .@"safety check");
...@@ -27950,7 +27950,7 @@ fn addSafetyCheckCall(...@@ -27950,7 +27950,7 @@ fn addSafetyCheckCall(
27950 if (!zcu.backendSupportsFeature(.panic_fn)) {27950 if (!zcu.backendSupportsFeature(.panic_fn)) {
27951 _ = try fail_block.addNoOp(.trap);27951 _ = try fail_block.addNoOp(.trap);
27952 } else {27952 } else {
27953 const panic_fn = try pt.getBuiltinInnerType("Panic", func_name);27953 const panic_fn = try getBuiltinInnerAsInst(sema, &fail_block, src, "Panic", func_name);
27954 try sema.callBuiltin(&fail_block, src, panic_fn, .auto, args, .@"safety check");27954 try sema.callBuiltin(&fail_block, src, panic_fn, .auto, args, .@"safety check");
27955 }27955 }
2795627956
...@@ -35604,7 +35604,7 @@ pub fn resolveFnTypes(sema: *Sema, fn_ty: Type) CompileError!void {...@@ -35604,7 +35604,7 @@ pub fn resolveFnTypes(sema: *Sema, fn_ty: Type) CompileError!void {
35604 Type.fromInterned(fn_ty_info.return_type).isError(zcu))35604 Type.fromInterned(fn_ty_info.return_type).isError(zcu))
35605 {35605 {
35606 // Ensure the type exists so that backends can assume that.35606 // Ensure the type exists so that backends can assume that.
35607 _ = try pt.getBuiltinType("StackTrace");35607 _ = try sema.getBuiltinType("StackTrace");
35608 }35608 }
3560935609
35610 for (0..fn_ty_info.param_types.len) |i| {35610 for (0..fn_ty_info.param_types.len) |i| {
...@@ -37650,7 +37650,7 @@ pub fn analyzeAsAddressSpace(...@@ -37650,7 +37650,7 @@ pub fn analyzeAsAddressSpace(
37650) !std.builtin.AddressSpace {37650) !std.builtin.AddressSpace {
37651 const pt = sema.pt;37651 const pt = sema.pt;
37652 const zcu = pt.zcu;37652 const zcu = pt.zcu;
37653 const addrspace_ty = try pt.getBuiltinType("AddressSpace");37653 const addrspace_ty = try sema.getBuiltinType("AddressSpace");
37654 const coerced = try sema.coerce(block, addrspace_ty, air_ref, src);37654 const coerced = try sema.coerce(block, addrspace_ty, air_ref, src);
37655 const addrspace_val = try sema.resolveConstDefinedValue(block, src, coerced, .{37655 const addrspace_val = try sema.resolveConstDefinedValue(block, src, coerced, .{
37656 .needed_comptime_reason = "address space must be comptime-known",37656 .needed_comptime_reason = "address space must be comptime-known",
...@@ -38908,6 +38908,19 @@ const ComptimeLoadResult = @import("Sema/comptime_ptr_access.zig").ComptimeLoadR...@@ -38908,6 +38908,19 @@ const ComptimeLoadResult = @import("Sema/comptime_ptr_access.zig").ComptimeLoadR
38908const storeComptimePtr = @import("Sema/comptime_ptr_access.zig").storeComptimePtr;38908const storeComptimePtr = @import("Sema/comptime_ptr_access.zig").storeComptimePtr;
38909const ComptimeStoreResult = @import("Sema/comptime_ptr_access.zig").ComptimeStoreResult;38909const ComptimeStoreResult = @import("Sema/comptime_ptr_access.zig").ComptimeStoreResult;
3891038910
38911/// Convenience function that looks 2 levels deep into `std.builtin`.
38912fn getBuiltinInnerAsInst(
38913 sema: *Sema,
38914 block: *Block,
38915 src: LazySrcLoc,
38916 outer_name: []const u8,
38917 inner_name: []const u8,
38918) !Air.Inst.Ref {
38919 const outer_ty = try sema.getBuiltinType(outer_name);
38920 const inner_val = try getInnerValue(sema, block, src, outer_ty, inner_name);
38921 return Air.internedToRef(inner_val.toIntern());
38922}
38923
38911/// Convenience function that looks 2 levels deep into `std.builtin`.38924/// Convenience function that looks 2 levels deep into `std.builtin`.
38912fn getBuiltinInnerType(38925fn getBuiltinInnerType(
38913 sema: *Sema,38926 sema: *Sema,
...@@ -38916,7 +38929,7 @@ fn getBuiltinInnerType(...@@ -38916,7 +38929,7 @@ fn getBuiltinInnerType(
38916 outer_name: []const u8,38929 outer_name: []const u8,
38917 inner_name: []const u8,38930 inner_name: []const u8,
38918) !Type {38931) !Type {
38919 const outer_ty = try sema.pt.getBuiltinType(outer_name);38932 const outer_ty = try sema.getBuiltinType(outer_name);
38920 return getInnerType(sema, block, src, outer_ty, inner_name);38933 return getInnerType(sema, block, src, outer_ty, inner_name);
38921}38934}
3892238935
...@@ -38927,6 +38940,17 @@ fn getInnerType(...@@ -38927,6 +38940,17 @@ fn getInnerType(
38927 outer_ty: Type,38940 outer_ty: Type,
38928 inner_name: []const u8,38941 inner_name: []const u8,
38929) !Type {38942) !Type {
38943 const inner_val = try getInnerValue(sema, block, src, outer_ty, inner_name);
38944 return inner_val.toType();
38945}
38946
38947fn getInnerValue(
38948 sema: *Sema,
38949 block: *Block,
38950 src: LazySrcLoc,
38951 outer_ty: Type,
38952 inner_name: []const u8,
38953) !Value {
38930 const pt = sema.pt;38954 const pt = sema.pt;
38931 const zcu = pt.zcu;38955 const zcu = pt.zcu;
38932 const ip = &zcu.intern_pool;38956 const ip = &zcu.intern_pool;
...@@ -38938,5 +38962,22 @@ fn getInnerType(...@@ -38938,5 +38962,22 @@ fn getInnerType(
38938 try ip.getOrPutString(gpa, pt.tid, inner_name, .no_embedded_nulls),38962 try ip.getOrPutString(gpa, pt.tid, inner_name, .no_embedded_nulls),
38939 ) orelse return sema.fail(block, src, "std.builtin missing {s}", .{inner_name});38963 ) orelse return sema.fail(block, src, "std.builtin missing {s}", .{inner_name});
38940 try sema.ensureNavResolved(src, nav);38964 try sema.ensureNavResolved(src, nav);
38941 return Type.fromInterned(ip.getNav(nav).status.resolved.val);38965 return Value.fromInterned(ip.getNav(nav).status.resolved.val);
38966}
38967
38968fn getBuiltin(sema: *Sema, name: []const u8) SemaError!Air.Inst.Ref {
38969 const pt = sema.pt;
38970 const zcu = pt.zcu;
38971 const ip = &zcu.intern_pool;
38972 const nav = try pt.getBuiltinNav(name);
38973 try pt.ensureCauAnalyzed(ip.getNav(nav).analysis_owner.unwrap().?);
38974 return Air.internedToRef(ip.getNav(nav).status.resolved.val);
38975}
38976
38977fn getBuiltinType(sema: *Sema, name: []const u8) SemaError!Type {
38978 const pt = sema.pt;
38979 const ty_inst = try sema.getBuiltin(name);
38980 const ty = Type.fromInterned(ty_inst.toInterned() orelse @panic("std.builtin is corrupt"));
38981 try ty.resolveFully(pt);
38982 return ty;
38942}38983}
src/Zcu/PerThread.zig-15
...@@ -3075,14 +3075,6 @@ pub fn structPackedFieldBitOffset(...@@ -3075,14 +3075,6 @@ pub fn structPackedFieldBitOffset(
3075 unreachable; // index out of bounds3075 unreachable; // index out of bounds
3076}3076}
30773077
3078pub fn getBuiltin(pt: Zcu.PerThread, name: []const u8) Allocator.Error!Air.Inst.Ref {
3079 const zcu = pt.zcu;
3080 const ip = &zcu.intern_pool;
3081 const nav = try pt.getBuiltinNav(name);
3082 pt.ensureCauAnalyzed(ip.getNav(nav).analysis_owner.unwrap().?) catch @panic("std.builtin is corrupt");
3083 return Air.internedToRef(ip.getNav(nav).status.resolved.val);
3084}
3085
3086pub fn getBuiltinNav(pt: Zcu.PerThread, name: []const u8) Allocator.Error!InternPool.Nav.Index {3078pub fn getBuiltinNav(pt: Zcu.PerThread, name: []const u8) Allocator.Error!InternPool.Nav.Index {
3087 const zcu = pt.zcu;3079 const zcu = pt.zcu;
3088 const gpa = zcu.gpa;3080 const gpa = zcu.gpa;
...@@ -3100,13 +3092,6 @@ pub fn getBuiltinNav(pt: Zcu.PerThread, name: []const u8) Allocator.Error!Intern...@@ -3100,13 +3092,6 @@ pub fn getBuiltinNav(pt: Zcu.PerThread, name: []const u8) Allocator.Error!Intern
3100 return builtin_namespace.pub_decls.getKeyAdapted(name_str, Zcu.Namespace.NameAdapter{ .zcu = zcu }) orelse @panic("lib/std/builtin.zig is corrupt");3092 return builtin_namespace.pub_decls.getKeyAdapted(name_str, Zcu.Namespace.NameAdapter{ .zcu = zcu }) orelse @panic("lib/std/builtin.zig is corrupt");
3101}3093}
31023094
3103pub fn getBuiltinType(pt: Zcu.PerThread, name: []const u8) Allocator.Error!Type {
3104 const ty_inst = try pt.getBuiltin(name);
3105 const ty = Type.fromInterned(ty_inst.toInterned() orelse @panic("std.builtin is corrupt"));
3106 ty.resolveFully(pt) catch @panic("std.builtin is corrupt");
3107 return ty;
3108}
3109
3110pub fn navPtrType(pt: Zcu.PerThread, nav_index: InternPool.Nav.Index) Allocator.Error!Type {3095pub fn navPtrType(pt: Zcu.PerThread, nav_index: InternPool.Nav.Index) Allocator.Error!Type {
3111 const zcu = pt.zcu;3096 const zcu = pt.zcu;
3112 const ip = &zcu.intern_pool;3097 const ip = &zcu.intern_pool;
src/codegen/llvm.zig+13-9
...@@ -5675,20 +5675,23 @@ pub const FuncGen = struct {...@@ -5675,20 +5675,23 @@ pub const FuncGen = struct {
5675 }5675 }
5676 }5676 }
56775677
5678 const PanicCauseTag = @typeInfo(std.builtin.PanicCause).@"union".tag_type.?;5678 fn buildSimplePanic(fg: *FuncGen, panic_id: Zcu.PanicId) !void {
5679
5680 fn buildSimplePanic(fg: *FuncGen, panic_cause: InternPool.Index) !void {
5681 const o = fg.ng.object;5679 const o = fg.ng.object;
5682 const zcu = o.pt.zcu;5680 const zcu = o.pt.zcu;
5683 const ip = &zcu.intern_pool;5681 const ip = &zcu.intern_pool;
5684 const cause_ptr = try o.lowerValue(panic_cause);5682 const msg_nav_index = zcu.panic_messages[@intFromEnum(panic_id)].unwrap().?;
5683 const msg_nav = ip.getNav(msg_nav_index);
5684 const msg_len = Type.fromInterned(msg_nav.typeOf(ip)).childType(zcu).arrayLen(zcu);
5685 const msg_ptr = try o.lowerValue(msg_nav.status.resolved.val);
5685 const null_opt_addr_global = try fg.resolveNullOptUsize();5686 const null_opt_addr_global = try fg.resolveNullOptUsize();
5686 const target = zcu.getTarget();5687 const target = zcu.getTarget();
5688 const llvm_usize = try o.lowerType(Type.usize);
5687 // example:5689 // example:
5688 // call fastcc void @test2.panic(5690 // call fastcc void @test2.panic(
5689 // ptr @foo, ; panic_cause5691 // ptr @builtin.panic_messages.integer_overflow__anon_987, ; msg.ptr
5690 // ptr null, ; stack trace5692 // i64 16, ; msg.len
5691 // ptr @2, ; addr (null ?usize)5693 // ptr null, ; stack trace
5694 // ptr @2, ; addr (null ?usize)
5692 // )5695 // )
5693 const panic_func = zcu.funcInfo(zcu.panic_func_index);5696 const panic_func = zcu.funcInfo(zcu.panic_func_index);
5694 const panic_nav = ip.getNav(panic_func.owner_nav);5697 const panic_nav = ip.getNav(panic_func.owner_nav);
...@@ -5702,7 +5705,8 @@ pub const FuncGen = struct {...@@ -5702,7 +5705,8 @@ pub const FuncGen = struct {
5702 panic_global.typeOf(&o.builder),5705 panic_global.typeOf(&o.builder),
5703 panic_global.toValue(&o.builder),5706 panic_global.toValue(&o.builder),
5704 &.{5707 &.{
5705 cause_ptr.toValue(),5708 msg_ptr.toValue(),
5709 try o.builder.intValue(llvm_usize, msg_len),
5706 try o.builder.nullValue(.ptr),5710 try o.builder.nullValue(.ptr),
5707 null_opt_addr_global.toValue(),5711 null_opt_addr_global.toValue(),
5708 },5712 },
...@@ -8331,7 +8335,7 @@ pub const FuncGen = struct {...@@ -8331,7 +8335,7 @@ pub const FuncGen = struct {
8331 _ = try fg.wip.brCond(overflow_bit, fail_block, ok_block, .none);8335 _ = try fg.wip.brCond(overflow_bit, fail_block, ok_block, .none);
83328336
8333 fg.wip.cursor = .{ .block = fail_block };8337 fg.wip.cursor = .{ .block = fail_block };
8334 try fg.buildSimplePanic(zcu.panic_cause_integer_overflow);8338 try fg.buildSimplePanic(.integer_overflow);
83358339
8336 fg.wip.cursor = .{ .block = ok_block };8340 fg.wip.cursor = .{ .block = ok_block };
8337 return fg.wip.extractValue(results, &.{0}, "");8341 return fg.wip.extractValue(results, &.{0}, "");