Zig Version
0.17.0-dev.836+e357134f0
Steps to Reproduce, Observed Behavior, and Expected Behavior
Steps to Reproduce:
Compile the following code:
const std = @import("std");
const gpu = std.gpu;
const Chunk = extern struct {
_: f32,
};
extern const chunks: [*]Chunk addrspace(.storage_buffer);
export fn main() callconv(.spirv_vertex) void {
_ = chunks[1];
}
With any SPIR-V target:
zig build-exe src/vert.zig -target spirv32-vulkan
Observed Behavior:
Compiler crash context:
Analyzing 'src/vert.zig'
%23 = dbg_stmt(2, 5)
> %24 = decl_ref("chunks") token_offset:11:9 to :11:15
%25 = dbg_stmt(2, 15)
%26 = elem_ptr_load(%24, @one) node_offset:11:9 to :11:18
%27 = ensure_result_non_error(%26) node_offset:11:9 to :11:18
%28 = restore_err_ret_index_unconditional(.none) node_offset:10:1 to :10:10
%29 = ret_implicit(@void_value) token_offset:12:1 to :12:1
For full context, use the command
../ziglang/zig/zig-out/bin/zig ast-check -t src/vert.zig
thread 504265 panic: reached unreachable code
error return context:
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:2027:21: 0x5da941c in ensureNavTypeUpToDate (main.zig)
└─ chunks
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:30241:13: 0x42265b8 in ensureNavResolved (main.zig)
const payload_ty = ty.optionalChild(zcu);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:30273:5: 0x486079d in analyzeNavRefInner (main.zig)
return .true;
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:30262:5: 0x4860442 in analyzeNavRef (main.zig)
const zcu = pt.zcu;
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:6056:5: 0x4748642 in zirDeclRef (main.zig)
const err_return_trace = try block.addTy(.err_return_trace, ptr_stack_trace_ty);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1201:46: 0x41d191f in analyzeBodyInner (main.zig)
.elem_val => try sema.zirElemVal(block, inst),
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1076:21: 0x4232067 in analyzeInlineBody (main.zig)
switch (break_inst.tag) {
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1918:32: 0x41e26b7 in analyzeBodyInner (main.zig)
const inline_body = sema.code.bodySlice(extra.end, extra.data.body_len);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1833:37: 0x41e12d3 in analyzeBodyInner (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1076:21: 0x4232067 in analyzeInlineBody (main.zig)
switch (break_inst.tag) {
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1105:13: 0x482d5f3 in resolveInlineBody (main.zig)
/// This function is the main loop of `Sema`. It analyzes a single body of ZIR instructions.
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:5421:9: 0x423eba5 in resolveBlockBody (main.zig)
assert(!child_block.isComptime()); // Should already got a compile error in the condbr condition.
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:12057:5: 0x46bbf3c in resolveSwitchProng (main.zig)
operand_ty.fmt(pt),
^unks
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:11936:5: 0x46b96c6 in resolveSwitchBlock (main.zig)
kind: SwitchProngKind,
^rt.chunks
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:10325:29: 0x464e239 in analyzeSwitchBlock (main.zig)
else
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:10175:23: 0x464c156 in zirSwitchBlock (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1261:46: 0x41d4659 in analyzeBodyInner (main.zig)
.typeof => try sema.zirTypeof(block, inst),
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1076:21: 0x4232067 in analyzeInlineBody (main.zig)
switch (break_inst.tag) {
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1918:32: 0x41e26b7 in analyzeBodyInner (main.zig)
const inline_body = sema.code.bodySlice(extra.end, extra.data.body_len);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1833:37: 0x41e12d3 in analyzeBodyInner (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1076:21: 0x4232067 in analyzeInlineBody (main.zig)
switch (break_inst.tag) {
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1918:32: 0x41e26b7 in analyzeBodyInner (main.zig)
const inline_body = sema.code.bodySlice(extra.end, extra.data.body_len);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1833:37: 0x41e12d3 in analyzeBodyInner (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1076:21: 0x4232067 in analyzeInlineBody (main.zig)
switch (break_inst.tag) {
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1918:32: 0x41e26b7 in analyzeBodyInner (main.zig)
const inline_body = sema.code.bodySlice(extra.end, extra.data.body_len);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1833:37: 0x41e12d3 in analyzeBodyInner (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1076:21: 0x4232067 in analyzeInlineBody (main.zig)
switch (break_inst.tag) {
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1918:32: 0x41e26b7 in analyzeBodyInner (main.zig)
const inline_body = sema.code.bodySlice(extra.end, extra.data.body_len);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1833:37: 0x41e12d3 in analyzeBodyInner (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1076:21: 0x4232067 in analyzeInlineBody (main.zig)
switch (break_inst.tag) {
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1918:32: 0x41e26b7 in analyzeBodyInner (main.zig)
const inline_body = sema.code.bodySlice(extra.end, extra.data.body_len);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1833:37: 0x41e12d3 in analyzeBodyInner (main.zig)
^
(13 additional stack frames skipped due to buffer size limitations...)
stack trace:
/home/sacha/.zvm/0.16.0/lib/std/debug.zig:420:14: 0x174a109 in assert (std.zig)
if (!ok) unreachable; // assertion failure
^n
/home/sacha/Documents/code/ziglang/zig/src/Type.zig:698:11: 0x236b341 in fromInterned (main.zig)
assert(i != .none);
^
/home/sacha/Documents/code/ziglang/zig/src/codegen/spirv/CodeGen.zig:1507:53: 0x2e408d8 in resolveType (main.zig)
const field_ty: Type = .fromInterned(struct_type.field_types.get(ip)[field_index]);
^
/home/sacha/Documents/code/ziglang/zig/src/codegen/spirv/CodeGen.zig:1446:51: 0x2e3f705 in resolveType (main.zig)
const child_ty_id = try cg.resolveType(child_ty, .indirect);
^
/home/sacha/Documents/code/ziglang/zig/src/codegen/spirv/CodeGen.zig:262:45: 0x2c8c17e in genNav (main.zig)
const ty_id = try cg.resolveType(ty, .indirect);
^
/home/sacha/Documents/code/ziglang/zig/src/link/SpirV.zig:142:21: 0x2c7fe1e in generate (main.zig)
linker.cg.genNav(do_codegen) catch |err| switch (err) {
^
/home/sacha/Documents/code/ziglang/zig/src/link/SpirV.zig:174:24: 0x2c803fa in updateNav (main.zig)
try linker.generate(pt, nav, undefined, undefined, false);
^
/home/sacha/Documents/code/ziglang/zig/src/link.zig:790:81: 0x2c7f572 in updateNav (main.zig)
}
^
/home/sacha/Documents/code/ziglang/zig/src/link.zig:1543:29: 0x279deee in doZcuTask (main.zig)
const diags = &comp.link_diags;
^
/home/sacha/Documents/code/ziglang/zig/src/link/Queue.zig:121:19: 0x279a644 in enqueueZcu (main.zig)
link.doZcuTask(comp, tid, task);
^
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:4396:39: 0x279a202 in getExtern (main.zig)
}
^
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:1816:54: 0x5d9af70 in analyzeNavVal (main.zig)
.is_threadlocal = zir_decl.is_threadlocal,
^
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:1621:80: 0x5d96049 in ensureNavValUpToDate (main.zig)
false,
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:30243:49: 0x4226611 in ensureNavResolved (main.zig)
return true; // e.g. `?noreturn`
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:30285:47: 0x4860950 in analyzeNavRefInner (main.zig)
/// union if our implementation is to be legal, and likewise for coercing `@as(E, undefined)` to
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:30262:35: 0x4860419 in analyzeNavRef (main.zig)
const zcu = pt.zcu;
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:6056:30: 0x4748619 in zirDeclRef (main.zig)
const err_return_trace = try block.addTy(.err_return_trace, ptr_stack_trace_ty);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1201:65: 0x41d18b8 in analyzeBodyInner (main.zig)
.elem_val => try sema.zirElemVal(block, inst),
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1054:26: 0x4177c41 in analyzeFnBody (main.zig)
};
^
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:3454:23: 0x5cf6a9a in analyzeFuncBodyInner (main.zig)
error.ComptimeReturn => unreachable,
^
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:2287:42: 0x48fb705 in analyzeFuncBody (main.zig)
var air_owned = true;
^
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:2228:66: 0x400937e in ensureFuncBodyUpToDate (main.zig)
.{ prev_failed or result.ies_outdated, false }
^
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:345:54: 0x4005524 in update (main.zig)
.func => |func| pt.ensureFuncBodyUpToDate(func, null),
^
/home/sacha/Documents/code/ziglang/zig/src/Compilation.zig:4522:22: 0x3b9831a in performAllTheWork (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/Compilation.zig:3091:31: 0x2469533 in update (main.zig)
if (comp.zcu) |zcu| {
^
/home/sacha/Documents/code/ziglang/zig/src/main.zig:4698:20: 0x2359dbb in updateModule (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/main.zig:3790:21: 0x1a221ef in buildOutputType (main.zig)
if (switch (arg_mode) {
^
/home/sacha/Documents/code/ziglang/zig/src/main.zig:283:31: 0x1a6ce57 in mainArgs (main.zig)
dev.check(.build_lib_command);
^
/home/sacha/Documents/code/ziglang/zig/src/main.zig:236:20: 0x19c9cf1 in main (main.zig)
^
/home/sacha/.zvm/0.16.0/lib/std/start.zig:699:88: 0x19c8830 in callMain (std.zig)
if (fn_info.params[0].type.? == std.process.Init.Minimal) return wrapMain(root.main(.{
^
/home/sacha/.zvm/0.16.0/lib/std/start.zig:190:5: 0x19c8201 in _start (std.zig)
asm volatile (switch (native_arch) {
^
Aborted (core dumped)
Expected Behavior:
The compiler should not crash
### Zig Version
0.17.0-dev.836+e357134f0
### Steps to Reproduce, Observed Behavior, and Expected Behavior
# Steps to Reproduce:
Compile the following code:
```
const std = @import("std");
const gpu = std.gpu;
const Chunk = extern struct {
_: f32,
};
extern const chunks: [*]Chunk addrspace(.storage_buffer);
export fn main() callconv(.spirv_vertex) void {
_ = chunks[1];
}
```
With any SPIR-V target:
```
zig build-exe src/vert.zig -target spirv32-vulkan
```
# Observed Behavior:
```
Compiler crash context:
Analyzing 'src/vert.zig'
%23 = dbg_stmt(2, 5)
> %24 = decl_ref("chunks") token_offset:11:9 to :11:15
%25 = dbg_stmt(2, 15)
%26 = elem_ptr_load(%24, @one) node_offset:11:9 to :11:18
%27 = ensure_result_non_error(%26) node_offset:11:9 to :11:18
%28 = restore_err_ret_index_unconditional(.none) node_offset:10:1 to :10:10
%29 = ret_implicit(@void_value) token_offset:12:1 to :12:1
For full context, use the command
../ziglang/zig/zig-out/bin/zig ast-check -t src/vert.zig
thread 504265 panic: reached unreachable code
error return context:
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:2027:21: 0x5da941c in ensureNavTypeUpToDate (main.zig)
└─ chunks
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:30241:13: 0x42265b8 in ensureNavResolved (main.zig)
const payload_ty = ty.optionalChild(zcu);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:30273:5: 0x486079d in analyzeNavRefInner (main.zig)
return .true;
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:30262:5: 0x4860442 in analyzeNavRef (main.zig)
const zcu = pt.zcu;
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:6056:5: 0x4748642 in zirDeclRef (main.zig)
const err_return_trace = try block.addTy(.err_return_trace, ptr_stack_trace_ty);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1201:46: 0x41d191f in analyzeBodyInner (main.zig)
.elem_val => try sema.zirElemVal(block, inst),
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1076:21: 0x4232067 in analyzeInlineBody (main.zig)
switch (break_inst.tag) {
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1918:32: 0x41e26b7 in analyzeBodyInner (main.zig)
const inline_body = sema.code.bodySlice(extra.end, extra.data.body_len);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1833:37: 0x41e12d3 in analyzeBodyInner (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1076:21: 0x4232067 in analyzeInlineBody (main.zig)
switch (break_inst.tag) {
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1105:13: 0x482d5f3 in resolveInlineBody (main.zig)
/// This function is the main loop of `Sema`. It analyzes a single body of ZIR instructions.
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:5421:9: 0x423eba5 in resolveBlockBody (main.zig)
assert(!child_block.isComptime()); // Should already got a compile error in the condbr condition.
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:12057:5: 0x46bbf3c in resolveSwitchProng (main.zig)
operand_ty.fmt(pt),
^unks
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:11936:5: 0x46b96c6 in resolveSwitchBlock (main.zig)
kind: SwitchProngKind,
^rt.chunks
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:10325:29: 0x464e239 in analyzeSwitchBlock (main.zig)
else
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:10175:23: 0x464c156 in zirSwitchBlock (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1261:46: 0x41d4659 in analyzeBodyInner (main.zig)
.typeof => try sema.zirTypeof(block, inst),
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1076:21: 0x4232067 in analyzeInlineBody (main.zig)
switch (break_inst.tag) {
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1918:32: 0x41e26b7 in analyzeBodyInner (main.zig)
const inline_body = sema.code.bodySlice(extra.end, extra.data.body_len);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1833:37: 0x41e12d3 in analyzeBodyInner (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1076:21: 0x4232067 in analyzeInlineBody (main.zig)
switch (break_inst.tag) {
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1918:32: 0x41e26b7 in analyzeBodyInner (main.zig)
const inline_body = sema.code.bodySlice(extra.end, extra.data.body_len);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1833:37: 0x41e12d3 in analyzeBodyInner (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1076:21: 0x4232067 in analyzeInlineBody (main.zig)
switch (break_inst.tag) {
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1918:32: 0x41e26b7 in analyzeBodyInner (main.zig)
const inline_body = sema.code.bodySlice(extra.end, extra.data.body_len);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1833:37: 0x41e12d3 in analyzeBodyInner (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1076:21: 0x4232067 in analyzeInlineBody (main.zig)
switch (break_inst.tag) {
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1918:32: 0x41e26b7 in analyzeBodyInner (main.zig)
const inline_body = sema.code.bodySlice(extra.end, extra.data.body_len);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1833:37: 0x41e12d3 in analyzeBodyInner (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1076:21: 0x4232067 in analyzeInlineBody (main.zig)
switch (break_inst.tag) {
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1918:32: 0x41e26b7 in analyzeBodyInner (main.zig)
const inline_body = sema.code.bodySlice(extra.end, extra.data.body_len);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1833:37: 0x41e12d3 in analyzeBodyInner (main.zig)
^
(13 additional stack frames skipped due to buffer size limitations...)
stack trace:
/home/sacha/.zvm/0.16.0/lib/std/debug.zig:420:14: 0x174a109 in assert (std.zig)
if (!ok) unreachable; // assertion failure
^n
/home/sacha/Documents/code/ziglang/zig/src/Type.zig:698:11: 0x236b341 in fromInterned (main.zig)
assert(i != .none);
^
/home/sacha/Documents/code/ziglang/zig/src/codegen/spirv/CodeGen.zig:1507:53: 0x2e408d8 in resolveType (main.zig)
const field_ty: Type = .fromInterned(struct_type.field_types.get(ip)[field_index]);
^
/home/sacha/Documents/code/ziglang/zig/src/codegen/spirv/CodeGen.zig:1446:51: 0x2e3f705 in resolveType (main.zig)
const child_ty_id = try cg.resolveType(child_ty, .indirect);
^
/home/sacha/Documents/code/ziglang/zig/src/codegen/spirv/CodeGen.zig:262:45: 0x2c8c17e in genNav (main.zig)
const ty_id = try cg.resolveType(ty, .indirect);
^
/home/sacha/Documents/code/ziglang/zig/src/link/SpirV.zig:142:21: 0x2c7fe1e in generate (main.zig)
linker.cg.genNav(do_codegen) catch |err| switch (err) {
^
/home/sacha/Documents/code/ziglang/zig/src/link/SpirV.zig:174:24: 0x2c803fa in updateNav (main.zig)
try linker.generate(pt, nav, undefined, undefined, false);
^
/home/sacha/Documents/code/ziglang/zig/src/link.zig:790:81: 0x2c7f572 in updateNav (main.zig)
}
^
/home/sacha/Documents/code/ziglang/zig/src/link.zig:1543:29: 0x279deee in doZcuTask (main.zig)
const diags = &comp.link_diags;
^
/home/sacha/Documents/code/ziglang/zig/src/link/Queue.zig:121:19: 0x279a644 in enqueueZcu (main.zig)
link.doZcuTask(comp, tid, task);
^
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:4396:39: 0x279a202 in getExtern (main.zig)
}
^
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:1816:54: 0x5d9af70 in analyzeNavVal (main.zig)
.is_threadlocal = zir_decl.is_threadlocal,
^
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:1621:80: 0x5d96049 in ensureNavValUpToDate (main.zig)
false,
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:30243:49: 0x4226611 in ensureNavResolved (main.zig)
return true; // e.g. `?noreturn`
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:30285:47: 0x4860950 in analyzeNavRefInner (main.zig)
/// union if our implementation is to be legal, and likewise for coercing `@as(E, undefined)` to
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:30262:35: 0x4860419 in analyzeNavRef (main.zig)
const zcu = pt.zcu;
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:6056:30: 0x4748619 in zirDeclRef (main.zig)
const err_return_trace = try block.addTy(.err_return_trace, ptr_stack_trace_ty);
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1201:65: 0x41d18b8 in analyzeBodyInner (main.zig)
.elem_val => try sema.zirElemVal(block, inst),
^
/home/sacha/Documents/code/ziglang/zig/src/Sema.zig:1054:26: 0x4177c41 in analyzeFnBody (main.zig)
};
^
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:3454:23: 0x5cf6a9a in analyzeFuncBodyInner (main.zig)
error.ComptimeReturn => unreachable,
^
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:2287:42: 0x48fb705 in analyzeFuncBody (main.zig)
var air_owned = true;
^
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:2228:66: 0x400937e in ensureFuncBodyUpToDate (main.zig)
.{ prev_failed or result.ies_outdated, false }
^
/home/sacha/Documents/code/ziglang/zig/src/Zcu/PerThread.zig:345:54: 0x4005524 in update (main.zig)
.func => |func| pt.ensureFuncBodyUpToDate(func, null),
^
/home/sacha/Documents/code/ziglang/zig/src/Compilation.zig:4522:22: 0x3b9831a in performAllTheWork (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/Compilation.zig:3091:31: 0x2469533 in update (main.zig)
if (comp.zcu) |zcu| {
^
/home/sacha/Documents/code/ziglang/zig/src/main.zig:4698:20: 0x2359dbb in updateModule (main.zig)
^
/home/sacha/Documents/code/ziglang/zig/src/main.zig:3790:21: 0x1a221ef in buildOutputType (main.zig)
if (switch (arg_mode) {
^
/home/sacha/Documents/code/ziglang/zig/src/main.zig:283:31: 0x1a6ce57 in mainArgs (main.zig)
dev.check(.build_lib_command);
^
/home/sacha/Documents/code/ziglang/zig/src/main.zig:236:20: 0x19c9cf1 in main (main.zig)
^
/home/sacha/.zvm/0.16.0/lib/std/start.zig:699:88: 0x19c8830 in callMain (std.zig)
if (fn_info.params[0].type.? == std.process.Init.Minimal) return wrapMain(root.main(.{
^
/home/sacha/.zvm/0.16.0/lib/std/start.zig:190:5: 0x19c8201 in _start (std.zig)
asm volatile (switch (native_arch) {
^
Aborted (core dumped)
```
# Expected Behavior:
The compiler should not crash