From: Adrian Prantl Date: Tue, 19 Jan 2016 23:42:56 +0000 (+0000) Subject: Module Debugging: Add Objective-C testcases for anonymous tag decls. (NFC) X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5c10539da2d97383808d389bbf6ee2851568f014;p=clang Module Debugging: Add Objective-C testcases for anonymous tag decls. (NFC) rdar://problem/24199640 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258252 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/Modules/ExtDebugInfo.m b/test/Modules/ExtDebugInfo.m index 8e063f0904..416f2813ce 100644 --- a/test/Modules/ExtDebugInfo.m +++ b/test/Modules/ExtDebugInfo.m @@ -18,8 +18,13 @@ @import DebugObjC; #endif +TypedefUnion tdu; +TypedefEnum tde; +TypedefStruct tds; + int foo(ObjCClass *c) { InnerEnum e = e0; + GlobalStruct.i = GlobalUnion.i = GlobalEnum; [c instanceMethodWithInt: 0]; return [c property]; } @@ -30,6 +35,29 @@ int foo(ObjCClass *c) { // CHECK-SAME: flags: DIFlagFwdDecl) // CHECK-NOT: !DICompositeType(tag: DW_TAG_structure_type, // CHECK: ![[MOD]] = !DIModule(scope: null, name: {{.*}}DebugObjC + +// CHECK: !DIGlobalVariable(name: "GlobalUnion", +// CHECK-SAME: type: ![[GLOBAL_UNION:[0-9]+]] +// CHECK: ![[GLOBAL_UNION]] = !DICompositeType(tag: DW_TAG_union_type, +// CHECK-SAME: elements: !{{[0-9]+}}) +// CHECK: !DIGlobalVariable(name: "GlobalStruct", +// CHECK-SAME: type: ![[GLOBAL_STRUCT:[0-9]+]] +// CHECK: ![[GLOBAL_STRUCT]] = !DICompositeType(tag: DW_TAG_structure_type, +// CHECK-SAME: elements: !{{[0-9]+}}) + +// CHECK: !DIDerivedType(tag: DW_TAG_typedef, name: "TypedefUnion", +// CHECK-SAME: baseType: ![[TD_UNION:.*]]) +// CHECK: ![[TD_UNION]] = !DICompositeType(tag: DW_TAG_union_type, +// CHECK-SAME: flags: DIFlagFwdDecl) +// CHECK: !DIDerivedType(tag: DW_TAG_typedef, name: "TypedefEnum", +// CHECK-SAME: baseType: ![[TD_ENUM:.*]]) +// CHECK: ![[TD_ENUM]] = !DICompositeType(tag: DW_TAG_enumeration_type, +// CHECK-SAME: flags: DIFlagFwdDecl) +// CHECK: !DIDerivedType(tag: DW_TAG_typedef, name: "TypedefStruct", +// CHECK-SAME: baseType: ![[TD_STRUCT:.*]]) +// CHECK: ![[TD_STRUCT]] = !DICompositeType(tag: DW_TAG_structure_type, +// CHECK-SAME: flags: DIFlagFwdDecl) + // CHECK-NOT: !DICompositeType(tag: DW_TAG_structure_type, // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, // CHECK-SAME: scope: ![[MOD]], diff --git a/test/Modules/Inputs/DebugObjC.h b/test/Modules/Inputs/DebugObjC.h index bde463abfd..eb7a9f9da9 100644 --- a/test/Modules/Inputs/DebugObjC.h +++ b/test/Modules/Inputs/DebugObjC.h @@ -22,3 +22,17 @@ typedef enum { + (InnerEnum)protocolMethod; @end + +struct FwdDeclared; +struct FwdDeclared { + int i; +}; +struct PureForwardDecl; + +typedef union { int i; } TypedefUnion; +typedef enum { e1 = 1 } TypedefEnum; +typedef struct { int i; } TypedefStruct; + +union { int i; } GlobalUnion; +struct { int i; } GlobalStruct; +enum { e2 = 2 } GlobalEnum; diff --git a/test/Modules/ModuleDebugInfo.m b/test/Modules/ModuleDebugInfo.m index 0974f38cc2..cba4063b1d 100644 --- a/test/Modules/ModuleDebugInfo.m +++ b/test/Modules/ModuleDebugInfo.m @@ -38,14 +38,47 @@ // MODULE-CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, // MODULE-CHECK-SAME: scope: ![[MODULE:[0-9]+]], // MODULE-CHECK: ![[MODULE]] = !DIModule(scope: null, name: "DebugObjC" + +// MODULE-CHECK: ![[TD_ENUM:.*]] = !DICompositeType(tag: DW_TAG_enumeration_type, +// MODULE-CHECK-SAME-NOT: name: +// MODULE-CHECK-SAME: elements: + // MODULE-CHECK: !DICompositeType(tag: DW_TAG_structure_type, // MODULE-CHECK-SAME: name: "FwdDecl", // MODULE-CHECK-SAME: scope: ![[MODULE]], // MODULE-CHECK: !DICompositeType(tag: DW_TAG_structure_type, // MODULE-CHECK-SAME: name: "ObjCClass", // MODULE-CHECK-SAME: scope: ![[MODULE]], + +// MODULE-CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "FwdDeclared" +// MODULE-CHECK-SAME: elements: + +// MODULE-CHECK: ![[TD_UNION:.*]] = !DICompositeType(tag: DW_TAG_union_type, +// MODULE-CHECK-SAME-NOT: name: +// MODULE-CHECK-SAME: elements: + +// MODULE-CHECK: !DIDerivedType(tag: DW_TAG_typedef, name: "TypedefUnion", +// MODULE-CHECK-SAME: baseType: ![[TD_UNION]]) + +// MODULE-CHECK: !DIDerivedType(tag: DW_TAG_typedef, name: "TypedefEnum", +// MODULE-CHECK-SAME: baseType: ![[TD_ENUM:.*]]) + +// MODULE-CHECK: ![[TD_STRUCT:.*]] = !DICompositeType(tag: DW_TAG_structure_type, +// MODULE-CHECK-SAME-NOT: name: +// MODULE-CHECK-SAME: elements: +// MODULE-CHECK: !DIDerivedType(tag: DW_TAG_typedef, name: "TypedefStruct", +// MODULE-CHECK-SAME: baseType: ![[TD_STRUCT]]) + +// MODULE-CHECK: !DICompositeType(tag: DW_TAG_union_type, +// MODULE-CHECK-SAME-NOT: name: + +// MODULE-CHECK: !DICompositeType(tag: DW_TAG_structure_type, +// MODULE-CHECK-SAME-NOT: name: + // MODULE-CHECK: !DISubprogram(name: "+[ObjCClass classMethod]", // MODULE-CHECK-SAME: scope: ![[MODULE]], // The forward declaration should not be in the module scope. // MODULE-CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "OpaqueData", file + +// MODULE-CHECK-NEG-NOT: !DICompositeType(tag: DW_TAG_structure_type, name: "PureForwardDecl"