ziglang / zig

General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
https://ziglang.org
MIT License
34.37k stars 2.51k forks source link

stage2: crash when trying to do a runtime break out of a comptime loop #13428

Open davidgm94 opened 1 year ago

davidgm94 commented 1 year ago

Zig Version

0.11.0-dev.38+b40fc7018

Steps to Reproduce and Observed Behavior

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 

Expected Behavior

Compile error

Vexu commented 1 year ago

Reduction:

test {
    var a = true;
    inline for ("ab") |_| {
        inline for ("cd") |_| {
            if (a) break;
        }
    }
}