1 | // RUN: %clang_cc1 -dwarf-version=5 -emit-llvm -debug-info-kind=limited -w -triple x86_64-apple-darwin10 %s -o - | FileCheck %s --check-prefix CHECK --check-prefix DWARF5 |
2 | // RUN: %clang_cc1 -dwarf-version=4 -emit-llvm -debug-info-kind=limited -w -triple x86_64-apple-darwin10 %s -o - | FileCheck %s --check-prefix CHECK --check-prefix DWARF4 |
3 | |
4 | @interface Foo { |
5 | int integer; |
6 | } |
7 | |
8 | - (int)integer; |
9 | - (id)integer:(int)_integer; |
10 | @end |
11 | |
12 | @implementation Foo |
13 | - (int)integer { |
14 | return integer; |
15 | } |
16 | |
17 | - (id)integer:(int)_integer { |
18 | integer = _integer; |
19 | return self; |
20 | } |
21 | @end |
22 | |
23 | @interface Foo (Bar) |
24 | + (id)zero:(Foo *)zeroend; |
25 | - (id)add:(Foo *)addend; |
26 | @end |
27 | |
28 | @implementation Foo (Bar) |
29 | + (id)zero:(Foo *)zeroend { |
30 | return [self integer:0]; |
31 | } |
32 | - (id)add:(Foo *)addend { |
33 | return [self integer:[self integer] + [addend integer]]; |
34 | } |
35 | @end |
36 | |
37 | // CHECK: ![[STRUCT:.*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "Foo" |
38 | |
39 | // Verify "not a definition" by showing spFlags doesn't have DISPFlagDefinition. |
40 | // DWARF5: !DISubprogram(name: "-[Foo integer]", scope: ![[STRUCT]], {{.*}} spFlags: DISPFlagLocalToUnit, |
41 | // DWARF5: !DISubprogram(name: "-[Foo integer:]", scope: ![[STRUCT]], {{.*}} spFlags: DISPFlagLocalToUnit, |
42 | // DWARF5: !DISubprogram(name: "+[Foo(Bar) zero:]", scope: ![[STRUCT]], {{.*}} spFlags: DISPFlagLocalToUnit, |
43 | // DWARF5: !DISubprogram(name: "-[Foo(Bar) add:]", scope: ![[STRUCT]], {{.*}} spFlags: DISPFlagLocalToUnit, |
44 | |
45 | // DWARF4-NOT: !DISubprogram(name: "-[Foo integer]", scope: ![[STRUCT]], {{.*}} spFlags: DISPFlagLocalToUnit, |
46 | // DWARF4-NOT: !DISubprogram(name: "-[Foo integer:]", scope: ![[STRUCT]], {{.*}} spFlags: DISPFlagLocalToUnit, |
47 | // DWARF4-NOT: !DISubprogram(name: "+[Foo(Bar) zero:]", scope: ![[STRUCT]], {{.*}} spFlags: DISPFlagLocalToUnit, |
48 | // DWARF4-NOT: !DISubprogram(name: "-[Foo(Bar) add:]", scope: ![[STRUCT]], {{.*}} spFlags: DISPFlagLocalToUnit, |
49 | |
50 | // CHECK: = distinct !DISubprogram(name: "-[Foo integer]"{{.*}} DISPFlagDefinition |
51 | // CHECK: = distinct !DISubprogram(name: "-[Foo integer:]"{{.*}} DISPFlagDefinition |
52 | // CHECK: = distinct !DISubprogram(name: "+[Foo(Bar) zero:]"{{.*}} DISPFlagDefinition |
53 | // CHECK: = distinct !DISubprogram(name: "-[Foo(Bar) add:]"{{.*}} DISPFlagDefinition |
54 | |