[cfe-commits] r79947 - in /cfe/trunk: lib/CodeGen/CGObjCMac.cpp test/CodeGenObjC/ivar-layout-no-optimize.m

Fariborz Jahanian fjahanian at apple.com
Mon Aug 24 14:55:06 PDT 2009


Author: fjahanian
Date: Mon Aug 24 16:55:06 2009
New Revision: 79947

URL: http://llvm.org/viewvc/llvm-project?rev=79947&view=rev
Log:
Remove ivarlayout bitmap optimization, instead if all zeros,
put out the bitmap when all objects are scanned.

Added:
    cfe/trunk/test/CodeGenObjC/ivar-layout-no-optimize.m
Modified:
    cfe/trunk/lib/CodeGen/CGObjCMac.cpp

Modified: cfe/trunk/lib/CodeGen/CGObjCMac.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCMac.cpp?rev=79947&r1=79946&r2=79947&view=diff

==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjCMac.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp Mon Aug 24 16:55:06 2009
@@ -3354,11 +3354,13 @@
         printf("0x%x%s",  s[i], s[i] != 0 ? ", " : "");
     printf("\n");
   }
-
+// Turn off this optimization.
+#if 0
   // if ivar_layout bitmap is all 1 bits (nothing skipped) then use NULL as
   // final layout.
   if (ForStrongLayout && !BytesSkipped)
     return llvm::Constant::getNullValue(PtrTy);
+#endif
   llvm::GlobalVariable * Entry =
     CreateMetadataVar("\01L_OBJC_CLASS_NAME_",
                       llvm::ConstantArray::get(VMContext, BitMap.c_str()),

Added: cfe/trunk/test/CodeGenObjC/ivar-layout-no-optimize.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/ivar-layout-no-optimize.m?rev=79947&view=auto

==============================================================================
--- cfe/trunk/test/CodeGenObjC/ivar-layout-no-optimize.m (added)
+++ cfe/trunk/test/CodeGenObjC/ivar-layout-no-optimize.m Mon Aug 24 16:55:06 2009
@@ -0,0 +1,18 @@
+// RUN: clang-cc -fobjc-gc -triple x86_64-apple-darwin -O0 -S %s -o %t-64.s &&
+// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s &&
+// RUN: true
+
+ at interface NSObject {
+  id isa;
+}
+ at end
+
+ at interface AllPointers : NSObject {
+    id foo;
+    void *__strong bar;    NSObject *bletch;}
+ at end
+ at implementation AllPointers
+ at end
+
+// CHECK-LP64: L_OBJC_CLASS_NAME_6:
+// CHECK-LP64-NEXT: .asciz	"\004"





More information about the cfe-commits mailing list