]> granicus.if.org Git - clang/commitdiff
Use the unmangled name for the display name in Objective-C debug info. This should...
authorDavid Chisnall <csdavec@swan.ac.uk>
Thu, 2 Sep 2010 17:16:32 +0000 (17:16 +0000)
committerDavid Chisnall <csdavec@swan.ac.uk>
Thu, 2 Sep 2010 17:16:32 +0000 (17:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112833 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGDebugInfo.cpp

index 939b6f768dbb7153e6d44dcc0b444de6ddd48ecf..d59faa160242de1728c2a10a598c86b1db479266 100644 (file)
@@ -1471,6 +1471,20 @@ void CGDebugInfo::EmitFunctionStart(GlobalDecl GD, QualType FnType,
     Name = getFunctionName(FD);
     // Use mangled name as linkage name for c/c++ functions.
     LinkageName = CGM.getMangledName(GD);
+  } else if (const ObjCMethodDecl *OMD = dyn_cast<ObjCMethodDecl>(D)) {
+    llvm::SmallString<256> MethodName;
+    llvm::raw_svector_ostream OS(MethodName);
+    OS << (OMD->isInstanceMethod() ? '-' : '+') << '[';
+    const DeclContext *DC = OMD->getDeclContext();
+    if (const ObjCImplementationDecl *OID = dyn_cast<const ObjCImplementationDecl>(DC)) {
+       OS << OID->getName();
+    } else if (const ObjCCategoryImplDecl *OCD = dyn_cast<const ObjCCategoryImplDecl>(DC)){
+        OS << ((NamedDecl *)OCD)->getIdentifier()->getNameStart() << '(' <<
+            OCD->getIdentifier()->getNameStart() << ')';
+    }
+    OS << ' ' << OMD->getSelector().getAsString() << ']';
+    Name = MethodName;
+    LinkageName = Name;
   } else {
     // Use llvm function name as linkage name.
     Name = Fn->getName();