xref: /llvm-project/clang/test/CodeGenObjC/ivar-layout-nonfragile-abi2.m (revision 0f1c1be1968076d6f96f8a7bcc4a15cf195ecd97)
1// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o %t %s
2// RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -emit-llvm -o %t %s
3
4@interface Super {
5  int ivar_super_a : 5;
6}
7@end
8
9@interface A : Super {
10@public
11  int ivar_a : 5;
12}
13@end
14
15int f0(A *a) {
16  return a->ivar_a;
17}
18
19@interface A () {
20@public
21  int ivar_ext_a : 5;
22  int ivar_ext_b : 5;
23}@end
24
25int f1(A *a) {
26  return a->ivar_ext_a + a->ivar_a;
27}
28
29@interface A () {
30@public
31  int ivar_ext2_a : 5;
32  int ivar_ext2_b : 5;
33}@end
34
35int f2(A* a) {
36  return a->ivar_ext2_a + a->ivar_ext_a + a->ivar_a;
37}
38
39@implementation A {
40@public
41  int ivar_b : 5;
42  int ivar_c : 5;
43  int ivar_d : 5;
44}
45@end
46
47int f3(A *a) {
48  return a->ivar_d + a->ivar_ext2_a + a->ivar_ext_a + a->ivar_a;
49}
50
51