Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
LLVM: Pass correct tid to emit
Browse files Browse the repository at this point in the history
antlilja committed Aug 16, 2024
1 parent e230af8 commit 0b0e7bf
Showing 6 changed files with 27 additions and 10 deletions.
13 changes: 11 additions & 2 deletions src/Compilation.zig
Original file line number Diff line number Diff line change
@@ -2456,7 +2456,15 @@ fn flush(comp: *Compilation, arena: Allocator, tid: Zcu.PerThread.Id, prog_node:
.sub_path = "dummy",
},
};
try emitLlvmObject(comp, arena, default_emit, null, llvm_object, prog_node);
try emitLlvmObject(
comp,
arena,
default_emit,
null,
llvm_object,
prog_node,
tid,
);
}
}
}
@@ -2741,13 +2749,14 @@ pub fn emitLlvmObject(
bin_emit_loc: ?EmitLoc,
llvm_object: LlvmObject.Ptr,
prog_node: std.Progress.Node,
tid: Zcu.PerThread.Id,
) !void {
const sub_prog_node = prog_node.start("LLVM Emit Object", 0);
defer sub_prog_node.end();

try llvm_object.emit(.{
.zcu = comp.module.?,
.tid = .main,
.tid = tid,
}, .{
.pre_ir_path = comp.verbose_llvm_ir,
.pre_bc_path = comp.verbose_llvm_bc,
16 changes: 12 additions & 4 deletions src/link.zig
Original file line number Diff line number Diff line change
@@ -1014,11 +1014,19 @@ pub const File = struct {
arena: Allocator,
llvm_object: LlvmObject.Ptr,
prog_node: std.Progress.Node,
tid: Zcu.PerThread.Id,
) !void {
return base.comp.emitLlvmObject(arena, base.emit, .{
.directory = null,
.basename = base.zcu_object_sub_path.?,
}, llvm_object, prog_node);
return base.comp.emitLlvmObject(
arena,
base.emit,
.{
.directory = null,
.basename = base.zcu_object_sub_path.?,
},
llvm_object,
prog_node,
tid,
);
}

pub const C = @import("link/C.zig");
2 changes: 1 addition & 1 deletion src/link/Coff.zig
Original file line number Diff line number Diff line change
@@ -1679,7 +1679,7 @@ pub fn flushModule(self: *Coff, arena: Allocator, tid: Zcu.PerThread.Id, prog_no
const gpa = comp.gpa;

if (self.llvm_object) |llvm_object| {
try self.base.emitLlvmObject(arena, llvm_object, prog_node);
try self.base.emitLlvmObject(arena, llvm_object, prog_node, tid);
return;
}

2 changes: 1 addition & 1 deletion src/link/Elf.zig
Original file line number Diff line number Diff line change
@@ -1016,7 +1016,7 @@ pub fn flushModule(self: *Elf, arena: Allocator, tid: Zcu.PerThread.Id, prog_nod
const gpa = comp.gpa;

if (self.llvm_object) |llvm_object| {
try self.base.emitLlvmObject(arena, llvm_object, prog_node);
try self.base.emitLlvmObject(arena, llvm_object, prog_node, tid);
const use_lld = build_options.have_llvm and comp.config.use_lld;
if (use_lld) return;
}
2 changes: 1 addition & 1 deletion src/link/MachO.zig
Original file line number Diff line number Diff line change
@@ -348,7 +348,7 @@ pub fn flushModule(self: *MachO, arena: Allocator, tid: Zcu.PerThread.Id, prog_n
const gpa = comp.gpa;

if (self.llvm_object) |llvm_object| {
try self.base.emitLlvmObject(arena, llvm_object, prog_node);
try self.base.emitLlvmObject(arena, llvm_object, prog_node, tid);
}

const sub_prog_node = prog_node.start("MachO Flush", 0);
2 changes: 1 addition & 1 deletion src/link/Wasm.zig
Original file line number Diff line number Diff line change
@@ -2488,7 +2488,7 @@ pub fn flushModule(wasm: *Wasm, arena: Allocator, tid: Zcu.PerThread.Id, prog_no

const comp = wasm.base.comp;
if (wasm.llvm_object) |llvm_object| {
try wasm.base.emitLlvmObject(arena, llvm_object, prog_node);
try wasm.base.emitLlvmObject(arena, llvm_object, prog_node, tid);
const use_lld = build_options.have_llvm and comp.config.use_lld;
if (use_lld) return;
}

0 comments on commit 0b0e7bf

Please sign in to comment.