diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2014-11-21 09:06:49 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2014-11-21 09:06:49 +0000 |
| commit | eca5a201f4de39dae992f8e75a4224fdab70ad01 (patch) | |
| tree | 2664bece542331439113a26876dbe64277314e0b | |
| parent | a77ccfec24e0d34cd117b6919269aaff0070458e (diff) | |
| download | bcm5719-llvm-eca5a201f4de39dae992f8e75a4224fdab70ad01.tar.gz bcm5719-llvm-eca5a201f4de39dae992f8e75a4224fdab70ad01.zip | |
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.
llvm-svn: 222515
| -rw-r--r-- | clang/lib/AST/MicrosoftMangle.cpp | 4 | ||||
| -rw-r--r-- | clang/test/CodeGenCXX/mangle-ms-cxx11.cpp | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/AST/MicrosoftMangle.cpp b/clang/lib/AST/MicrosoftMangle.cpp index 9fedcf5d5d1..e1d47c20983 100644 --- a/clang/lib/AST/MicrosoftMangle.cpp +++ b/clang/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/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp b/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp index ded08b9ff16..fe7121ef24d 100644 --- a/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp +++ b/clang/test/CodeGenCXX/mangle-ms-cxx11.cpp @@ -56,6 +56,12 @@ S<L> 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) { } |

