Open davidgm94 opened 1 year ago
0.11.0-dev.38+b40fc7018
git clone https://github.com/davidgm94/RNU.git cd RNU git checkout zig-comptime-runtime-break zig build
This happened around this code when I introduced the break:
inline for (arch.reverse_valid_page_sizes[reverse_page_index + 1 ..]) |page_size| { log.debug("Trying Misalignment page size: {}", .{page_size}); if (common.is_aligned(asked_virtual_address.value, page_size)) { try map_generic(virtual_address_space, asked_physical_address, asked_virtual_address, misalignment, page_size, flags, physical_allocator); break; } }
thread 25366 panic: attempt to use null value /home/david/dev/official-zig/src/Sema.zig:16296:71: 0x55c47ae22f49 in Sema.addRuntimeBreak (zig2) const labeled_block = sema.post_hoc_blocks.get(new_block_inst).?; ^ /home/david/dev/official-zig/src/Sema.zig:689:37: 0x55c47b12c459 in Sema.analyzeBodyRuntimeBreak (zig2) try sema.addRuntimeBreak(block, .{ ^ /home/david/dev/official-zig/src/Sema.zig:16116:37: 0x55c47ae2a821 in Sema.zirCondbr (zig2) try sema.analyzeBodyRuntimeBreak(&sub_block, then_body); ^ /home/david/dev/official-zig/src/Sema.zig:1461:61: 0x55c47abb08b2 in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break sema.zirCondbr(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:721:45: 0x55c47ab9ab9c in Sema.analyzeBodyBreak (zig2) const break_inst = sema.analyzeBodyInner(block, body) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Sema.zig:1496:62: 0x55c47abaef21 in Sema.analyzeBodyInner (zig2) const break_data = (try sema.analyzeBodyBreak(block, inline_body)) orelse ^ /home/david/dev/official-zig/src/Sema.zig:721:45: 0x55c47ab9ab9c in Sema.analyzeBodyBreak (zig2) const break_inst = sema.analyzeBodyInner(block, body) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Sema.zig:1408:55: 0x55c47abae1ab in Sema.analyzeBodyInner (zig2) break :b try sema.analyzeBodyBreak(&child_block, inline_body); ^ /home/david/dev/official-zig/src/Sema.zig:721:45: 0x55c47ab9ab9c in Sema.analyzeBodyBreak (zig2) const break_inst = sema.analyzeBodyInner(block, body) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Sema.zig:1408:55: 0x55c47abae1ab in Sema.analyzeBodyInner (zig2) break :b try sema.analyzeBodyBreak(&child_block, inline_body); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:685:30: 0x55c47b12c2fd in Sema.analyzeBodyRuntimeBreak (zig2) _ = sema.analyzeBodyInner(block, body) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Sema.zig:16116:37: 0x55c47ae2a821 in Sema.zirCondbr (zig2) try sema.analyzeBodyRuntimeBreak(&sub_block, then_body); ^ /home/david/dev/official-zig/src/Sema.zig:1461:61: 0x55c47abb08b2 in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break sema.zirCondbr(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:685:30: 0x55c47b12c2fd in Sema.analyzeBodyRuntimeBreak (zig2) _ = sema.analyzeBodyInner(block, body) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Sema.zig:16116:37: 0x55c47ae2a821 in Sema.zirCondbr (zig2) try sema.analyzeBodyRuntimeBreak(&sub_block, then_body); ^ /home/david/dev/official-zig/src/Sema.zig:1461:61: 0x55c47abb08b2 in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break sema.zirCondbr(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:16103:37: 0x55c47ae2a73c in Sema.zirCondbr (zig2) return sema.analyzeBodyInner(parent_block, body); ^ /home/david/dev/official-zig/src/Sema.zig:1461:61: 0x55c47abb08b2 in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break sema.zirCondbr(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:16103:37: 0x55c47ae2a73c in Sema.zirCondbr (zig2) return sema.analyzeBodyInner(parent_block, body); ^ /home/david/dev/official-zig/src/Sema.zig:1461:61: 0x55c47abb08b2 in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break sema.zirCondbr(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:685:30: 0x55c47b12c2fd in Sema.analyzeBodyRuntimeBreak (zig2) _ = sema.analyzeBodyInner(block, body) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Sema.zig:16116:37: 0x55c47ae2a821 in Sema.zirCondbr (zig2) try sema.analyzeBodyRuntimeBreak(&sub_block, then_body); ^ /home/david/dev/official-zig/src/Sema.zig:1461:61: 0x55c47abb08b2 in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break sema.zirCondbr(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:721:45: 0x55c47ab9ab9c in Sema.analyzeBodyBreak (zig2) const break_inst = sema.analyzeBodyInner(block, body) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Sema.zig:1496:62: 0x55c47abaef21 in Sema.analyzeBodyInner (zig2) const break_data = (try sema.analyzeBodyBreak(block, inline_body)) orelse ^ /home/david/dev/official-zig/src/Sema.zig:721:45: 0x55c47ab9ab9c in Sema.analyzeBodyBreak (zig2) const break_inst = sema.analyzeBodyInner(block, body) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Sema.zig:1408:55: 0x55c47abae1ab in Sema.analyzeBodyInner (zig2) break :b try sema.analyzeBodyBreak(&child_block, inline_body); ^ /home/david/dev/official-zig/src/Sema.zig:721:45: 0x55c47ab9ab9c in Sema.analyzeBodyBreak (zig2) const break_inst = sema.analyzeBodyInner(block, body) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Sema.zig:1408:55: 0x55c47abae1ab in Sema.analyzeBodyInner (zig2) break :b try sema.analyzeBodyBreak(&child_block, inline_body); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:685:30: 0x55c47b12c2fd in Sema.analyzeBodyRuntimeBreak (zig2) _ = sema.analyzeBodyInner(block, body) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Sema.zig:16135:41: 0x55c47ae2ac6e in Sema.zirCondbr (zig2) try sema.analyzeBodyRuntimeBreak(&sub_block, else_body); ^ /home/david/dev/official-zig/src/Sema.zig:1461:61: 0x55c47abb08b2 in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break sema.zirCondbr(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:704:30: 0x55c47ab9336a in Sema.analyzeBody (zig2) _ = sema.analyzeBodyInner(block, body) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Module.zig:5656:21: 0x55c47a9a9bde in Module.analyzeFnBody (zig2) sema.analyzeBody(&inner_block, fn_info.body) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Module.zig:4344:40: 0x55c47a989dea in Module.ensureFuncBodyAnalyzed (zig2) var air = mod.analyzeFnBody(func, sema_arena) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Sema.zig:27254:36: 0x55c47b20cea3 in Sema.ensureFuncBodyAnalyzed (zig2) sema.mod.ensureFuncBodyAnalyzed(func) catch |err| { ^ /home/david/dev/official-zig/src/Sema.zig:29430:40: 0x55c47b11917f in Sema.resolveInferredErrorSet (zig2) try sema.ensureFuncBodyAnalyzed(ies.func); ^ /home/david/dev/official-zig/src/Sema.zig:27531:49: 0x55c47ae262b7 in Sema.analyzeIsNonErrComptimeOnly (zig2) try sema.resolveInferredErrorSet(block, src, ies); ^ /home/david/dev/official-zig/src/Sema.zig:27558:56: 0x55c47b118ab5 in Sema.analyzeIsNonErr (zig2) const result = try sema.analyzeIsNonErrComptimeOnly(block, src, operand); ^ /home/david/dev/official-zig/src/Sema.zig:16065:32: 0x55c47ad89280 in Sema.zirIsNonErr (zig2) return sema.analyzeIsNonErr(block, inst_data.src(), operand); ^ /home/david/dev/official-zig/src/Sema.zig:863:66: 0x55c47aba2fe2 in Sema.analyzeBodyInner (zig2) .is_non_err => try sema.zirIsNonErr(block, inst), ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:5149:34: 0x55c47b12aaf6 in Sema.resolveBlockBody (zig2) if (sema.analyzeBodyInner(child_block, body)) |_| { ^ /home/david/dev/official-zig/src/Sema.zig:5132:33: 0x55c47ae2200d in Sema.zirBlock (zig2) return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges); ^ /home/david/dev/official-zig/src/Sema.zig:1353:69: 0x55c47abadd9f in Sema.analyzeBodyInner (zig2) if (!block.is_comptime) break :blk try sema.zirBlock(block, inst); ^ /home/david/dev/official-zig/src/Sema.zig:704:30: 0x55c47ab9336a in Sema.analyzeBody (zig2) _ = sema.analyzeBodyInner(block, body) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Module.zig:5656:21: 0x55c47a9a9bde in Module.analyzeFnBody (zig2) sema.analyzeBody(&inner_block, fn_info.body) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Module.zig:4344:40: 0x55c47a989dea in Module.ensureFuncBodyAnalyzed (zig2) var air = mod.analyzeFnBody(func, sema_arena) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Compilation.zig:3065:42: 0x55c47a83ae33 in Compilation.processOneJob (zig2) module.ensureFuncBodyAnalyzed(func) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/Compilation.zig:3003:30: 0x55c47a8286bf in Compilation.performAllTheWork (zig2) try processOneJob(comp, work_item); ^ /home/david/dev/official-zig/src/Compilation.zig:2331:31: 0x55c47a820d6e in Compilation.update (zig2) try comp.performAllTheWork(main_progress_node); ^ /home/david/dev/official-zig/src/main.zig:3338:20: 0x55c47a7ac2df in main.updateModule (zig2) try comp.update(); ^ /home/david/dev/official-zig/src/main.zig:3009:17: 0x55c47a6f35d6 in main.buildOutputType (zig2) updateModule(gpa, comp, hook) catch |err| switch (err) { ^ /home/david/dev/official-zig/src/main.zig:230:31: 0x55c47a68be5b in main.mainArgs (zig2) return buildOutputType(gpa, arena, args, .{ .build = .Exe }); ^ /home/david/dev/official-zig/src/stage1.zig:56:24: 0x55c47a68b815 in main (zig2) stage2.mainArgs(gpa, arena, args) catch unreachable; ^ zsh: IOT instruction (core dumped) /home/david/dev/official-zig/build/zig2 build-exe -fstrip -OReleaseSafe
Compile error
Reduction:
test { var a = true; inline for ("ab") |_| { inline for ("cd") |_| { if (a) break; } } }
Zig Version
0.11.0-dev.38+b40fc7018
Steps to Reproduce and Observed Behavior
This happened around this code when I introduced the break:
Expected Behavior
Compile error