[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / clang / test / CodeGenObjC / arc-ivar-layout.m
blob5e08d625e34ec4a3ba0aedbf5e4724df2a9f5b1d
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
4 @interface NSObject {
5   id isa;
7 @end
9 @interface AllPointers : NSObject {
10     id foo;
11     id __strong bar;    
12     NSObject *bletch;
14 @end
16 @implementation AllPointers
17 @end
18 // CHECK-LP64: strong ivar layout for class 'AllPointers': 0x03, 0x00
20 @class NSString, NSNumber;
21 @interface A : NSObject {
22    NSString *foo;
23    NSNumber *bar;
24    unsigned int bletch;
25    __weak id delegate;
27 @end
29 @interface B : A {
30   unsigned int x;
31   NSString *y;
32   NSString *z;
34 @end
36 @implementation A @end
38 // CHECK-LP64: strong ivar layout for class 'A': 0x02, 0x00
39 // CHECK-LP64: weak ivar layout for class 'A': 0x31, 0x00
41 @implementation B @end
43 // CHECK-LP64: strong ivar layout for class 'B': 0x12, 0x00
45 @interface UnsafePerson {
46 @public
47     __unsafe_unretained id name;
48     __unsafe_unretained id age;
49     id value;
51 @end
53 @implementation UnsafePerson @end
55 // CHECK-LP64: strong ivar layout for class 'UnsafePerson': 0x21, 0x00
57 // rdar://16136439
58 @interface rdar16136439
59     @property (nonatomic, readonly, weak) id first;
60 @end
62 @implementation rdar16136439 @end
64 // CHECK-LP64: weak ivar layout for class 'rdar16136439': 0x01, 0x00
66 @interface Misalign : NSObject {
67   char a;
69 @end
71 @interface Misaligned : Misalign {
72   char b;
73   id x;
75 @end
77 @implementation Misaligned @end
79 // CHECK-LP64: strong ivar layout for class 'Misaligned': 0x01, 0x00