summaryrefslogtreecommitdiffstats
path: root/libcxxabi
diff options
context:
space:
mode:
authorErik Pilkington <erik.pilkington@gmail.com>2019-06-28 19:54:19 +0000
committerErik Pilkington <erik.pilkington@gmail.com>2019-06-28 19:54:19 +0000
commit9a6cef74d8a930baf3c0d9f41780bbef874f11a9 (patch)
treed56ca503ff6a80095f6931cd302654abb93a4717 /libcxxabi
parent1c6337ca5ab73056f5bd5cfa00b54c4d5e90479e (diff)
downloadbcm5719-llvm-9a6cef74d8a930baf3c0d9f41780bbef874f11a9.tar.gz
bcm5719-llvm-9a6cef74d8a930baf3c0d9f41780bbef874f11a9.zip
[demangle] Support for C++2a char8_t
llvm-svn: 364677
Diffstat (limited to 'libcxxabi')
-rw-r--r--libcxxabi/src/demangle/ItaniumDemangle.h4
-rw-r--r--libcxxabi/test/test_demangle.pass.cpp3
2 files changed, 7 insertions, 0 deletions
diff --git a/libcxxabi/src/demangle/ItaniumDemangle.h b/libcxxabi/src/demangle/ItaniumDemangle.h
index ad1034f0fba..aaccb27e17a 100644
--- a/libcxxabi/src/demangle/ItaniumDemangle.h
+++ b/libcxxabi/src/demangle/ItaniumDemangle.h
@@ -3624,6 +3624,10 @@ Node *AbstractManglingParser<Derived, Alloc>::parseType() {
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/libcxxabi/test/test_demangle.pass.cpp b/libcxxabi/test/test_demangle.pass.cpp
index 761226b16b2..8e41cd97ce1 100644
--- a/libcxxabi/test/test_demangle.pass.cpp
+++ b/libcxxabi/test/test_demangle.pass.cpp
@@ -29772,6 +29772,9 @@ const char* cases[][2] =
{"_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]);
OpenPOWER on IntegriCloud