This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG75993812d5c1: Use windows baskslash on anonymous tag locations if using MSVCFormatting and… (authored by zequanwu).
Changed prior to commit: https://reviews.llvm.org/D150817?vs=523171&id=523742#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D150817/new/ https://reviews.llvm.org/D150817 Files: clang/lib/AST/TypePrinter.cpp clang/test/CodeGen/Inputs/debug-info-slash.cpp clang/test/CodeGen/Inputs/debug-info-slash.h clang/test/CodeGen/debug-info-slash.test Index: clang/test/CodeGen/debug-info-slash.test =================================================================== --- /dev/null +++ clang/test/CodeGen/debug-info-slash.test @@ -0,0 +1,10 @@ +RUN: rm -rf %t-dir +RUN: mkdir -p %t-dir/header/Inputs +RUN: cp %S/Inputs/debug-info-slash.cpp %t-dir/ +RUN: cp %S/Inputs/debug-info-slash.h %t-dir/header/Inputs +RUN: cd %t-dir +RUN: %clang -target x86_64-pc-win32 -emit-llvm -S -g %t-dir/debug-info-slash.cpp -Iheader -o - | FileCheck --check-prefix=WIN %s +RUN: %clang -target x86_64-linux-gnu -emit-llvm -S -g %t-dir/debug-info-slash.cpp -Iheader -o - | FileCheck --check-prefix=LINUX %s + +WIN: lambda at header\\Inputs\\debug-info-slash.h +LINUX: lambda at header/Inputs/debug-info-slash.h Index: clang/test/CodeGen/Inputs/debug-info-slash.h =================================================================== --- /dev/null +++ clang/test/CodeGen/Inputs/debug-info-slash.h @@ -0,0 +1,6 @@ +template <typename... T> +void f1() {} +void a() { + auto Lambda = [] {}; + f1<decltype(Lambda)>(); +} Index: clang/test/CodeGen/Inputs/debug-info-slash.cpp =================================================================== --- /dev/null +++ clang/test/CodeGen/Inputs/debug-info-slash.cpp @@ -0,0 +1,2 @@ +#include "Inputs/debug-info-slash.h" +int main() { a(); return 0; } Index: clang/lib/AST/TypePrinter.cpp =================================================================== --- clang/lib/AST/TypePrinter.cpp +++ clang/lib/AST/TypePrinter.cpp @@ -1385,11 +1385,18 @@ if (PLoc.isValid()) { OS << " at "; StringRef File = PLoc.getFilename(); + llvm::SmallString<1024> WrittenFile(File); if (auto *Callbacks = Policy.Callbacks) - OS << Callbacks->remapPath(File); - else - OS << File; - OS << ':' << PLoc.getLine() << ':' << PLoc.getColumn(); + WrittenFile = Callbacks->remapPath(File); + // Fix inconsistent path separator created by + // clang::DirectoryLookup::LookupFile when the file path is relative + // path. + llvm::sys::path::Style Style = + !llvm::sys::path::is_absolute(WrittenFile) && Policy.MSVCFormatting + ? llvm::sys::path::Style::windows_backslash + : llvm::sys::path::Style::native; + llvm::sys::path::native(WrittenFile, Style); + OS << WrittenFile << ':' << PLoc.getLine() << ':' << PLoc.getColumn(); } }
Index: clang/test/CodeGen/debug-info-slash.test =================================================================== --- /dev/null +++ clang/test/CodeGen/debug-info-slash.test @@ -0,0 +1,10 @@ +RUN: rm -rf %t-dir +RUN: mkdir -p %t-dir/header/Inputs +RUN: cp %S/Inputs/debug-info-slash.cpp %t-dir/ +RUN: cp %S/Inputs/debug-info-slash.h %t-dir/header/Inputs +RUN: cd %t-dir +RUN: %clang -target x86_64-pc-win32 -emit-llvm -S -g %t-dir/debug-info-slash.cpp -Iheader -o - | FileCheck --check-prefix=WIN %s +RUN: %clang -target x86_64-linux-gnu -emit-llvm -S -g %t-dir/debug-info-slash.cpp -Iheader -o - | FileCheck --check-prefix=LINUX %s + +WIN: lambda at header\\Inputs\\debug-info-slash.h +LINUX: lambda at header/Inputs/debug-info-slash.h Index: clang/test/CodeGen/Inputs/debug-info-slash.h =================================================================== --- /dev/null +++ clang/test/CodeGen/Inputs/debug-info-slash.h @@ -0,0 +1,6 @@ +template <typename... T> +void f1() {} +void a() { + auto Lambda = [] {}; + f1<decltype(Lambda)>(); +} Index: clang/test/CodeGen/Inputs/debug-info-slash.cpp =================================================================== --- /dev/null +++ clang/test/CodeGen/Inputs/debug-info-slash.cpp @@ -0,0 +1,2 @@ +#include "Inputs/debug-info-slash.h" +int main() { a(); return 0; } Index: clang/lib/AST/TypePrinter.cpp =================================================================== --- clang/lib/AST/TypePrinter.cpp +++ clang/lib/AST/TypePrinter.cpp @@ -1385,11 +1385,18 @@ if (PLoc.isValid()) { OS << " at "; StringRef File = PLoc.getFilename(); + llvm::SmallString<1024> WrittenFile(File); if (auto *Callbacks = Policy.Callbacks) - OS << Callbacks->remapPath(File); - else - OS << File; - OS << ':' << PLoc.getLine() << ':' << PLoc.getColumn(); + WrittenFile = Callbacks->remapPath(File); + // Fix inconsistent path separator created by + // clang::DirectoryLookup::LookupFile when the file path is relative + // path. + llvm::sys::path::Style Style = + !llvm::sys::path::is_absolute(WrittenFile) && Policy.MSVCFormatting + ? llvm::sys::path::Style::windows_backslash + : llvm::sys::path::Style::native; + llvm::sys::path::native(WrittenFile, Style); + OS << WrittenFile << ':' << PLoc.getLine() << ':' << PLoc.getColumn(); } }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits