| 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 | |