From: David Majnemer Date: Fri, 21 Nov 2014 09:06:49 +0000 (+0000) Subject: MS ABI: Mangle char16_t and char32_t types X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=eb05ef7c434633fdbcaed4f09612ef1fdfc1f689;p=clang MS ABI: Mangle char16_t and char32_t types These mangling make clang more compatible with MSVC 2015. Correctly mangling char16_t and char32_t will take a little more work. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@222515 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/MicrosoftMangle.cpp b/lib/AST/MicrosoftMangle.cpp index 9fedcf5d5d..e1d47c2098 100644 --- a/lib/AST/MicrosoftMangle.cpp +++ b/lib/AST/MicrosoftMangle.cpp @@ -1485,6 +1485,8 @@ void MicrosoftCXXNameMangler::mangleType(const BuiltinType *T, case BuiltinType::Int128: Out << "_L"; break; case BuiltinType::UInt128: Out << "_M"; break; case BuiltinType::Bool: Out << "_N"; break; + case BuiltinType::Char16: Out << "_S"; break; + case BuiltinType::Char32: Out << "_U"; break; case BuiltinType::WChar_S: case BuiltinType::WChar_U: Out << "_W"; break; @@ -1510,8 +1512,6 @@ void MicrosoftCXXNameMangler::mangleType(const BuiltinType *T, case BuiltinType::NullPtr: Out << "$$T"; break; - case BuiltinType::Char16: - case BuiltinType::Char32: case BuiltinType::Half: { DiagnosticsEngine &Diags = Context.getDiags(); unsigned DiagID = Diags.getCustomDiagID(DiagnosticsEngine::Error, diff --git a/test/CodeGenCXX/mangle-ms-cxx11.cpp b/test/CodeGenCXX/mangle-ms-cxx11.cpp index ded08b9ff1..fe7121ef24 100644 --- a/test/CodeGenCXX/mangle-ms-cxx11.cpp +++ b/test/CodeGenCXX/mangle-ms-cxx11.cpp @@ -56,6 +56,12 @@ S l; // CHECK: "\01?DeducedType@@3HA" auto DeducedType = 30; +// CHECK-DAG: @"\01?Char16Var@@3_SA" +char16_t Char16Var; + +// CHECK-DAG: @"\01?Char32Var@@3_UA" +char32_t Char32Var; + // CHECK: "\01?LRef@@YAXAAH@Z" void LRef(int& a) { }