Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

unreachable .addrspacecast in Builder.zig:castConstAssumeCapacity is reachable #17219

Closed
MasterQ32 opened this issue Sep 21, 2023 · 1 comment
Labels
backend-llvm The LLVM backend outputs an LLVM IR Module. bug Observed behavior contradicts documented or intended behavior

Comments

@MasterQ32
Copy link
Contributor

Zig Version

0.11.0

Steps to Reproduce and Observed Behavior

Observed behaviour: Compiler crash when compiling ZigEmbeddedGroup/microchip-atmega@081683a

Stack trace
thread 310581 panic: reached unreachable code
/home/felix/projects/forks/zig/src/codegen/llvm/Builder.zig:9038:21: 0x13622df in castConstAssumeCapacity (zig)
            else => unreachable,
                    ^
/home/felix/projects/forks/zig/src/codegen/llvm/Builder.zig:8996:40: 0x136249d in convConstAssumeCapacity (zig)
    return self.castConstAssumeCapacity(self.convTag(Constant.Tag, signedness, val_ty, ty), val, ty);
                                       ^
/home/felix/projects/forks/zig/src/codegen/llvm/Builder.zig:6992:40: 0xf79ce4 in convConst (zig)
    return self.convConstAssumeCapacity(signedness, val, ty);
                                       ^
/home/felix/projects/forks/zig/src/codegen/llvm.zig:4450:49: 0xf74619 in lowerDeclRefValue (zig)
        const llvm_val = try o.builder.convConst(
                                                ^
/home/felix/projects/forks/zig/src/codegen/llvm.zig:3858:60: 0xcfbdbc in lowerValue (zig)
                    .decl => |decl| try o.lowerDeclRefValue(ptr_ty, decl),
                                                           ^
/home/felix/projects/forks/zig/src/codegen/llvm.zig:4215:53: 0xd03337 in lowerValue (zig)
                    const payload = try o.lowerValue(un.val);
                                                    ^
/home/felix/projects/forks/zig/src/codegen/llvm.zig:4732:51: 0xcf5979 in genDecl (zig)
                const llvm_init = try o.lowerValue(init_val);
                                                  ^
/home/felix/projects/forks/zig/src/codegen/llvm.zig:1676:19: 0xd084d5 in updateDecl (zig)
        dg.genDecl() catch |err| switch (err) {
                  ^
/home/felix/projects/forks/zig/src/link/Elf.zig:2641:74: 0xd4ab35 in updateDecl (zig)
        if (self.llvm_object) |llvm_object| return llvm_object.updateDecl(mod, decl_index);
                                                                         ^
/home/felix/projects/forks/zig/src/link.zig:579:77: 0xaa0f77 in updateDecl (zig)
            .elf   => return @fieldParentPtr(Elf,   "base", base).updateDecl(module, decl_index),
                                                                            ^
/home/felix/projects/forks/zig/src/Module.zig:6284:29: 0xaa0b71 in linkerUpdateDecl (zig)
    comp.bin_file.updateDecl(mod, decl_index) catch |err| switch (err) {
                            ^
/home/felix/projects/forks/zig/src/Compilation.zig:3181:52: 0xc8fc27 in processOneJob (zig)
                        try module.linkerUpdateDecl(decl_index);
                                                   ^
/home/felix/projects/forks/zig/src/Compilation.zig:3134:30: 0xaeb81d in performAllTheWork (zig)
            try processOneJob(comp, work_item, main_progress_node);
                             ^
/home/felix/projects/forks/zig/src/Compilation.zig:2058:31: 0xae71f5 in update (zig)
    try comp.performAllTheWork(main_progress_node);
                              ^
/home/felix/projects/forks/zig/src/main.zig:4030:24: 0xb19d60 in updateModule (zig)
        try comp.update(main_progress_node);
                       ^
/home/felix/projects/forks/zig/src/main.zig:3451:17: 0xb3f7dd in buildOutputType (zig)
    updateModule(comp) catch |err| switch (err) {
                ^
/home/felix/projects/forks/zig/src/main.zig:270:31: 0x98cee2 in mainArgs (zig)
        return buildOutputType(gpa, arena, args, .{ .build = .Exe });
                              ^
/home/felix/projects/forks/zig/src/main.zig:214:20: 0x989b95 in main (zig)
    return mainArgs(gpa, arena, args);
                   ^
/home/felix/projects/forks/zig/lib/std/start.zig:574:37: 0x9894d2 in main (zig)
            const result = root.main() catch |err| {
GDB log
(gdb) bt
#0  0x00007fffeb0a1adc in __pthread_kill_implementation () from /nix/store/46m4xx889wlhsdj72j38fnlyyvvvvbyb-glibc-2.37-8/lib/libc.so.6
#1  0x00007fffeb052cb6 in raise () from /nix/store/46m4xx889wlhsdj72j38fnlyyvvvvbyb-glibc-2.37-8/lib/libc.so.6
#2  0x00007fffeb03c8ba in abort () from /nix/store/46m4xx889wlhsdj72j38fnlyyvvvvbyb-glibc-2.37-8/lib/libc.so.6
#3  0x0000000000bc6399 in os.abort () at /home/felix/projects/forks/zig/lib/std/os.zig:601
#4  0x00000000009bfa89 in crash_report.PanicSwitch.abort () at crash_report.zig:501
#5  0x0000000000bc635f in crash_report.PanicSwitch.goTo () at crash_report.zig:509
#6  crash_report.PanicSwitch.releaseRefCount (state=0x7ffff3f1b788) at crash_report.zig:483
#7  0x0000000000bc5e69 in crash_report.PanicSwitch.goTo () at crash_report.zig:509
#8  crash_report.PanicSwitch.releaseMutex (state=0x7ffff3f1b788) at crash_report.zig:455
#9  0x0000000000bc5f3e in crash_report.PanicSwitch.goTo () at crash_report.zig:509
#10 crash_report.PanicSwitch.reportStack (state=0x7ffff3f1b788) at crash_report.zig:437
#11 0x00000000009bf732 in crash_report.PanicSwitch.goTo () at crash_report.zig:509
#12 crash_report.PanicSwitch.goTo () at crash_report.zig:541
#13 crash_report.PanicSwitch.initPanic (state=, trace=, stack=..., msg=...) at crash_report.zig:533
#14 crash_report.PanicSwitch.initPanic (state=0x7ffff3f1b788, trace=0x0, stack=..., msg=...) at crash_report.zig:402
#15 0x000000000098a0f6 in crash_report.PanicSwitch.goTo () at crash_report.zig:509
#16 crash_report.PanicSwitch.dispatch (trace=0x0, stack_ctx=..., msg=...) at crash_report.zig:366
#17 0x0000000000989693 in crash_report.compilerPanic (msg=..., error_return_trace=0x0, maybe_ret_addr=...) at crash_report.zig:161
#18 0x00000000013622e0 in codegen.llvm.Builder.castConstAssumeCapacity (self=0x337cf50, tag=addrspacecast, val=(none | unknown: 0x4000000c), ty=53)
    at /home/felix/projects/forks/zig/src/codegen/llvm/Builder.zig:9038
#19 0x000000000136249e in codegen.llvm.Builder.convConstAssumeCapacity (self=0x337cf50, signedness=unneeded, val=(none | unknown: 0x4000000c), ty=53)
    at /home/felix/projects/forks/zig/src/codegen/llvm/Builder.zig:8996
#20 0x0000000000f79ce5 in codegen.llvm.Builder.convConst (self=0x337cf50, signedness=unneeded, val=(none | unknown: 0x4000000c), ty=53)
    at /home/felix/projects/forks/zig/src/codegen/llvm/Builder.zig:6992
#21 0x0000000000f7461a in codegen.llvm.Object.lowerDeclRefValue (o=0x337cf40, ty=..., decl_index=(unknown: 0x64d))
    at /home/felix/projects/forks/zig/src/codegen/llvm.zig:4450
#22 0x0000000000cfbdbd in codegen.llvm.Object.lowerValue (o=0x337cf40, arg_val=999) at /home/felix/projects/forks/zig/src/codegen/llvm.zig:3858
#23 0x0000000000d03338 in codegen.llvm.Object.lowerValue (o=0x337cf40, arg_val=1001) at /home/felix/projects/forks/zig/src/codegen/llvm.zig:4215
#24 0x0000000000cf597a in codegen.llvm.DeclGen.genDecl (dg=0x7ffffffebcc8) at /home/felix/projects/forks/zig/src/codegen/llvm.zig:4732
#25 0x0000000000d084d6 in codegen.llvm.Object.updateDecl (self=0x337cf40, module=0x337b240, decl_index=(unknown: 0x649))
    at /home/felix/projects/forks/zig/src/codegen/llvm.zig:1676
#26 0x0000000000d4ab36 in link.Elf.updateDecl (self=0x337c5b0, mod=0x337b240, decl_index=(unknown: 0x649)) at /home/felix/projects/forks/zig/src/link/Elf.zig:2641
#27 0x0000000000aa0f78 in link.File.updateDecl (base=0x337c5b0, module=0x337b240, decl_index=(unknown: 0x649)) at link.zig:579
#28 0x0000000000aa0b72 in Module.linkerUpdateDecl (mod=0x337b240, decl_index=(unknown: 0x649)) at Module.zig:6284
#29 0x0000000000c8fc28 in Compilation.processOneJob (comp=0x337a860, job=..., prog_node=0x7ffffffeed18) at Compilation.zig:3181
#30 0x0000000000aeb81e in Compilation.performAllTheWork (comp=0x337a860, main_progress_node=0x7ffffffeed18) at Compilation.zig:3134
#31 0x0000000000ae71f6 in Compilation.update (comp=0x337a860, main_progress_node=0x7ffffffeed18) at Compilation.zig:2058
#32 0x0000000000b19d61 in main.updateModule (comp=0x337a860) at main.zig:4030
#33 0x0000000000b3f7de in main.buildOutputType (gpa=..., arena=..., all_args=..., arg_mode=...) at main.zig:3451
#34 0x000000000098cee3 in main.mainArgs (gpa=..., arena=..., args=...) at main.zig:270
#35 0x0000000000989b96 in main.main () at main.zig:214
(gdb) selec t18
No symbol "t18" in current context.
(gdb) select 18
(gdb) info locals 
data = {cast = {val = (none | unknown: 0x4000000c), type = 53}, tag = addrspacecast}
gop = {key_ptr = 0xaaaaaaaaaaaaaaaa, value_ptr = 0xaaaaaaaaaaaaaaaa, index = 34, found_existing = false}

Expected Behavior

Code should compile (obviously) 👅

@MasterQ32 MasterQ32 added the bug Observed behavior contradicts documented or intended behavior label Sep 21, 2023
@Vexu Vexu added the backend-llvm The LLVM backend outputs an LLVM IR Module. label Sep 21, 2023
@Vexu Vexu added this to the 0.13.0 milestone Sep 21, 2023
@Snektron
Copy link
Collaborator

This was already fixed in #16684

@Vexu Vexu closed this as completed Sep 21, 2023
@Vexu Vexu removed this from the 0.13.0 milestone Sep 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend-llvm The LLVM backend outputs an LLVM IR Module. bug Observed behavior contradicts documented or intended behavior
Projects
None yet
Development

No branches or pull requests

3 participants