summaryrefslogtreecommitdiff
path: root/clang/lib/AST/MicrosoftMangle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/AST/MicrosoftMangle.cpp')
-rw-r--r--clang/lib/AST/MicrosoftMangle.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/clang/lib/AST/MicrosoftMangle.cpp b/clang/lib/AST/MicrosoftMangle.cpp
index 1d4bdaa760c..072184d82e8 100644
--- a/clang/lib/AST/MicrosoftMangle.cpp
+++ b/clang/lib/AST/MicrosoftMangle.cpp
@@ -482,7 +482,7 @@ void MicrosoftCXXNameMangler::mangle(const NamedDecl *D, StringRef Prefix) {
mangleFunctionEncoding(FD, Context.shouldMangleDeclName(FD));
else if (const VarDecl *VD = dyn_cast<VarDecl>(D))
mangleVariableEncoding(VD);
- else if (!isa<ObjCInterfaceDecl>(D))
+ else
llvm_unreachable("Tried to mangle unexpected NamedDecl!");
}
@@ -1951,13 +1951,13 @@ void MicrosoftCXXNameMangler::mangleType(const BuiltinType *T, Qualifiers,
llvm_unreachable("placeholder types shouldn't get to name mangling");
case BuiltinType::ObjCId:
- mangleArtificalTagType(TTK_Struct, ".objc_object");
+ mangleArtificalTagType(TTK_Struct, "objc_object");
break;
case BuiltinType::ObjCClass:
- mangleArtificalTagType(TTK_Struct, ".objc_class");
+ mangleArtificalTagType(TTK_Struct, "objc_class");
break;
case BuiltinType::ObjCSel:
- mangleArtificalTagType(TTK_Struct, ".objc_selector");
+ mangleArtificalTagType(TTK_Struct, "objc_selector");
break;
#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) \
@@ -2637,10 +2637,9 @@ void MicrosoftCXXNameMangler::mangleType(const DependentAddressSpaceType *T,
void MicrosoftCXXNameMangler::mangleType(const ObjCInterfaceType *T, Qualifiers,
SourceRange) {
- // ObjC interfaces are mangled as if they were structs with a name that is
- // not a valid C/C++ identifier
+ // ObjC interfaces have structs underlying them.
mangleTagTypeKind(TTK_Struct);
- mangle(T->getDecl(), ".objc_cls_");
+ mangleName(T->getDecl());
}
void MicrosoftCXXNameMangler::mangleType(const ObjCObjectType *T,
@@ -2661,11 +2660,11 @@ void MicrosoftCXXNameMangler::mangleType(const ObjCObjectType *T,
Out << "?$";
if (T->isObjCId())
- mangleSourceName(".objc_object");
+ mangleSourceName("objc_object");
else if (T->isObjCClass())
- mangleSourceName(".objc_class");
+ mangleSourceName("objc_class");
else
- mangleSourceName((".objc_cls_" + T->getInterface()->getName()).str());
+ mangleSourceName(T->getInterface()->getName());
for (const auto &Q : T->quals())
mangleObjCProtocol(Q);