diff options
author | Michael Buch <michaelbuch12@gmail.com> | 2023-03-07 13:18:07 +0000 |
---|---|---|
committer | Michael Buch <michaelbuch12@gmail.com> | 2023-03-19 11:03:54 +0000 |
commit | 4601bcdb7ed3168053aa6d70abedb17c3fffa0d2 (patch) | |
tree | 94fef7286b5d203ac5cab90db15e1df5a564d869 /libcxxabi/test | |
parent | 50b58e89a122fdc20616ad6d6dd3a802206454d2 (diff) | |
download | llvm-4601bcdb7ed3168053aa6d70abedb17c3fffa0d2.tar.gz |
[libcxxabi][Demangle] Don't drop ctor/dtor name for abi-tagged structures
Before this patch we would demangle abi-tagged structures as follows:
```
$ c++filt -n _ZN1SB5OuterC2Ev
S[abi:Outer]:()
$ c++filt -n _ZN1SB5OuterD2Ev
S[abi:Outer]::~()
```
This is because `Node::getBaseName` was unimplemented for the
`AbiTagAttr` node, which meant that when we tried printing `CtorDtorName`
where its `Basename` `Node` was an `AbiTagAttr`, we'd drop the
name.
Addresses https://github.com/llvm/llvm-project/issues/61213
Differential Revision: https://reviews.llvm.org/D145492
Diffstat (limited to 'libcxxabi/test')
-rw-r--r-- | libcxxabi/test/test_demangle.pass.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/libcxxabi/test/test_demangle.pass.cpp b/libcxxabi/test/test_demangle.pass.cpp index 0607c4ef7efa..00592eede9a1 100644 --- a/libcxxabi/test/test_demangle.pass.cpp +++ b/libcxxabi/test/test_demangle.pass.cpp @@ -30112,6 +30112,8 @@ const char* cases[][2] = "::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]); |