Home | History | Annotate | Download | only in CodeGenObjC
      1 // RUN: %clang_cc1 -fobjc-arc -fobjc-runtime-has-weak -triple x86_64-apple-darwin -print-ivar-layout -emit-llvm %s -o %t-64.s | FileCheck -check-prefix CHECK-LP64 %s
      2 // rdar://8991729
      3 
      4 @interface NSObject {
      5   id isa;
      6 }
      7 @end
      8 
      9 @interface AllPointers : NSObject {
     10     id foo;
     11     id __strong bar;    
     12     NSObject *bletch;
     13 }
     14 @end
     15 
     16 @implementation AllPointers
     17 @end
     18 // CHECK-LP64: strong ivar layout for class 'AllPointers': 0x03, 0x00
     19 
     20 @class NSString, NSNumber;
     21 @interface A : NSObject {
     22    NSString *foo;
     23    NSNumber *bar;
     24    unsigned int bletch;
     25    __weak id delegate;
     26 }
     27 @end
     28 
     29 @interface B : A {
     30   unsigned int x;
     31   NSString *y;
     32   NSString *z;
     33 }
     34 @end
     35 
     36 @implementation A @end
     37 
     38 // CHECK-LP64: strong ivar layout for class 'A': 0x02, 0x00
     39 // CHECK-LP64: weak ivar layout for class 'A': 0x31, 0x00
     40 
     41 @implementation B @end
     42 
     43 // CHECK-LP64: strong ivar layout for class 'B': 0x12, 0x00
     44 
     45 @interface UnsafePerson {
     46 @public
     47     __unsafe_unretained id name;
     48     __unsafe_unretained id age;
     49     id value;
     50 }
     51 @end
     52 
     53 @implementation UnsafePerson @end
     54 
     55 // CHECK-LP64: strong ivar layout for class 'UnsafePerson': 0x21, 0x00
     56 
     57 // rdar://16136439
     58 @interface rdar16136439
     59     @property (nonatomic, readonly, weak) id first;
     60 @end
     61 
     62 @implementation rdar16136439 @end
     63 
     64 // CHECK-LP64: weak ivar layout for class 'rdar16136439': 0x01, 0x00
     65 
     66 @interface Misalign : NSObject {
     67   char a;
     68 }
     69 @end
     70 
     71 @interface Misaligned : Misalign {
     72   char b;
     73   id x;
     74 }
     75 @end
     76 
     77 @implementation Misaligned @end
     78 
     79 // CHECK-LP64: strong ivar layout for class 'Misaligned': 0x01, 0x00
     80