]> granicus.if.org Git - clang/commitdiff
Only emit the getter and setter names if they're not the default
authorEric Christopher <echristo@apple.com>
Thu, 5 Apr 2012 22:03:32 +0000 (22:03 +0000)
committerEric Christopher <echristo@apple.com>
Thu, 5 Apr 2012 22:03:32 +0000 (22:03 +0000)
synthesized ones. Reasonable debug info size reduction for objc.

rdar://11179756

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154129 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGDebugInfo.cpp
test/CodeGenObjC/debug-info-property.m
test/CodeGenObjC/debug-info-property3.m
test/CodeGenObjC/debug-info-property4.m

index 9a33ade99b169e384069ded34a7ec79728bebff8..587ab8a3571e27a2088aa506efa0e00d28f7ffc2 100644 (file)
@@ -1327,10 +1327,14 @@ llvm::DIType CGDebugInfo::CreateType(const ObjCInterfaceType *Ty,
     SourceLocation Loc = PD->getLocation();
     llvm::DIFile PUnit = getOrCreateFile(Loc);
     unsigned PLine = getLineNumber(Loc);
+    ObjCMethodDecl *Getter = PD->getGetterMethodDecl();
+    ObjCMethodDecl *Setter = PD->getSetterMethodDecl();
     llvm::MDNode *PropertyNode =
       DBuilder.createObjCProperty(PD->getName(),
                                  PUnit, PLine,
+                                  (Getter && Getter->isImplicit()) ? "" :
                                   getSelectorName(PD->getGetterName()),
+                                  (Setter && Setter->isImplicit()) ? "" :
                                   getSelectorName(PD->getSetterName()),
                                   PD->getPropertyAttributes(),
                                  getOrCreateType(PD->getType(), PUnit));
@@ -1388,13 +1392,17 @@ llvm::DIType CGDebugInfo::CreateType(const ObjCInterfaceType *Ty,
          SourceLocation Loc = PD->getLocation();
          llvm::DIFile PUnit = getOrCreateFile(Loc);
          unsigned PLine = getLineNumber(Loc);
-         PropertyNode =
-           DBuilder.createObjCProperty(PD->getName(),
-                                       PUnit, PLine,
+          ObjCMethodDecl *Getter = PD->getGetterMethodDecl();
+          ObjCMethodDecl *Setter = PD->getSetterMethodDecl();
+          PropertyNode =
+            DBuilder.createObjCProperty(PD->getName(),
+                                        PUnit, PLine,
+                                        (Getter && Getter->isImplicit()) ? "" :
                                         getSelectorName(PD->getGetterName()),
+                                        (Setter && Setter->isImplicit()) ? "" :
                                         getSelectorName(PD->getSetterName()),
-                                       PD->getPropertyAttributes(),
-                                       getOrCreateType(PD->getType(),PUnit));
+                                        PD->getPropertyAttributes(),
+                                        getOrCreateType(PD->getType(), PUnit));
         }
       }
     }
index 6ed467a5bc40bb5fe1d7945a7347d4b43ee5ddbb..dd105a58bdf41aa77c73d3fbef6dc24a40ccab67 100644 (file)
@@ -1,8 +1,6 @@
 // RUN: %clang_cc1 -masm-verbose -S -g %s -o - | FileCheck %s
 
 // CHECK: AT_APPLE_property_name
-// CHECK: AT_APPLE_property_getter
-// CHECK: AT_APPLE_property_setter
 // CHECK: AT_APPLE_property_attribute
 // CHECK: AT_APPLE_property
 @interface I1 {
index c3bf1ae2624cf9112d13ebb147ed6a38801ca26c..f96ec44c6b2160c896b8b12ac84216caffd1d3b8 100644 (file)
@@ -1,6 +1,6 @@
 // RUN: %clang_cc1 -S -emit-llvm -g %s -o - | FileCheck %s
 
-// CHECK: metadata !"p1", metadata !6, i32 5, metadata !"p1", metadata !"setP1:", i32 2316, metadata !9} ; [ DW_TAG_APPLE_property ]
+// CHECK: metadata !"p1", metadata !6, i32 5, metadata !"", metadata !"", i32 2316, metadata !9} ; [ DW_TAG_APPLE_property ]
 @interface I1
 @property int p1;
 @end
index 619813f68798e634ff8098946ef4aa2d15bf63db..386a80854c3538da0843ebf7218a3efb7a8a8141 100644 (file)
@@ -1,8 +1,6 @@
 // RUN: %clang_cc1 -fobjc-default-synthesize-properties -masm-verbose -S -g %s -o - | FileCheck %s
 
 // CHECK: AT_APPLE_property_name
-// CHECK: AT_APPLE_property_getter
-// CHECK: AT_APPLE_property_setter
 // CHECK: AT_APPLE_property_attribute
 // CHECK: AT_APPLE_property