• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// RUNX: llvm-gcc -m64 -fobjc-gc -emit-llvm -S -o %t %s &&
2// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o %t %s
3// RUN: grep '@"\\01L_OBJC_CLASS_NAME_.*" = internal global .* c"A\\00"' %t
4// RUN: grep '@"\\01L_OBJC_CLASS_NAME_.*" = internal global .* c"\\11q\\10\\00"' %t
5// RUN: grep '@"\\01L_OBJC_CLASS_NAME_.*" = internal global .* c"!q\\00"' %t
6// RUN: grep '@"\\01L_OBJC_CLASS_NAME_.*" = internal global .* c"\\01\\14\\00"' %t
7// RUNX: llvm-gcc -ObjC++ -m64 -fobjc-gc -emit-llvm -S -o %t %s &&
8// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o %t %s
9// RUN: grep '@"\\01L_OBJC_CLASS_NAME_.*" = internal global .* c"A\\00"' %t
10// RUN: grep '@"\\01L_OBJC_CLASS_NAME_.*" = internal global .* c"\\11q\\10\\00"' %t
11// RUN: grep '@"\\01L_OBJC_CLASS_NAME_.*" = internal global .* c"!q\\00"' %t
12// RUN: grep '@"\\01L_OBJC_CLASS_NAME_.*" = internal global .* c"\\01\\14\\00"' %t
13
14/*
15
16Here is a handy command for looking at llvm-gcc's output:
17llvm-gcc -m64 -fobjc-gc -emit-llvm -S -o - ivar-layout-64.m | \
18  grep 'OBJC_CLASS_NAME.* =.*global' | \
19  sed -e 's#, section.*# ...#' | \
20  sed -e 's#_[0-9]*"#_NNN#' | \
21  sort
22
23*/
24
25@interface B @end
26
27@interface A {
28  struct s0 {
29    int f0;
30    int f1;
31  } f0;
32  id f1;
33__weak B *f2;
34  int f3 : 5;
35  struct s1 {
36    int *f0;
37    int *f1;
38  } f4[2][1];
39}
40@end
41
42@interface C : A
43@property int p3;
44@end
45
46@implementation C
47@synthesize p3 = _p3;
48@end
49
50@interface A()
51@property int p0;
52@property (assign) __strong id p1;
53@property (assign) __weak id p2;
54@end
55
56// FIXME: Check layout for this class, once it is clear what the right
57// answer is.
58@implementation A
59@synthesize p0 = _p0;
60@synthesize p1 = _p1;
61@synthesize p2 = _p2;
62@end
63
64@interface D : A
65@property int p3;
66@end
67
68// FIXME: Check layout for this class, once it is clear what the right
69// answer is.
70@implementation D
71@synthesize p3 = _p3;
72@end
73
74typedef unsigned short UInt16;
75
76
77typedef signed char BOOL;
78typedef unsigned int FSCatalogInfoBitmap;
79
80@interface NSFileLocationComponent {
81    @private
82
83    id _specifierOrStandardizedPath;
84    BOOL _carbonCatalogInfoAndNameAreValid;
85    FSCatalogInfoBitmap _carbonCatalogInfoMask;
86    id _name;
87    id _containerComponent;
88    id _presentableName;
89    id _iconAsAttributedString;
90}
91@end
92
93@implementation NSFileLocationComponent @end
94
95