blob: 1699bab961047f17a8c240f8eb638a240afb8851 [file] [log] [blame]
Douglas Katzman3459ce22015-10-08 04:24:12 +00001// RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited -triple %itanium_abi_triple %s -o - | FileCheck %s
Adrian Prantl21361fb2014-08-29 22:44:27 +00002// Test the various accessibility flags in the debug info.
3struct A {
Duncan P. N. Exon Smith9dd4e4e2015-04-29 16:40:08 +00004 // CHECK-DAG: !DISubprogram(name: "pub_default",{{.*}} line: [[@LINE+1]],{{.*}} flags: DIFlagPrototyped,
Adrian Prantl21361fb2014-08-29 22:44:27 +00005 void pub_default();
Duncan P. N. Exon Smith9dd4e4e2015-04-29 16:40:08 +00006 // CHECK-DAG: !DIDerivedType(tag: DW_TAG_member, name: "pub_default_static",{{.*}} line: [[@LINE+1]],{{.*}} flags: DIFlagStaticMember)
Adrian Prantl21361fb2014-08-29 22:44:27 +00007 static int pub_default_static;
8};
9
Duncan P. N. Exon Smith9dd4e4e2015-04-29 16:40:08 +000010// CHECK: !DIDerivedType(tag: DW_TAG_inheritance,{{.*}} baseType: !"_ZTS1A",{{.*}} flags: DIFlagPublic)
Adrian Prantl21361fb2014-08-29 22:44:27 +000011class B : public A {
12public:
Duncan P. N. Exon Smith9dd4e4e2015-04-29 16:40:08 +000013 // CHECK-DAG: !DISubprogram(name: "pub",{{.*}} line: [[@LINE+1]],{{.*}} flags: DIFlagPublic | DIFlagPrototyped,
Adrian Prantl21361fb2014-08-29 22:44:27 +000014 void pub();
Duncan P. N. Exon Smith9dd4e4e2015-04-29 16:40:08 +000015 // CHECK-DAG: !DIDerivedType(tag: DW_TAG_member, name: "public_static",{{.*}} line: [[@LINE+1]],{{.*}} flags: DIFlagPublic | DIFlagStaticMember)
Adrian Prantl21361fb2014-08-29 22:44:27 +000016 static int public_static;
17protected:
Duncan P. N. Exon Smith9dd4e4e2015-04-29 16:40:08 +000018 // CHECK: !DISubprogram(name: "prot",{{.*}} line: [[@LINE+1]],{{.*}} flags: DIFlagProtected | DIFlagPrototyped,
Adrian Prantl21361fb2014-08-29 22:44:27 +000019 void prot();
20private:
Duncan P. N. Exon Smith9dd4e4e2015-04-29 16:40:08 +000021 // CHECK: !DISubprogram(name: "priv_default",{{.*}} line: [[@LINE+1]],{{.*}} flags: DIFlagPrototyped,
Adrian Prantl21361fb2014-08-29 22:44:27 +000022 void priv_default();
23};
24
25union U {
Duncan P. N. Exon Smith9dd4e4e2015-04-29 16:40:08 +000026 // CHECK-DAG: !DISubprogram(name: "union_pub_default",{{.*}} line: [[@LINE+1]],{{.*}} flags: DIFlagPrototyped,
Adrian Prantl21361fb2014-08-29 22:44:27 +000027 void union_pub_default();
28private:
Duncan P. N. Exon Smith9dd4e4e2015-04-29 16:40:08 +000029 // CHECK-DAG: !DIDerivedType(tag: DW_TAG_member, name: "union_priv",{{.*}} line: [[@LINE+1]],{{.*}} flags: DIFlagPrivate)
Adrian Prantl21361fb2014-08-29 22:44:27 +000030 int union_priv;
31};
32
33
Duncan P. N. Exon Smith9dd4e4e2015-04-29 16:40:08 +000034// CHECK: !DISubprogram(name: "free",
Duncan P. N. Exon Smithf04be1f2015-03-03 17:25:55 +000035// CHECK-SAME: isDefinition: true
36// CHECK-SAME: flags: DIFlagPrototyped,
Adrian Prantl21361fb2014-08-29 22:44:27 +000037void free() {}
38
39A a;
40B b;
41U u;