mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-04-19 14:56:46 +02:00
72 lines
2.6 KiB
Diff
72 lines
2.6 KiB
Diff
From 91daf2a98bf10c6974c79305eca4ac13b76b19d1 Mon Sep 17 00:00:00 2001
|
|
From: Dan McGregor <danismostlikely@gmail.com>
|
|
Date: Tue, 2 May 2023 11:53:48 -0400
|
|
Subject: [PATCH] Call printName to get name of Decl
|
|
|
|
Rather than sending a name directly to the stream, use printName
|
|
to preserve any PrintingPolicy. This ensures that names are properly
|
|
affected by path remapping.
|
|
|
|
Fixes: https://github.com/llvm/llvm-project/issues/62192
|
|
Differential Revision: https://reviews.llvm.org/D149272
|
|
|
|
(cherry picked from commit ea6ecdbfe09d4318f2d616af794e2930f996e393)
|
|
---
|
|
clang/docs/ReleaseNotes.rst | 2 ++
|
|
clang/lib/AST/Decl.cpp | 4 ++--
|
|
clang/lib/AST/DeclarationName.cpp | 4 ++--
|
|
clang/test/CodeGen/debug-prefix-map.cpp | 11 +++++++++++
|
|
4 files changed, 17 insertions(+), 4 deletions(-)
|
|
create mode 100644 clang/test/CodeGen/debug-prefix-map.cpp
|
|
|
|
diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp
|
|
index e60cc28f6e0f..24de6156c0f5 100644
|
|
--- a/lib/AST/Decl.cpp
|
|
+++ b/lib/AST/Decl.cpp
|
|
@@ -1626,8 +1626,8 @@ Module *Decl::getOwningModuleForLinkage(bool IgnoreLinkage) const {
|
|
llvm_unreachable("unknown module kind");
|
|
}
|
|
|
|
-void NamedDecl::printName(raw_ostream &OS, const PrintingPolicy&) const {
|
|
- OS << Name;
|
|
+void NamedDecl::printName(raw_ostream &OS, const PrintingPolicy &Policy) const {
|
|
+ Name.print(OS, Policy);
|
|
}
|
|
|
|
void NamedDecl::printName(raw_ostream &OS) const {
|
|
diff --git a/clang/lib/AST/DeclarationName.cpp b/clang/lib/AST/DeclarationName.cpp
|
|
index c1219041a466..da8b3886c340 100644
|
|
--- a/lib/AST/DeclarationName.cpp
|
|
+++ b/lib/AST/DeclarationName.cpp
|
|
@@ -117,12 +117,12 @@ static void printCXXConstructorDestructorName(QualType ClassType,
|
|
Policy.adjustForCPlusPlus();
|
|
|
|
if (const RecordType *ClassRec = ClassType->getAs<RecordType>()) {
|
|
- OS << *ClassRec->getDecl();
|
|
+ ClassRec->getDecl()->printName(OS, Policy);
|
|
return;
|
|
}
|
|
if (Policy.SuppressTemplateArgsInCXXConstructors) {
|
|
if (auto *InjTy = ClassType->getAs<InjectedClassNameType>()) {
|
|
- OS << *InjTy->getDecl();
|
|
+ InjTy->getDecl()->printName(OS, Policy);
|
|
return;
|
|
}
|
|
}
|
|
diff --git a/clang/test/CodeGen/debug-prefix-map.cpp b/clang/test/CodeGen/debug-prefix-map.cpp
|
|
new file mode 100644
|
|
index 000000000000..5e90aedd8ed7
|
|
--- /dev/null
|
|
+++ b/test/CodeGen/debug-prefix-map.cpp
|
|
@@ -0,0 +1,11 @@
|
|
+// RUN: %clang_cc1 -debug-info-kind=standalone -fdebug-prefix-map=%p=./UNLIKELY_PATH/empty -S %s -emit-llvm -o - | FileCheck %s
|
|
+
|
|
+struct alignas(64) an {
|
|
+ struct {
|
|
+ unsigned char x{0};
|
|
+ } arr[64];
|
|
+};
|
|
+
|
|
+struct an *pan = new an;
|
|
+
|
|
+// CHECK: !DISubprogram(name: "(unnamed struct at ./UNLIKELY_PATH/empty{{/|\\\\}}{{.*}}",
|