diff options
Diffstat (limited to 'test/Modules/ExtDebugInfo.m')
-rw-r--r-- | test/Modules/ExtDebugInfo.m | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/Modules/ExtDebugInfo.m b/test/Modules/ExtDebugInfo.m new file mode 100644 index 000000000000..8e063f09048d --- /dev/null +++ b/test/Modules/ExtDebugInfo.m @@ -0,0 +1,36 @@ +// RUN: rm -rf %t +// Test that only forward declarations are emitted for types defined in modules. + +// Modules: +// RUN: %clang_cc1 -x objective-c -debug-info-kind=limited -dwarf-ext-refs -fmodules \ +// RUN: -fmodule-format=obj -fimplicit-module-maps -DMODULES \ +// RUN: -fmodules-cache-path=%t %s -I %S/Inputs -I %t -emit-llvm -o %t-mod.ll +// RUN: cat %t-mod.ll | FileCheck %s + +// PCH: +// RUN: %clang_cc1 -x objective-c -fmodule-format=obj -emit-pch -I%S/Inputs \ +// RUN: -o %t.pch %S/Inputs/DebugObjC.h +// RUN: %clang_cc1 -x objective-c -debug-info-kind=limited -dwarf-ext-refs -fmodule-format=obj \ +// RUN: -include-pch %t.pch %s -emit-llvm -o %t-pch.ll %s +// RUN: cat %t-pch.ll | FileCheck %s + +#ifdef MODULES +@import DebugObjC; +#endif + +int foo(ObjCClass *c) { + InnerEnum e = e0; + [c instanceMethodWithInt: 0]; + return [c property]; +} + +// CHECK-NOT: !DICompositeType(tag: DW_TAG_structure_type, +// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "ObjCClass", +// CHECK-SAME: scope: ![[MOD:[0-9]+]], +// CHECK-SAME: flags: DIFlagFwdDecl) +// CHECK-NOT: !DICompositeType(tag: DW_TAG_structure_type, +// CHECK: ![[MOD]] = !DIModule(scope: null, name: {{.*}}DebugObjC +// CHECK-NOT: !DICompositeType(tag: DW_TAG_structure_type, +// CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, +// CHECK-SAME: scope: ![[MOD]], +// CHECK-SAME: flags: DIFlagFwdDecl) |