brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · 1a1d3b1 Raw
126 lines · plain
1// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s2 3// CHECK: @"OBJC_IVAR_$_I3._iv2" = global i64 8, section "__DATA, __objc_ivar", align 84// CHECK: @"OBJC_IVAR_$_I3._iv3" = global i64 12, section "__DATA, __objc_ivar", align 85// CHECK: _OBJC_CLASS_RO_$_I3" = internal global {{.*}} { i32 0, i32 8, i32 136// CHECK: @"OBJC_IVAR_$_I4._iv4" = global i64 13, section "__DATA, __objc_ivar", align 87// CHECK: _OBJC_CLASS_RO_$_I4" = internal global {{.*}} { i32 0, i32 13, i32 14, {{.*}}8// CHECK: @"OBJC_IVAR_$_I5._iv6_synth" = hidden global i64 16, section "__DATA, __objc_ivar", align 89// CHECK: @"OBJC_IVAR_$_I5._iv7_synth" = hidden global i64 20, section "__DATA, __objc_ivar", align 810// CHECK: @"OBJC_IVAR_$_I5._iv5" = global i64 14, section "__DATA, __objc_ivar", align 811// CHECK: _OBJC_CLASS_RO_$_I5" = internal global {{.*}} { i32 0, i32 14, i32 24, {{.*}}12// CHECK: @"OBJC_IVAR_$_I6.iv0" = global i64 0, section "__DATA, __objc_ivar", align 813// CHECK: _OBJC_CLASS_RO_$_I6" = internal global {{.*}} { i32 0, i32 0, i32 1, {{.*}}14// CHECK: @"OBJC_IVAR_$_I8.b" = global i64 8, section "__DATA, __objc_ivar", align 815// CHECK: _OBJC_CLASS_RO_$_I8" = internal global {{.*}} { i32 0, i32 8, i32 16, {{.*}}16// CHECK: @"OBJC_IVAR_$_I9.iv0" = global i64 0, section "__DATA, __objc_ivar", align 817// CHECK: _OBJC_CLASS_RO_$_I9" = internal global {{.*}} { i32 0, i32 0, i32 4, {{.*}}18// CHECK: @"OBJC_IVAR_$_I10.iv1" = global i64 4, section "__DATA, __objc_ivar", align 819// CHECK: _OBJC_CLASS_RO_$_I10" = internal global {{.*}} { i32 0, i32 4, i32 5, {{.*}}20// CHECK: _OBJC_CLASS_RO_$_I11" = internal global {{.*}} { i32 0, i32 5, i32 5, {{.*}}21// CHECK: @"OBJC_IVAR_$_I12.iv2" = global i64 8, section "__DATA, __objc_ivar", align 822// CHECK: _OBJC_CLASS_RO_$_I12" = internal global {{.*}} { i32 0, i32 8, i32 12, {{.*}}23 24/*25  Compare to:26    gcc -m64 -S -o - interface-layout-64.m | grep '^_OBJC_IVAR_$_*{{.*}}' -A 127  and 28    gcc -m64 -S -o - interface-layout-64.m | grep '^l{{.*}}_CLASS_RO_$_I[0-9]*' -A 329 */30 31@interface SuperClass32@end33 34struct s0 {35  double x;36};37 38 39@interface I2 : SuperClass {40  struct s0 _iv1;41}42@end43 44@interface I3 : I2 {45  unsigned int _iv2 :1;46  unsigned : 0;47  unsigned int _iv3 : 3;48}49@end50 51@interface I4 : I3 {52 char _iv4;53}54@end55 56@interface I5 : I4 {57 char _iv5;58}59 60@property int prop0;61@end62 63@implementation I364@end65 66@implementation I4 67@end68 69@interface I5 ()70@property int prop1;71@property char prop2;72@end73 74@implementation I575@synthesize prop0 = _iv6_synth;76@synthesize prop1 = _iv7_synth;77@synthesize prop2 = _iv5;78@end79 80// The size rounds up to the next available byte.81@interface I6 : SuperClass {82  unsigned iv0 : 2;83}84@end85@implementation I686@end87 88// The start of the subclass includes padding for its own alignment.89@interface I7 : SuperClass {90  char a;91}92@end93@interface I8 : I7 {94  double b;95}96@end97@implementation I898@end99 100// Padding bit-fields101@interface I9 : SuperClass {102  unsigned iv0 : 2;103  unsigned : 0;104}105@end106@implementation I9107@end108@interface I10 : I9 {109  unsigned iv1 : 2;110}111@end112@implementation I10113@end114 115// Empty structures116@interface I11 : I10117@end118@implementation I11119@end120@interface I12 : I11 {121  unsigned iv2;122}123@end124@implementation I12125@end126