]> granicus.if.org Git - clang/commitdiff
Module Debugging: Add Objective-C testcases for anonymous tag decls. (NFC)
authorAdrian Prantl <aprantl@apple.com>
Tue, 19 Jan 2016 23:42:56 +0000 (23:42 +0000)
committerAdrian Prantl <aprantl@apple.com>
Tue, 19 Jan 2016 23:42:56 +0000 (23:42 +0000)
rdar://problem/24199640

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@258252 91177308-0d34-0410-b5e6-96231b3b80d8

test/Modules/ExtDebugInfo.m
test/Modules/Inputs/DebugObjC.h
test/Modules/ModuleDebugInfo.m

index 8e063f09048dd685addbad296545ed9737d6c3ff..416f2813cecfdd7cc0a47a1675c6dde6012fc50e 100644 (file)
 @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]],
index bde463abfd61df1214b4cc63521a4accffc267bd..eb7a9f9da9fe12dfd9a98eedca59637540d418b7 100644 (file)
@@ -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;
index 0974f38cc22e9e917424b13d0b4f7c52dcf489ed..cba4063b1de2c64564d8965a10bc98eeb5676755 100644 (file)
 // 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"