[demangle] Support for C++2a char8_t
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@364677 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/src/demangle/ItaniumDemangle.h b/src/demangle/ItaniumDemangle.h
index ad1034f..aaccb27 100644
--- a/src/demangle/ItaniumDemangle.h
+++ b/src/demangle/ItaniumDemangle.h
@@ -3624,6 +3624,10 @@
case 's':
First += 2;
return make<NameType>("char16_t");
+ // ::= Du # char8_t (C++2a, not yet in the Itanium spec)
+ case 'u':
+ First += 2;
+ return make<NameType>("char8_t");
// ::= Da # auto (in dependent new-expressions)
case 'a':
First += 2;
diff --git a/test/test_demangle.pass.cpp b/test/test_demangle.pass.cpp
index 761226b..8e41cd9 100644
--- a/test/test_demangle.pass.cpp
+++ b/test/test_demangle.pass.cpp
@@ -29772,6 +29772,9 @@
{"_ZN3FooIXu8__uuidofzdeL_Z3sucEEEC1Ev", "Foo<__uuidof(*(suc))>::Foo()"},
{"_ZN3FooIXu8__uuidoft13SomeUUIDClassEEC1Ev", "Foo<__uuidof(SomeUUIDClass)>::Foo()"},
+
+ // C++2a char8_t:
+ {"_ZTSPDu", "typeinfo name for char8_t*"},
};
const unsigned N = sizeof(cases) / sizeof(cases[0]);