[llvm-commits] [llvm] r149737 - /llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp

Devang Patel dpatel at apple.com
Fri Feb 3 17:30:32 PST 2012


Author: dpatel
Date: Fri Feb  3 19:30:32 2012
New Revision: 149737

URL: http://llvm.org/viewvc/llvm-project?rev=149737&view=rev
Log:
Emit new property tag.

Modified:
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp?rev=149737&r1=149736&r2=149737&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp Fri Feb  3 19:30:32 2012
@@ -824,7 +824,34 @@
         addSourceLine(ElemDie, DV);
       } else if (Element.isDerivedType())
         ElemDie = createMemberDIE(DIDerivedType(Element));
-      else
+      else if (Element.isObjCProperty()) {
+	DIObjCProperty Property(Element);
+	ElemDie = new DIE(Property.getTag());
+	StringRef PropertyName = Property.getObjCPropertyName();
+	addString(ElemDie, dwarf::DW_AT_APPLE_property_name, PropertyName);
+	StringRef GetterName = Property.getObjCPropertyGetterName();
+	if (!GetterName.empty())
+	  addString(ElemDie, dwarf::DW_AT_APPLE_property_getter, GetterName);
+	StringRef SetterName = Property.getObjCPropertySetterName();
+	if (!SetterName.empty())
+	  addString(ElemDie, dwarf::DW_AT_APPLE_property_setter, SetterName);
+	unsigned PropertyAttributes = 0;
+        if (Property.isReadOnlyObjCProperty())
+          PropertyAttributes |= dwarf::DW_APPLE_PROPERTY_readonly;
+        if (Property.isReadWriteObjCProperty())
+          PropertyAttributes |= dwarf::DW_APPLE_PROPERTY_readwrite;
+        if (Property.isAssignObjCProperty())
+          PropertyAttributes |= dwarf::DW_APPLE_PROPERTY_assign;
+        if (Property.isRetainObjCProperty())
+          PropertyAttributes |= dwarf::DW_APPLE_PROPERTY_retain;
+        if (Property.isCopyObjCProperty())
+          PropertyAttributes |= dwarf::DW_APPLE_PROPERTY_copy;
+        if (Property.isNonAtomicObjCProperty())
+          PropertyAttributes |= dwarf::DW_APPLE_PROPERTY_nonatomic;
+        if (PropertyAttributes)
+          addUInt(ElemDie, dwarf::DW_AT_APPLE_property_attribute, 0, 
+                 PropertyAttributes);
+      } else
         continue;
       Buffer.addChild(ElemDie);
     }
@@ -1428,6 +1455,7 @@
             dwarf::DW_VIRTUALITY_virtual);
 
   // Objective-C properties.
+  // This is only for backward compatibility.
   StringRef PropertyName = DT.getObjCPropertyName();
   if (!PropertyName.empty()) {
     addString(MemberDie, dwarf::DW_AT_APPLE_property_name, PropertyName);





More information about the llvm-commits mailing list