xref: /aosp_15_r20/external/clang/test/CodeGenObjC/debug-info-ivars-extension.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -debug-info-kind=limited %s -o - | FileCheck %s
2*67e74705SXin Li
3*67e74705SXin Li// Make sure we generate debug symbols for ivars added by a class extension.
4*67e74705SXin Li
5*67e74705SXin Li@interface I
6*67e74705SXin Li{
7*67e74705SXin Li    @public int a;
8*67e74705SXin Li}
9*67e74705SXin Li@end
10*67e74705SXin Li
11*67e74705SXin Livoid foo(I* pi) {
12*67e74705SXin Li    // poking into pi for primary class ivars.
13*67e74705SXin Li    int _a = pi->a;
14*67e74705SXin Li}
15*67e74705SXin Li
16*67e74705SXin Li@interface I()
17*67e74705SXin Li{
18*67e74705SXin Li    @public int b;
19*67e74705SXin Li}
20*67e74705SXin Li@end
21*67e74705SXin Li
22*67e74705SXin Livoid gorf (I* pg) {
23*67e74705SXin Li    // poking into pg for ivars for class extension
24*67e74705SXin Li    int _b = pg->b;
25*67e74705SXin Li}
26*67e74705SXin Li
27*67e74705SXin Li// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "I"
28*67e74705SXin Li
29*67e74705SXin Li// Check for "a".
30*67e74705SXin Li// CHECK: !DIDerivedType(tag: DW_TAG_member, name: "a"
31*67e74705SXin Li// CHECK-SAME:           line: 7
32*67e74705SXin Li// CHECK-SAME:           baseType: ![[INT:[0-9]+]]
33*67e74705SXin Li// CHECK-SAME:           size: 32, align: 32
34*67e74705SXin Li// CHECK-NOT:            offset:
35*67e74705SXin Li// CHECK-SAME:           flags: DIFlagPublic
36*67e74705SXin Li// CHECK: ![[INT]] = !DIBasicType(name: "int"
37*67e74705SXin Li
38*67e74705SXin Li// Make sure we don't output the same type twice.
39*67e74705SXin Li// CHECK-NOT: !DICompositeType(tag: DW_TAG_structure_type, name: "I"
40*67e74705SXin Li
41*67e74705SXin Li// Check for "b".
42*67e74705SXin Li// CHECK: !DIDerivedType(tag: DW_TAG_member, name: "b"
43*67e74705SXin Li// CHECK-SAME:           line: 18
44*67e74705SXin Li// CHECK-SAME:           baseType: ![[INT]]
45*67e74705SXin Li// CHECK-SAME:           size: 32, align: 32
46*67e74705SXin Li// CHECK-NOT:            offset:
47*67e74705SXin Li// CHECK-SAME:           flags: DIFlagPublic
48