authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-02-23 21:42:39+01:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-02-23 21:50:02+01:00
logceb2c030c43da90ac38e67388e934a3ce76d25a7
treeaab51a5c4c0f93ba83b2eed486f1135cd4aa3ce9
parenta8708dbf3bf0500e63d12a29239978e9596809ee

llvm: revert debug file path resolution changes

Fixes test-stack-traces on windows.

1 files changed, 21 insertions(+), 3 deletions(-)

src/codegen/llvm.zig+21-3
......@@ -779,6 +779,7 @@ pub const Object = struct {
779779 debug_enums: std.ArrayListUnmanaged(Builder.Metadata),
780780 debug_globals: std.ArrayListUnmanaged(Builder.Metadata),
781781
782 debug_file_map: std.AutoHashMapUnmanaged(*const Module.File, Builder.Metadata),
782783 debug_type_map: std.AutoHashMapUnmanaged(Type, Builder.Metadata),
783784
784785 debug_unresolved_namespace_scopes: std.AutoArrayHashMapUnmanaged(InternPool.NamespaceIndex, Builder.Metadata),
......@@ -961,6 +962,7 @@ pub const Object = struct {
961962 .debug_globals_fwd_ref = debug_globals_fwd_ref,
962963 .debug_enums = .{},
963964 .debug_globals = .{},
965 .debug_file_map = .{},
964966 .debug_type_map = .{},
965967 .debug_unresolved_namespace_scopes = .{},
966968 .target = target,
......@@ -978,8 +980,9 @@ pub const Object = struct {
978980
979981 pub fn deinit(self: *Object) void {
980982 const gpa = self.gpa;
981 self.debug_globals.deinit(gpa);
982983 self.debug_enums.deinit(gpa);
984 self.debug_globals.deinit(gpa);
985 self.debug_file_map.deinit(gpa);
983986 self.debug_type_map.deinit(gpa);
984987 self.debug_unresolved_namespace_scopes.deinit(gpa);
985988 self.decl_map.deinit(gpa);
......@@ -1922,10 +1925,25 @@ pub const Object = struct {
19221925 }
19231926
19241927 fn getDebugFile(o: *Object, file: *const Module.File) Allocator.Error!Builder.Metadata {
1925 return try o.builder.debugFile(
1928 const gpa = o.gpa;
1929 const gop = try o.debug_file_map.getOrPut(gpa, file);
1930 errdefer assert(o.debug_file_map.remove(file));
1931 if (gop.found_existing) return gop.value_ptr.*;
1932 gop.value_ptr.* = try o.builder.debugFile(
19261933 try o.builder.metadataString(std.fs.path.basename(file.sub_file_path)),
1927 if (std.fs.path.dirname(file.sub_file_path)) |dirname| try o.builder.metadataString(dirname) else .none,
1934 dir_path: {
1935 const sub_path = std.fs.path.dirname(file.sub_file_path) orelse "";
1936 const dir_path = try file.mod.root.joinString(gpa, sub_path);
1937 defer gpa.free(dir_path);
1938 if (std.fs.path.isAbsolute(dir_path))
1939 break :dir_path try o.builder.metadataString(dir_path);
1940 var abs_buffer: [std.fs.MAX_PATH_BYTES]u8 = undefined;
1941 const abs_path = std.fs.realpath(dir_path, &abs_buffer) catch
1942 break :dir_path try o.builder.metadataString(dir_path);
1943 break :dir_path try o.builder.metadataString(abs_path);
1944 },
19281945 );
1946 return gop.value_ptr.*;
19291947 }
19301948
19311949 pub fn lowerDebugType(