From: Nico Weber Date: Tue, 28 May 2019 15:30:04 +0000 (+0000) Subject: llvm-undname: Support demangling char8_t X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=31c9ebef19b43741128e3fb241c8f6b1b9994b63;p=llvm llvm-undname: Support demangling char8_t Ports clang's mangling support added in r354633 to llvm-undname. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361839 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Demangle/MicrosoftDemangleNodes.h b/include/llvm/Demangle/MicrosoftDemangleNodes.h index 63111bc5591..df384e7362a 100644 --- a/include/llvm/Demangle/MicrosoftDemangleNodes.h +++ b/include/llvm/Demangle/MicrosoftDemangleNodes.h @@ -82,6 +82,7 @@ enum class PrimitiveKind { Char, Schar, Uchar, + Char8, Char16, Char32, Short, diff --git a/lib/Demangle/MicrosoftDemangle.cpp b/lib/Demangle/MicrosoftDemangle.cpp index 4abb48e5757..425c7d3fd19 100644 --- a/lib/Demangle/MicrosoftDemangle.cpp +++ b/lib/Demangle/MicrosoftDemangle.cpp @@ -1944,6 +1944,8 @@ PrimitiveTypeNode *Demangler::demanglePrimitiveType(StringView &MangledName) { return Arena.alloc(PrimitiveKind::Uint64); case 'W': return Arena.alloc(PrimitiveKind::Wchar); + case 'Q': + return Arena.alloc(PrimitiveKind::Char8); case 'S': return Arena.alloc(PrimitiveKind::Char16); case 'U': diff --git a/lib/Demangle/MicrosoftDemangleNodes.cpp b/lib/Demangle/MicrosoftDemangleNodes.cpp index 2c1e5f44f42..c26151c5b19 100644 --- a/lib/Demangle/MicrosoftDemangleNodes.cpp +++ b/lib/Demangle/MicrosoftDemangleNodes.cpp @@ -130,6 +130,7 @@ void PrimitiveTypeNode::outputPre(OutputStream &OS, OutputFlags Flags) const { OUTPUT_ENUM_CLASS_VALUE(PrimitiveKind, Char, "char"); OUTPUT_ENUM_CLASS_VALUE(PrimitiveKind, Schar, "signed char"); OUTPUT_ENUM_CLASS_VALUE(PrimitiveKind, Uchar, "unsigned char"); + OUTPUT_ENUM_CLASS_VALUE(PrimitiveKind, Char8, "char8_t"); OUTPUT_ENUM_CLASS_VALUE(PrimitiveKind, Char16, "char16_t"); OUTPUT_ENUM_CLASS_VALUE(PrimitiveKind, Char32, "char32_t"); OUTPUT_ENUM_CLASS_VALUE(PrimitiveKind, Short, "short"); diff --git a/test/Demangle/ms-cxx20.test b/test/Demangle/ms-cxx20.test index 7e116f1ebcd..587f41aa49b 100644 --- a/test/Demangle/ms-cxx20.test +++ b/test/Demangle/ms-cxx20.test @@ -7,3 +7,6 @@ ??__MS@@QEAA?AVstrong_ordering@std@@AEBU0@@Z' ; CHECK: class std::strong_ordering __cdecl S::operator<=>(struct S const &) + +?f@@YAX_Q@Z +; CHECK: void __cdecl f(char8_t)