comparison clang/test/CodeGenObjC/arc-ivar-layout.m @ 150:1d019706d866

LLVM10
author anatofuz
date Thu, 13 Feb 2020 15:10:13 +0900
parents
children
comparison
equal deleted inserted replaced
147:c2174574ed3a 150:1d019706d866
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