brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · d2e2dba Raw
64 lines · plain
1// Test that synthesized accessors get treated like regular method declarations/definitions.2// I.e.:3// 1. explicitly passed parameter are not marked artificial.4// 2. Each property accessor has a method declaration and definition.5 6// RUN: %clang_cc1 -triple %itanium_abi_triple -emit-llvm -dwarf-version=5 -debug-info-kind=limited %s -o - | FileCheck %s --implicit-check-not "DIFlagArtificial"7 8@interface Foo9@property int p1;10@end11 12@implementation Foo13@end14 15int main(void) {16  Foo *f;17  f.p1 = 2;18  return f.p1;19}20 21// CHECK: ![[P1_TYPE:[0-9]+]] = !DIBasicType(name: "int"22// CHECK: ![[GETTER_DECL:[0-9]+]] = !DISubprogram(name: "-[Foo p1]"23// CHECK-SAME:                                    type: ![[GETTER_TYPE:[0-9]+]]24// CHECK-SAME:                                    flags: DIFlagArtificial | DIFlagPrototyped25// CHECK-SAME:                                    spFlags: DISPFlagLocalToUnit)26 27// CHECK: ![[GETTER_TYPE]] = !DISubroutineType(types: ![[GETTER_PARAMS:[0-9]+]])28// CHECK: ![[GETTER_PARAMS]] = !{![[P1_TYPE]], ![[ID_TYPE:[0-9]+]], ![[SEL_TYPE:[0-9]+]]}29// CHECK: ![[ID_TYPE]] = !DIDerivedType(tag: DW_TAG_pointer_type30// CHECK-SAME:                          flags: DIFlagArtificial | DIFlagObjectPointer)31// CHECK: ![[SEL_TYPE]] = !DIDerivedType(tag: DW_TAG_typedef, name: "SEL"32// CHECK-SAME:                           flags: DIFlagArtificial)33 34// CHECK: ![[SETTER_DECL:[0-9]+]] = !DISubprogram(name: "-[Foo setP1:]"35// CHECK-SAME:                                    type: ![[SETTER_TYPE:[0-9]+]]36// CHECK-SAME:                                    flags: DIFlagArtificial | DIFlagPrototyped37// CHECK-SAME:                                    spFlags: DISPFlagLocalToUnit)38// CHECK: ![[SETTER_TYPE]] = !DISubroutineType(types: ![[SETTER_PARAMS:[0-9]+]])39// CHECK: ![[SETTER_PARAMS]] = !{null, ![[ID_TYPE]], ![[SEL_TYPE]], ![[P1_TYPE]]}40 41// CHECK: ![[GETTER_DEF:[0-9]+]] = distinct !DISubprogram(name: "-[Foo p1]"42// CHECK-SAME:                                            type: ![[GETTER_TYPE]]43// CHECK-SAME:                                            flags: DIFlagArtificial | DIFlagPrototyped44// CHECK-SAME:                                            spFlags: DISPFlagLocalToUnit | DISPFlagDefinition45// CHECK-SAME:                                            declaration: ![[GETTER_DECL]]46 47// CHECK: !DILocalVariable(name: "self", arg: 1, scope: ![[GETTER_DEF]]48// CHECK-SAME:             flags: DIFlagArtificial | DIFlagObjectPointer)49//50// CHECK: !DILocalVariable(name: "_cmd", arg: 2, scope: ![[GETTER_DEF]],51// CHECK-SAME:             flags: DIFlagArtificial)52 53// CHECK: ![[SETTER_DEF:[0-9]+]] = distinct !DISubprogram(name: "-[Foo setP1:]",54// CHECK-SAME:                                            type: ![[SETTER_TYPE]]55// CHECK-SAME:                                            flags: DIFlagArtificial | DIFlagPrototyped56// CHECK-SAME:                                            spFlags: DISPFlagLocalToUnit | DISPFlagDefinition57// CHECK-SAME:                                            declaration: ![[SETTER_DECL]]58 59// CHECK: !DILocalVariable(name: "self", arg: 1, scope: ![[SETTER_DEF]]60// CHECK-SAME:             flags: DIFlagArtificial | DIFlagObjectPointer61// CHECK: !DILocalVariable(name: "_cmd", arg: 2, scope: ![[SETTER_DEF]]62// CHECK-SAME:             flags: DIFlagArtificial63// CHECK: !DILocalVariable(name: "p1", arg: 3, scope: ![[SETTER_DEF]]64