xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGenObjC/arc-ivar-layout.m (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1f4a2713aSLionel Sambuc// RUN: %clang_cc1 -fobjc-arc -fobjc-runtime-has-weak -triple x86_64-apple-darwin -S %s -o %t-64.s
2f4a2713aSLionel Sambuc// RUN: FileCheck -check-prefix CHECK-LP64 --input-file=%t-64.s %s
3*0a6a1f1dSLionel Sambuc// REQUIRES: x86-registered-target
4f4a2713aSLionel Sambuc// rdar://8991729
5f4a2713aSLionel Sambuc
6f4a2713aSLionel Sambuc@interface NSObject {
7f4a2713aSLionel Sambuc  id isa;
8f4a2713aSLionel Sambuc}
9f4a2713aSLionel Sambuc@end
10f4a2713aSLionel Sambuc
11f4a2713aSLionel Sambuc@interface AllPointers : NSObject {
12f4a2713aSLionel Sambuc    id foo;
13f4a2713aSLionel Sambuc    id __strong bar;
14f4a2713aSLionel Sambuc    NSObject *bletch;
15f4a2713aSLionel Sambuc}
16f4a2713aSLionel Sambuc@end
17f4a2713aSLionel Sambuc
18f4a2713aSLionel Sambuc@implementation AllPointers
19f4a2713aSLionel Sambuc@end
20f4a2713aSLionel Sambuc// CHECK-LP64: L_OBJC_CLASS_NAME_1:
21f4a2713aSLionel Sambuc// CHECK-LP64-NEXT: .asciz	"\003"
22f4a2713aSLionel Sambuc
23f4a2713aSLionel Sambuc@class NSString, NSNumber;
24f4a2713aSLionel Sambuc@interface A : NSObject {
25f4a2713aSLionel Sambuc   NSString *foo;
26f4a2713aSLionel Sambuc   NSNumber *bar;
27f4a2713aSLionel Sambuc   unsigned int bletch;
28f4a2713aSLionel Sambuc   __weak id delegate;
29f4a2713aSLionel Sambuc}
30f4a2713aSLionel Sambuc@end
31f4a2713aSLionel Sambuc
32f4a2713aSLionel Sambuc@interface B : A {
33f4a2713aSLionel Sambuc  unsigned int x;
34f4a2713aSLionel Sambuc  NSString *y;
35f4a2713aSLionel Sambuc  NSString *z;
36f4a2713aSLionel Sambuc}
37f4a2713aSLionel Sambuc@end
38f4a2713aSLionel Sambuc
39f4a2713aSLionel Sambuc@implementation A @end
40f4a2713aSLionel Sambuc
41f4a2713aSLionel Sambuc@implementation B @end
42f4a2713aSLionel Sambuc
43f4a2713aSLionel Sambuc// CHECK-LP64: L_OBJC_CLASS_NAME_15:
44f4a2713aSLionel Sambuc// CHECK-LP64-NEXT: .asciz	"\022"
45f4a2713aSLionel Sambuc
46f4a2713aSLionel Sambuc@interface UnsafePerson {
47f4a2713aSLionel Sambuc@public
48f4a2713aSLionel Sambuc    __unsafe_unretained id name;
49f4a2713aSLionel Sambuc    __unsafe_unretained id age;
50f4a2713aSLionel Sambuc    id value;
51f4a2713aSLionel Sambuc}
52f4a2713aSLionel Sambuc@end
53f4a2713aSLionel Sambuc
54f4a2713aSLionel Sambuc@implementation UnsafePerson @end
55f4a2713aSLionel Sambuc// CHECK-LP64: L_OBJC_CLASS_NAME_20:
56f4a2713aSLionel Sambuc// CHECK-LP64-NEXT: .asciz      "!"
57*0a6a1f1dSLionel Sambuc
58*0a6a1f1dSLionel Sambuc// rdar://16136439
59*0a6a1f1dSLionel Sambuc@interface rdar16136439
60*0a6a1f1dSLionel Sambuc    @property (nonatomic, readonly, weak) id first;
61*0a6a1f1dSLionel Sambuc@end
62*0a6a1f1dSLionel Sambuc
63*0a6a1f1dSLionel Sambuc@implementation rdar16136439 @end
64*0a6a1f1dSLionel Sambuc// CHECK-LP64: L_OBJC_PROP_NAME_ATTR_29:
65*0a6a1f1dSLionel Sambuc// CHECK-LP64-NEXT: .asciz  "T@,R,W,N,V_first"
66