This revision was automatically updated to reflect the committed changes.
Closed by commit rG122e7af03df6: PCH debug info: Avoid appending the source 
directory to an absolute path (authored by aprantl).
Herald added a project: clang.

Changed prior to commit:
  https://reviews.llvm.org/D69213?vs=225737&id=225905#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69213/new/

https://reviews.llvm.org/D69213

Files:
  clang/lib/CodeGen/CGDebugInfo.cpp
  clang/test/PCH/debug-info-pch-container-path.c


Index: clang/test/PCH/debug-info-pch-container-path.c
===================================================================
--- /dev/null
+++ clang/test/PCH/debug-info-pch-container-path.c
@@ -0,0 +1,22 @@
+// REQUIRES: asserts
+
+// Modules:
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: cd %t
+
+// RUN: %clang_cc1 -fmodule-format=obj -emit-pch                \
+// RUN:     -triple %itanium_abi_triple                         \
+// RUN:     -fdebug-prefix-map=%t=BUILD                         \
+// RUN:     -fdebug-prefix-map=%S=SOURCE                        \
+// RUN:     -o %t/prefix.ll %S/debug-info-limited-struct.h      \
+// RUN:   -mllvm -debug-only=pchcontainer &>%t-container.ll
+// RUN: cat %t-container.ll | FileCheck %s
+
+// CHECK: distinct !DICompileUnit(
+// CHECK-SAME:                    language: DW_LANG_C99,
+// CHECK-SAME:                    file: ![[FILE:[0-9]+]],
+// CHECK: ![[FILE]] = !DIFile(
+// CHECK-SAME:                filename: "SOURCE/debug-info-limited-struct.h",
+// CHECK-SAME:                directory: "BUILD"
+
Index: clang/lib/CodeGen/CGDebugInfo.cpp
===================================================================
--- clang/lib/CodeGen/CGDebugInfo.cpp
+++ clang/lib/CodeGen/CGDebugInfo.cpp
@@ -539,11 +539,11 @@
   // file to determine the real absolute path for the file.
   std::string MainFileDir;
   if (const FileEntry *MainFile = SM.getFileEntryForID(SM.getMainFileID())) {
-    MainFileDir = remapDIPath(MainFile->getDir()->getName());
-    if (MainFileDir != ".") {
+    MainFileDir = MainFile->getDir()->getName();
+    if (!llvm::sys::path::is_absolute(MainFileName)) {
       llvm::SmallString<1024> MainFileDirSS(MainFileDir);
       llvm::sys::path::append(MainFileDirSS, MainFileName);
-      MainFileName = MainFileDirSS.str();
+      MainFileName = llvm::sys::path::remove_leading_dotslash(MainFileDirSS);
     }
     // If the main file name provided is identical to the input file name, and
     // if the input file is a preprocessed source, use the module name for


Index: clang/test/PCH/debug-info-pch-container-path.c
===================================================================
--- /dev/null
+++ clang/test/PCH/debug-info-pch-container-path.c
@@ -0,0 +1,22 @@
+// REQUIRES: asserts
+
+// Modules:
+// RUN: rm -rf %t
+// RUN: mkdir %t
+// RUN: cd %t
+
+// RUN: %clang_cc1 -fmodule-format=obj -emit-pch                \
+// RUN:     -triple %itanium_abi_triple                         \
+// RUN:     -fdebug-prefix-map=%t=BUILD                         \
+// RUN:     -fdebug-prefix-map=%S=SOURCE                        \
+// RUN:     -o %t/prefix.ll %S/debug-info-limited-struct.h      \
+// RUN:   -mllvm -debug-only=pchcontainer &>%t-container.ll
+// RUN: cat %t-container.ll | FileCheck %s
+
+// CHECK: distinct !DICompileUnit(
+// CHECK-SAME:                    language: DW_LANG_C99,
+// CHECK-SAME:                    file: ![[FILE:[0-9]+]],
+// CHECK: ![[FILE]] = !DIFile(
+// CHECK-SAME:                filename: "SOURCE/debug-info-limited-struct.h",
+// CHECK-SAME:                directory: "BUILD"
+
Index: clang/lib/CodeGen/CGDebugInfo.cpp
===================================================================
--- clang/lib/CodeGen/CGDebugInfo.cpp
+++ clang/lib/CodeGen/CGDebugInfo.cpp
@@ -539,11 +539,11 @@
   // file to determine the real absolute path for the file.
   std::string MainFileDir;
   if (const FileEntry *MainFile = SM.getFileEntryForID(SM.getMainFileID())) {
-    MainFileDir = remapDIPath(MainFile->getDir()->getName());
-    if (MainFileDir != ".") {
+    MainFileDir = MainFile->getDir()->getName();
+    if (!llvm::sys::path::is_absolute(MainFileName)) {
       llvm::SmallString<1024> MainFileDirSS(MainFileDir);
       llvm::sys::path::append(MainFileDirSS, MainFileName);
-      MainFileName = MainFileDirSS.str();
+      MainFileName = llvm::sys::path::remove_leading_dotslash(MainFileDirSS);
     }
     // If the main file name provided is identical to the input file name, and
     // if the input file is a preprocessed source, use the module name for
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to