diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2023-12-28 16:42:54 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2024-01-01 19:49:08 -0700 |
| commit | b8674910d45f0b87f82376abbd7a705ad77fe79a (patch) | |
| tree | d4f5034d521dd0a54366860b7a1b0a862d877519 /src/link.zig | |
| parent | 92cc2f41e6027a1e3bec7b3daa01da8dc90a9370 (diff) | |
| download | zig-b8674910d45f0b87f82376abbd7a705ad77fe79a.tar.gz zig-b8674910d45f0b87f82376abbd7a705ad77fe79a.zip | |
restore -fno-emit-bin -femit-llvm-ir functionality
Now, link.File will always be null when -fno-emit-bin is specified, and
in the case that LLVM artifacts are still required, the Zcu instance has
an LlvmObject.
Diffstat (limited to 'src/link.zig')
| -rw-r--r-- | src/link.zig | 41 |
1 files changed, 4 insertions, 37 deletions
diff --git a/src/link.zig b/src/link.zig index e60571a473..89f4125888 100644 --- a/src/link.zig +++ b/src/link.zig @@ -984,49 +984,16 @@ pub const File = struct { return output_mode == .Lib and !self.isStatic(); } - pub fn resolveEmitLoc( - base: File, - arena: Allocator, - opt_loc: ?Compilation.EmitLoc, - ) Allocator.Error!?[*:0]const u8 { - const loc = opt_loc orelse return null; - const slice = if (loc.directory) |directory| - try directory.joinZ(arena, &.{loc.basename}) - else - try base.emit.basenamePath(arena, loc.basename); - return slice.ptr; - } - pub fn emitLlvmObject( base: File, arena: Allocator, llvm_object: *LlvmObject, prog_node: *std.Progress.Node, ) !void { - const comp = base.comp; - - var sub_prog_node = prog_node.start("LLVM Emit Object", 0); - sub_prog_node.activate(); - sub_prog_node.context.refresh(); - defer sub_prog_node.end(); - - try llvm_object.emit(.{ - .pre_ir_path = comp.verbose_llvm_ir, - .pre_bc_path = comp.verbose_llvm_bc, - .bin_path = try base.resolveEmitLoc(arena, .{ - .directory = null, - .basename = base.zcu_object_sub_path.?, - }), - .asm_path = try base.resolveEmitLoc(arena, comp.emit_asm), - .post_ir_path = try base.resolveEmitLoc(arena, comp.emit_llvm_ir), - .post_bc_path = try base.resolveEmitLoc(arena, comp.emit_llvm_bc), - - .is_debug = comp.root_mod.optimize_mode == .Debug, - .is_small = comp.root_mod.optimize_mode == .ReleaseSmall, - .time_report = comp.time_report, - .sanitize_thread = comp.config.any_sanitize_thread, - .lto = comp.config.lto, - }); + return base.comp.emitLlvmObject(arena, base.emit, .{ + .directory = null, + .basename = base.zcu_object_sub_path.?, + }, llvm_object, prog_node); } pub const C = @import("link/C.zig"); |
