[cfe-commits] r131239 - in /cfe/trunk: lib/CodeGen/CGDebugInfo.cpp test/CodeGenObjC/debug-info-class-extension.m test/CodeGenObjC/debug-info-class-extension2.m

Devang Patel dpatel at apple.com
Thu May 12 12:07:41 PDT 2011


Author: dpatel
Date: Thu May 12 14:07:41 2011
New Revision: 131239

URL: http://llvm.org/viewvc/llvm-project?rev=131239&view=rev
Log:
Use DW_AT_APPLE_objc_class_extension attribute to identify interfaces that represent class extension.
Radar 9423077.

Added:
    cfe/trunk/test/CodeGenObjC/debug-info-class-extension.m
    cfe/trunk/test/CodeGenObjC/debug-info-class-extension2.m
Modified:
    cfe/trunk/lib/CodeGen/CGDebugInfo.cpp

Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=131239&r1=131238&r2=131239&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Thu May 12 14:07:41 2011
@@ -1241,9 +1241,14 @@
   uint64_t Size = CGM.getContext().getTypeSize(Ty);
   uint64_t Align = CGM.getContext().getTypeAlign(Ty);
 
+  unsigned Flags = 0;
+  if (ID->getFirstClassExtension() || 
+      (ID->getImplementation() && !ID->getImplementation()->ivar_empty()))
+    Flags |= llvm::DIDescriptor::FlagObjcClassExtension;
+
   llvm::DIType RealDecl =
     DBuilder.createStructType(Unit, ID->getName(), DefUnit,
-                                  Line, Size, Align, 0,
+                                  Line, Size, Align, Flags,
                                   Elements, RuntimeLang);
 
   // Now that we have a real decl for the struct, replace anything using the

Added: cfe/trunk/test/CodeGenObjC/debug-info-class-extension.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/debug-info-class-extension.m?rev=131239&view=auto
==============================================================================
--- cfe/trunk/test/CodeGenObjC/debug-info-class-extension.m (added)
+++ cfe/trunk/test/CodeGenObjC/debug-info-class-extension.m Thu May 12 14:07:41 2011
@@ -0,0 +1,15 @@
+// RUN: %clang_cc1 -fobjc-nonfragile-abi -masm-verbose -S -g %s -o - | FileCheck %s
+
+// CHECK: AT_APPLE_objc_class_extension
+
+ at interface I1
+ at end
+
+ at implementation I1 {
+int myi2;
+}
+int myi;
+ at end
+
+void foo(I1 *iptr) {}
+

Added: cfe/trunk/test/CodeGenObjC/debug-info-class-extension2.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/debug-info-class-extension2.m?rev=131239&view=auto
==============================================================================
--- cfe/trunk/test/CodeGenObjC/debug-info-class-extension2.m (added)
+++ cfe/trunk/test/CodeGenObjC/debug-info-class-extension2.m Thu May 12 14:07:41 2011
@@ -0,0 +1,14 @@
+// RUN: %clang_cc1  -fobjc-nonfragile-abi -masm-verbose -S -g %s -o - | FileCheck %s
+// CHECK: AT_APPLE_objc_class_extension
+
+ at interface Foo {} @end
+
+ at interface Foo () {
+    int *bar;
+}
+ at end
+
+ at implementation Foo
+ at end
+
+void bar(Foo *fptr) {}





More information about the cfe-commits mailing list