From 004fca2c6496b7760b453dabc1d8041621d011ca Mon Sep 17 00:00:00 2001 From: Guillaume Wenzek Date: Wed, 7 Sep 2022 11:16:48 +0200 Subject: restore comp when leaving flushModule --- src/link/NvPtx.zig | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/link/NvPtx.zig b/src/link/NvPtx.zig index 7bf51c7ad3..eeea371d00 100644 --- a/src/link/NvPtx.zig +++ b/src/link/NvPtx.zig @@ -109,13 +109,19 @@ pub fn flushModule(self: *NvPtx, comp: *Compilation, prog_node: *std.Progress.No const tracy = trace(@src()); defer tracy.end(); - var hack_comp = comp; - if (comp.bin_file.options.emit) |emit| { - hack_comp.emit_asm = .{ - .directory = emit.directory, - .basename = comp.bin_file.intermediary_basename.?, - }; - hack_comp.bin_file.options.emit = null; + const outfile = comp.bin_file.options.emit.?; + // !!! We modify 'comp' before passing it to LLVM, but restore value afterwards + // We tell LLVM to not try to build a .o, only an "assembly" file. + // This is required by the LLVM PTX backend. + comp.bin_file.options.emit = null; + comp.emit_asm = .{ + .directory = outfile.directory, + .basename = comp.bin_file.intermediary_basename.?, + }; + defer { + comp.bin_file.options.emit = outfile; + comp.emit_asm = null; } - return try self.llvm_object.flushModule(hack_comp, prog_node); + + try self.llvm_object.flushModule(comp, prog_node); } -- cgit v1.2.3