MS ABI: Mangle u8 string literals
authorDavid Majnemer <david.majnemer@gmail.com>
Fri, 21 Nov 2014 23:56:50 +0000 (23:56 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Fri, 21 Nov 2014 23:56:50 +0000 (23:56 +0000)
UTF8 string literals are mangled just like ASCII string literals.

llvm-svn: 222591

clang/lib/AST/MicrosoftMangle.cpp
clang/test/CodeGenCXX/mangle-ms-string-literals.cpp

index 0530ca1..cae4160 100644 (file)
@@ -338,7 +338,8 @@ bool MicrosoftMangleContextImpl::shouldMangleCXXName(const NamedDecl *D) {
 
 bool
 MicrosoftMangleContextImpl::shouldMangleStringLiteral(const StringLiteral *SL) {
-  return SL->isAscii() || SL->isWide() || SL->isUTF16() || SL->isUTF32();
+  return SL->isAscii() || SL->isWide() || SL->isUTF8() || SL->isUTF16() ||
+         SL->isUTF32();
 }
 
 void MicrosoftCXXNameMangler::mangle(const NamedDecl *D, StringRef Prefix) {
index a282190..e5ebc08 100644 (file)
@@ -719,6 +719,8 @@ const wchar_t *LongWideString = L"012345678901234567890123456789ABCDEF";
 // CHECK: @"\01??_C@_1EK@KFPEBLPK@?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AA0?$AA1?$AA2?$AA3?$AA4?$AA5?$AA6?$AA7?$AA8?$AA9?$AAA?$AAB@"
 const wchar_t *UnicodeLiteral = L"\ud7ff";
 // CHECK: @"\01??_C@_13IIHIAFKH@?W?$PP?$AA?$AA@"
+const char *U8Literal = u8"hi";
+// CHECK: @"\01??_C@_02PCEFGMJL@hi?$AA@"
 const char16_t *U16Literal = u"hi";
 // CHECK: @"\01??_C@_05OMLEGLOC@h?$AAi?$AA?$AA?$AA@"
 const char32_t *U32Literal = U"hi";