-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Closed
Labels
backend-llvmThe LLVM backend outputs an LLVM IR Module.The LLVM backend outputs an LLVM IR Module.bugObserved behavior contradicts documented or intended behaviorObserved behavior contradicts documented or intended behaviorfrontendTokenization, parsing, AstGen, Sema, and Liveness.Tokenization, parsing, AstGen, Sema, and Liveness.
Milestone
Description
Zig Version
0.10.0-dev.2855+aab1284e1
Steps to Reproduce
test {
comptime var st = .{
.foo = &1,
.bar = &2,
};
inline for (@typeInfo(@TypeOf(st)).Struct.fields) |field| { _ = field; }
}Expected Behavior
Test should compile successfully and pass.
Actual Behavior
(The LLVM error message here is misleading. The real problem is that the global was never given a definition/initializer.)
LLVM Emit Object...
Global is external, but doesn't have external or weak linkage!
i8** @test.test_0__anon_981
Global is external, but doesn't have external or weak linkage!
i8** @test.test_0__anon_983
thread 23245 panic: LLVM module verification failed
/home/topolarity/repos/zig/src/Sema.zig:4515:5: 0x3473cae in Sema.zirBlock (zig)
return sema.resolveBlockBody(parent_block, src, &child_block, body, inst, &label.merges);
^
/home/topolarity/repos/zig/src/Sema.zig:1206:52: 0x3285963 in Sema.analyzeBodyInner (zig)
if (!block.is_comptime) break :blk try sema.zirBlock(block, inst);
^
/home/topolarity/repos/zig/src/Sema.zig:13624:13: 0x3666c89 in Sema.analyzeRet (zig)
return error.ComptimeReturn;
^
/home/topolarity/repos/zig/src/Sema.zig:13570:5: 0x34799c2 in Sema.zirRetNode (zig)
return sema.analyzeRet(block, operand, src);
^
/home/topolarity/repos/zig/src/Sema.zig:1456:5: 0x3288080 in Sema.analyzeBodyInner (zig)
return result;
^
/home/topolarity/repos/zig/src/Sema.zig:600:21: 0x326c86f in Sema.analyzeBody (zig)
else => |e| return e,
^
/home/topolarity/repos/zig/src/Sema.zig:1157:21: 0x32851d7 in Sema.analyzeBodyInner (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/Sema.zig:1157:21: 0x32851d7 in Sema.analyzeBodyInner (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/Sema.zig:1157:21: 0x32851d7 in Sema.analyzeBodyInner (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/Sema.zig:1157:21: 0x32851d7 in Sema.analyzeBodyInner (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/Sema.zig:4541:21: 0x364776b in Sema.resolveBlockBody (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/Sema.zig:8763:25: 0x3411f17 in Sema.zirSwitchBlock (zig)
return sema.resolveBlockBody(block, src, &child_block, body, inst, merges);
^
/home/topolarity/repos/zig/src/Sema.zig:782:46: 0x327c0d2 in Sema.analyzeBodyInner (zig)
.switch_block => try sema.zirSwitchBlock(block, inst),
^
/home/topolarity/repos/zig/src/Sema.zig:1157:21: 0x32851d7 in Sema.analyzeBodyInner (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/Sema.zig:1157:21: 0x32851d7 in Sema.analyzeBodyInner (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/Sema.zig:1157:21: 0x32851d7 in Sema.analyzeBodyInner (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/Sema.zig:1157:21: 0x32851d7 in Sema.analyzeBodyInner (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/Sema.zig:1157:21: 0x32851d7 in Sema.analyzeBodyInner (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/Sema.zig:13624:13: 0x3666c89 in Sema.analyzeRet (zig)
return error.ComptimeReturn;
^
/home/topolarity/repos/zig/src/Sema.zig:13570:5: 0x34799c2 in Sema.zirRetNode (zig)
return sema.analyzeRet(block, operand, src);
^
/home/topolarity/repos/zig/src/Sema.zig:1456:5: 0x3288080 in Sema.analyzeBodyInner (zig)
return result;
^
/home/topolarity/repos/zig/src/Sema.zig:600:21: 0x326c86f in Sema.analyzeBody (zig)
else => |e| return e,
^
/home/topolarity/repos/zig/src/Sema.zig:1157:21: 0x32851d7 in Sema.analyzeBodyInner (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/Sema.zig:13302:9: 0x347b07c in Sema.zirCondbr (zig)
return sema.analyzeBodyInner(parent_block, body);
^
/home/topolarity/repos/zig/src/Sema.zig:1456:5: 0x3288080 in Sema.analyzeBodyInner (zig)
return result;
^
/home/topolarity/repos/zig/src/Sema.zig:1157:21: 0x32851d7 in Sema.analyzeBodyInner (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/Sema.zig:1157:21: 0x32851d7 in Sema.analyzeBodyInner (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/Sema.zig:1157:21: 0x32851d7 in Sema.analyzeBodyInner (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/Sema.zig:1157:21: 0x32851d7 in Sema.analyzeBodyInner (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/Sema.zig:13302:9: 0x347b07c in Sema.zirCondbr (zig)
return sema.analyzeBodyInner(parent_block, body);
^
/home/topolarity/repos/zig/src/Sema.zig:1456:5: 0x3288080 in Sema.analyzeBodyInner (zig)
return result;
^
/home/topolarity/repos/zig/src/Sema.zig:4541:21: 0x364776b in Sema.resolveBlockBody (zig)
return error.ComptimeBreak;
^
/home/topolarity/repos/zig/src/codegen/llvm.zig:621:17: 0x2e2c821 in codegen.llvm.Object.flushModule (zig)
@panic("LLVM module verification failed");
^
/home/topolarity/repos/zig/src/link/Elf.zig:960:47: 0x2e4098b in link.Elf.flushModule (zig)
return try llvm_object.flushModule(comp, prog_node);
^
/home/topolarity/repos/zig/src/link/Elf.zig:1250:29: 0x2e3705e in link.Elf.linkWithLLD (zig)
try self.flushModule(comp, prog_node);
^
/home/topolarity/repos/zig/src/link/Elf.zig:946:32: 0x2e2ad6d in link.Elf.flush (zig)
return self.linkWithLLD(comp, prog_node);
^
/home/topolarity/repos/zig/src/link.zig:641:68: 0x2e27f95 in link.File.flush (zig)
.elf => return @fieldParentPtr(Elf, "base", base).flush(comp, prog_node),
^
/home/topolarity/repos/zig/src/Compilation.zig:2325:24: 0x2def6f8 in Compilation.flush (zig)
comp.bin_file.flush(comp, prog_node) catch |err| switch (err) {
^
/home/topolarity/repos/zig/src/Compilation.zig:2306:23: 0x2de46fe in Compilation.update (zig)
try comp.flush(main_progress_node);
^
/home/topolarity/repos/zig/src/main.zig:3245:20: 0x2d4ef2f in updateModule (zig)
try comp.update();
^
/home/topolarity/repos/zig/src/main.zig:2934:17: 0x2d170aa in buildOutputType (zig)
updateModule(gpa, comp, hook) catch |err| switch (err) {
^
/home/topolarity/repos/zig/src/main.zig:225:31: 0x2cfb9d6 in mainArgs (zig)
return buildOutputType(gpa, arena, args, .zig_test);
^
/home/topolarity/repos/zig/src/main.zig:174:20: 0x2cfaa24 in main (zig)
return mainArgs(gpa, arena, args);
^
/home/topolarity/repos/zig/lib/std/start.zig:581:37: 0x3220357 in std.start.callMain (zig)
const result = root.main() catch |err| {
^
/home/topolarity/repos/zig/lib/std/start.zig:515:12: 0x2cfd477 in std.start.callMainWithArgs (zig)
return @call(.{ .modifier = .always_inline }, callMain, .{});
^
/home/topolarity/repos/zig/lib/std/start.zig:480:12: 0x2cfd222 in std.start.main (zig)
return @call(.{ .modifier = .always_inline }, callMainWithArgs, .{ @intCast(usize, c_argc), c_argv, envp });
^
???:?:?: 0x7fc998ab37fc in ??? (???)
[1] 23245 IOT instruction ../zig/stage2/bin/zig test test.zig
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
backend-llvmThe LLVM backend outputs an LLVM IR Module.The LLVM backend outputs an LLVM IR Module.bugObserved behavior contradicts documented or intended behaviorObserved behavior contradicts documented or intended behaviorfrontendTokenization, parsing, AstGen, Sema, and Liveness.Tokenization, parsing, AstGen, Sema, and Liveness.