https://github.com/noxwell updated https://github.com/llvm/llvm-project/pull/83175
>From 731463e1134b0821e518a3e8e521a2d44dd18a8e Mon Sep 17 00:00:00 2001 From: Aleksei Vetrov <vvv...@google.com> Date: Tue, 27 Feb 2024 19:50:13 +0000 Subject: [PATCH] [Clang][DebugInfo] Use CGDebugInfo::createFile in CGDebugInfo::CreateCompileUnit Use `CGDebugInfo::createFile` wrapper that handles file remapping and corner cases instead of directly using `DBuilder.createFile` in `CGDebugInfo::CreateCompileUnit`. Add test to check corner case with remapping absolute path to relative. Fixes #83174 --- clang/lib/CodeGen/CGDebugInfo.cpp | 5 ++--- clang/test/CodeGen/debug-info-abspath-remap.c | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 clang/test/CodeGen/debug-info-abspath-remap.c diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index c2c01439f2dc99..22cb3492ebe11a 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -628,9 +628,8 @@ void CGDebugInfo::CreateCompileUnit() { // file was specified with an absolute path. if (CSKind) CSInfo.emplace(*CSKind, Checksum); - llvm::DIFile *CUFile = DBuilder.createFile( - remapDIPath(MainFileName), remapDIPath(getCurrentDirname()), CSInfo, - getSource(SM, SM.getMainFileID())); + llvm::DIFile *CUFile = + createFile(MainFileName, CSInfo, getSource(SM, SM.getMainFileID())); StringRef Sysroot, SDK; if (CGM.getCodeGenOpts().getDebuggerTuning() == llvm::DebuggerKind::LLDB) { diff --git a/clang/test/CodeGen/debug-info-abspath-remap.c b/clang/test/CodeGen/debug-info-abspath-remap.c new file mode 100644 index 00000000000000..9a4f146c3254f9 --- /dev/null +++ b/clang/test/CodeGen/debug-info-abspath-remap.c @@ -0,0 +1,20 @@ +// RUN: mkdir -p %t/src +// RUN: cp %s %t/src/debug-info-debug-prefix-map.c + +// RUN: mkdir -p %t/out +// RUN: cd %t/out +// RUN: %clang_cc1 -debug-info-kind=limited -triple %itanium_abi_triple \ +// RUN: -fdebug-prefix-map="%t/=./" %t/src/debug-info-debug-prefix-map.c \ +// RUN: -emit-llvm -o - | FileCheck %s + +void foo(void) {} + +// Compile unit filename is transformed from absolute path %t/src... to +// a relative path ./src... But it should not be relative to directory "./out". + +// CHECK: = distinct !DICompileUnit({{.*}}file: ![[#CUFILE:]] +// CHECK: ![[#CUFILE]] = !DIFile( +// CHECK-NOT: directory: "./out" +// CHECK-SAME: filename: "./src{{[^"]+}}" +// CHECK-NOT: directory: "./out" +// CHECK-SAME: ) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits