]> granicus.if.org Git - clang/commitdiff
Emit proper selector name in debug info.
authorDevang Patel <dpatel@apple.com>
Sat, 16 Apr 2011 00:37:51 +0000 (00:37 +0000)
committerDevang Patel <dpatel@apple.com>
Sat, 16 Apr 2011 00:37:51 +0000 (00:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129626 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGDebugInfo.cpp
lib/CodeGen/CGDebugInfo.h

index 542fba29b9f17250a692b26332d05ce74847ff5c..9743b96b40c8a225bc0875df96d5e088dc8df085 100644 (file)
@@ -119,6 +119,17 @@ llvm::StringRef CGDebugInfo::getObjCMethodName(const ObjCMethodDecl *OMD) {
   return llvm::StringRef(StrPtr, OS.tell());
 }
 
+/// getSelectporName - Return selector name. This is used for debugging
+/// info.
+llvm::StringRef CGDebugInfo::getSelectorName(Selector S) {
+  llvm::SmallString<256> SName;
+  llvm::raw_svector_ostream OS(SName);
+  OS << S.getAsString();
+  char *StrPtr = DebugInfoNames.Allocate<char>(OS.tell());
+  memcpy(StrPtr, SName.begin(), OS.tell());
+  return llvm::StringRef(StrPtr, OS.tell());
+}
+
 /// getClassName - Get class name including template argument list.
 llvm::StringRef 
 CGDebugInfo::getClassName(RecordDecl *RD) {
@@ -1198,8 +1209,8 @@ llvm::DIType CGDebugInfo::CreateType(const ObjCInterfaceType *Ty,
     if (ObjCPropertyDecl *PD =
         ID->FindPropertyVisibleInPrimaryClass(Field->getIdentifier())) {
       PropertyName = PD->getName();
-      PropertyGetter = PD->getGetterName().getNameForSlot(0);
-      PropertySetter = PD->getSetterName().getNameForSlot(0);
+      PropertyGetter = getSelectorName(PD->getGetterName());
+      PropertySetter = getSelectorName(PD->getSetterName());
       PropertyAttributes = PD->getPropertyAttributes();
     }
     FieldTy = DBuilder.createObjCIVar(FieldName, FieldDefUnit,
index fbe4c1d2c003eea33740249168e00ca6e5d5196d..f658ea63ac99d7baca0e737b8ac6719ead843085 100644 (file)
@@ -267,6 +267,10 @@ private:
   /// This is the display name for the debugging info.  
   llvm::StringRef getObjCMethodName(const ObjCMethodDecl *FD);
 
+  /// getSelectporName - Return selector name. This is used for debugging
+  /// info.
+  llvm::StringRef getSelectorName(Selector S);
+
   /// getClassName - Get class name including template argument list.
   llvm::StringRef getClassName(RecordDecl *RD);