]> granicus.if.org Git - clang/commitdiff
Minor fix to ObjC layout bitmap metadata. Found while I was trying to
authorEli Friedman <eli.friedman@gmail.com>
Tue, 6 Nov 2012 03:38:02 +0000 (03:38 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Tue, 6 Nov 2012 03:38:02 +0000 (03:38 +0000)
refactor the code.

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

lib/CodeGen/CGObjCMac.cpp
test/CodeGenObjC/block-var-layout.m
test/CodeGenObjCXX/block-var-layout.mm

index 281bb7e1db48c09ccf091a74c5e4067fe2cb2373..9d06fbdbc171ae74361f943954dbeb99e7334fa8 100644 (file)
@@ -4534,7 +4534,7 @@ void CGObjCCommonMac::BuildAggrIvarLayout(const ObjCImplementationDecl *OI,
       if (IsUnion) {
         // FIXME: Why the asymmetry? We divide by word size in bits on other
         // side.
-        uint64_t UnionIvarSize = FieldSize;
+        uint64_t UnionIvarSize = FieldSize / ByteSizeInBits;
         if (UnionIvarSize > MaxSkippedUnionIvarSize) {
           MaxSkippedUnionIvarSize = UnionIvarSize;
           MaxSkippedField = Field;
index c8065be88c764d0832049fddd0cb1ca13a64ff65..71b14dab24bdb57890bba7a0a542456e494bf1cf 100644 (file)
@@ -90,7 +90,7 @@ void f() {
 
 // Test 4
 // struct S (int, id, int, id, int, id)
-// 01 41 11 11
+// 01 41 11 11 00
 // CHECK-LP64: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global [5 x i8] c"\01A\11\11\00"
     struct S s2;
     void (^e)() = ^{
@@ -128,8 +128,8 @@ void Test5() {
   union U u2;
 
 // struct s2 (int, id, int, id, int, id?), union u2 (id?)
-// 01 41 11 12 70 00
-// CHECK-LP64: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global [6 x i8] c"\01A\11\12p\00"
+// 01 41 11 12 00
+// CHECK-LP64: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global [5 x i8] c"\01A\11\12\00"
   void (^c)() = ^{
     x(s2.ui.o1);
     x(u2.o1);
index 00dd2c00ef57d95fdac87484ec54c217adc4784d..f8b6b9c8868cc481e59642ed52b5ac308af14aa8 100644 (file)
@@ -80,7 +80,7 @@ void (^d)() = ^{
 
 // Test4
 // struct S (int, id, int, id, int, id)
-// 01 41 11 11
+// 01 41 11 11 00
 // CHECK-LP64: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global [5 x i8] c"\01A\11\11\00"
     struct S s2;
     void (^e)() = ^{
@@ -118,8 +118,8 @@ void Test5() {
   union U u2;
 
 // struct s2 (int, id, int, id, int, id?), union u2 (id?)
-// 01 41 11 12 70 00
-// CHECK-LP64: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global [6 x i8] c"\01A\11\12p\00"
+// 01 41 11 12 00
+// CHECK-LP64: @"\01L_OBJC_CLASS_NAME_{{.*}}" = internal global [5 x i8] c"\01A\11\12\00"
   void (^c)() = ^{
     x(s2.ui.o1);
     x(u2.o1);