From 0b0e7bf410281a02fcb7918d8fea7b1fb9812001 Mon Sep 17 00:00:00 2001 From: antlilja Date: Fri, 2 Aug 2024 16:57:54 +0200 Subject: [PATCH] LLVM: Pass correct tid to emit --- src/Compilation.zig | 13 +++++++++++-- src/link.zig | 16 ++++++++++++---- src/link/Coff.zig | 2 +- src/link/Elf.zig | 2 +- src/link/MachO.zig | 2 +- src/link/Wasm.zig | 2 +- 6 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/Compilation.zig b/src/Compilation.zig index 259c2e51bf1d..c075f224d255 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -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, diff --git a/src/link.zig b/src/link.zig index 3463a77147f5..4df7e9a71a34 100644 --- a/src/link.zig +++ b/src/link.zig @@ -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"); diff --git a/src/link/Coff.zig b/src/link/Coff.zig index aaa9a9b5cd61..fa2d5657a5be 100644 --- a/src/link/Coff.zig +++ b/src/link/Coff.zig @@ -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; } diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 140b8a69788a..0ad3d4099600 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -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; } diff --git a/src/link/MachO.zig b/src/link/MachO.zig index 7c0b79a0f170..5dd68c58d32c 100644 --- a/src/link/MachO.zig +++ b/src/link/MachO.zig @@ -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); diff --git a/src/link/Wasm.zig b/src/link/Wasm.zig index 87dd8c13f957..f2515527ea1c 100644 --- a/src/link/Wasm.zig +++ b/src/link/Wasm.zig @@ -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; }