blob: 403424e2d6a814f70cd820675aff5ddd73c59093 [file] [log] [blame]
Douglas Katzman3459ce22015-10-08 04:24:12 +00001// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-llvm-only -std=c++14 -emit-llvm -debug-info-kind=limited %s -o - | FileCheck %s
David Blaikie42edade2014-11-11 20:44:45 +00002
David Blaikie2a58a182016-08-05 19:03:01 +00003// CHECK: imports: [[IMPS:![0-9]*]]
Duncan P. N. Exon Smithb3a66692014-12-15 19:10:08 +00004// CHECK: [[EMPTY:![0-9]*]] = !{}
David Blaikie2a58a182016-08-05 19:03:01 +00005
David Blaikie2a58a182016-08-05 19:03:01 +00006// CHECK: [[IMPS]] = !{[[IMP:![0-9]*]]}
7// CHECK: [[IMP]] = !DIImportedEntity(
8// CHECK-SAME: entity: [[F3:![0-9]*]]
9// CHECK: [[F3]] = distinct !DISubprogram(name: "f3"
Duncan P. N. Exon Smithf04be1f2015-03-03 17:25:55 +000010// CHECK-SAME: type: [[SUBROUTINE_TYPE:![0-9]*]]
Duncan P. N. Exon Smith9dd4e4e2015-04-29 16:40:08 +000011// CHECK: [[SUBROUTINE_TYPE]] = !DISubroutineType(types: [[TYPE_LIST:![0-9]*]])
Duncan P. N. Exon Smithb3a66692014-12-15 19:10:08 +000012// CHECK: [[TYPE_LIST]] = !{[[INT:![0-9]*]]}
Duncan P. N. Exon Smith9dd4e4e2015-04-29 16:40:08 +000013// CHECK: [[INT]] = !DIBasicType(name: "int"
David Blaikie2a58a182016-08-05 19:03:01 +000014
Peter Collingbourneeeb56ab2016-09-13 01:13:19 +000015// CHECK: [[FOO:![0-9]+]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "foo",
16// CHECK-SAME: elements: [[EMPTY]]
17
David Blaikie2a58a182016-08-05 19:03:01 +000018// FIXME: The context of this definition should be the CU/file scope, not the class.
19// CHECK: !DISubprogram(name: "func", {{.*}} scope: [[FOO]]
20// CHECK-SAME: type: [[SUBROUTINE_TYPE]]
21// CHECK-SAME: isDefinition: true
22// CHECK-SAME: declaration: [[FUNC_DECL:![0-9]*]]
Duncan P. N. Exon Smith9dd4e4e2015-04-29 16:40:08 +000023// CHECK: [[FUNC_DECL]] = !DISubprogram(name: "func",
Duncan P. N. Exon Smith383f8412016-04-23 21:08:27 +000024// CHECK-SAME: scope: [[FOO]]
Duncan P. N. Exon Smithf04be1f2015-03-03 17:25:55 +000025// CHECK-SAME: type: [[SUBROUTINE_TYPE]]
26// CHECK-SAME: isDefinition: false
David Blaikie22c460a02013-05-24 21:24:35 +000027
28struct foo {
David Blaikie42edade2014-11-11 20:44:45 +000029 static auto func();
David Blaikie22c460a02013-05-24 21:24:35 +000030};
31
32foo f;
David Blaikie42edade2014-11-11 20:44:45 +000033
34auto foo::func() {
35 return 1;
36}
David Blaikie2a58a182016-08-05 19:03:01 +000037
38namespace ns {
39auto f2();
40auto f3() {
41 return 0;
42}
43}
44using ns::f2;
45using ns::f3;