blob: 855ecaaa4c9008eab86dab721ba96971bd4bdc37 [file] [log] [blame]
Adrian McCarthy99242982016-08-16 22:11:18 +00001// RUN: %clang_cc1 -triple i386-pc-windows -emit-llvm -gcodeview -debug-info-kind=limited -fms-compatibility %s -x c++ -o - | FileCheck %s
2
3// Ensure we emit debug info for the full definition of base classes that will
4// be imported from a DLL. Otherwise, the debugger wouldn't be able to show the
5// members.
6
Reid Kleckner6c7b1c62016-09-13 00:01:23 +00007// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "ImportedAfterCompletion",
8// CHECK-NOT: DIFlagFwdDecl
9// CHECK-SAME: ){{$}}
10
Reid Klecknerc9404e12016-09-09 16:27:04 +000011// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "OutOfLineCtor",
12// CHECK-SAME: DIFlagFwdDecl
13// CHECK-SAME: ){{$}}
14
Adrian McCarthy99242982016-08-16 22:11:18 +000015// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "ImportedBase",
16// CHECK-NOT: DIFlagFwdDecl
17// CHECK-SAME: ){{$}}
18
Reid Klecknerc9404e12016-09-09 16:27:04 +000019// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "ImportedMethod",
20// CHECK-NOT: DIFlagFwdDecl
21// CHECK-SAME: ){{$}}
22
Reid Kleckner6c7b1c62016-09-13 00:01:23 +000023
24struct ImportedAfterCompletion;
25ImportedAfterCompletion *force_fwd_decl;
26struct __declspec(dllimport) ImportedAfterCompletion {
27 virtual ~ImportedAfterCompletion();
28};
29
Reid Klecknerc9404e12016-09-09 16:27:04 +000030struct OutOfLineCtor {
31 OutOfLineCtor();
32 virtual void Foo();
33};
34
Adrian McCarthy99242982016-08-16 22:11:18 +000035struct __declspec(dllimport) ImportedBase {
36 ImportedBase();
37 virtual void Foo();
38};
39
40struct DerivedFromImported : public ImportedBase {};
41
Reid Klecknerc9404e12016-09-09 16:27:04 +000042struct ImportedMethod {
43 ImportedMethod();
44 virtual void Foo();
45 static void __declspec(dllimport) create();
46};
47
Adrian McCarthy99242982016-08-16 22:11:18 +000048int main() {
Reid Kleckner6c7b1c62016-09-13 00:01:23 +000049 ImportedAfterCompletion c;
Reid Klecknerc9404e12016-09-09 16:27:04 +000050 OutOfLineCtor o;
Adrian McCarthy99242982016-08-16 22:11:18 +000051 DerivedFromImported d;
Reid Klecknerc9404e12016-09-09 16:27:04 +000052 ImportedMethod m;
Adrian McCarthy99242982016-08-16 22:11:18 +000053}