[libcxx-commits] [PATCH] D145492: [libcxxabi][Demangle] Don't drop ctor/dtor name for abi-tagged structures
Michael Buch via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Mar 9 08:14:00 PST 2023
Michael137 updated this revision to Diff 503777.
Michael137 marked an inline comment as done.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D145492/new/
https://reviews.llvm.org/D145492
Files:
libcxxabi/src/demangle/ItaniumDemangle.h
libcxxabi/test/test_demangle.pass.cpp
llvm/include/llvm/Demangle/ItaniumDemangle.h
llvm/test/tools/llvm-cxxfilt/abitag.test
Index: llvm/test/tools/llvm-cxxfilt/abitag.test
===================================================================
--- llvm/test/tools/llvm-cxxfilt/abitag.test
+++ llvm/test/tools/llvm-cxxfilt/abitag.test
@@ -1,6 +1,7 @@
-RUN: llvm-cxxfilt -n _Z14returns_stringB5cxx11v _Z6globalB5cxx11 _Z6globalB12a_longer_tag | FileCheck %s
+RUN: llvm-cxxfilt -n _Z14returns_stringB5cxx11v _Z6globalB5cxx11 _Z6globalB12a_longer_tag _ZN6globalB3TagC2Ev _ZN6globalB3TagD2Ev | FileCheck %s
CHECK: returns_string[abi:cxx11]()
CHECK-NEXT: global[abi:cxx11]
CHECK-NEXT: global[abi:a_longer_tag]
-
+CHECK-NEXT: global[abi:Tag]::global()
+CHECK-NEXT: global[abi:Tag]::~global()
Index: llvm/include/llvm/Demangle/ItaniumDemangle.h
===================================================================
--- llvm/include/llvm/Demangle/ItaniumDemangle.h
+++ llvm/include/llvm/Demangle/ItaniumDemangle.h
@@ -537,6 +537,8 @@
template<typename Fn> void match(Fn F) const { F(Base, Tag); }
+ StringView getBaseName() const override { return Base->getBaseName(); }
+
void printLeft(OutputBuffer &OB) const override {
Base->printLeft(OB);
OB += "[abi:";
Index: libcxxabi/test/test_demangle.pass.cpp
===================================================================
--- libcxxabi/test/test_demangle.pass.cpp
+++ libcxxabi/test/test_demangle.pass.cpp
@@ -30112,6 +30112,8 @@
"::basic_ostream()"},
{"_ZNSsC1Ev", "std::basic_string<char, std::char_traits<char>,"
" std::allocator<char>>::basic_string()"},
+ {"_ZN1SB8ctor_tagC2Ev", "S[abi:ctor_tag]::S()"},
+ {"_ZN1SB8ctor_tagD2Ev", "S[abi:ctor_tag]::~S()"},
};
const unsigned N = sizeof(cases) / sizeof(cases[0]);
Index: libcxxabi/src/demangle/ItaniumDemangle.h
===================================================================
--- libcxxabi/src/demangle/ItaniumDemangle.h
+++ libcxxabi/src/demangle/ItaniumDemangle.h
@@ -537,6 +537,8 @@
template<typename Fn> void match(Fn F) const { F(Base, Tag); }
+ StringView getBaseName() const override { return Base->getBaseName(); }
+
void printLeft(OutputBuffer &OB) const override {
Base->printLeft(OB);
OB += "[abi:";
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D145492.503777.patch
Type: text/x-patch
Size: 2154 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20230309/a4ea25fd/attachment.bin>
More information about the libcxx-commits
mailing list