[clang] Handle __declspec() attributes in using
[llvm-project.git] / clang / test / CodeGenCXX / debug-info-dllimport-base-class.cpp
blob855ecaaa4c9008eab86dab721ba96971bd4bdc37
1 // RUN: %clang_cc1 -triple i386-pc-windows -emit-llvm -gcodeview -debug-info-kind=limited -fms-compatibility %s -x c++ -o - | FileCheck %s
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.
7 // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "ImportedAfterCompletion",
8 // CHECK-NOT: DIFlagFwdDecl
9 // CHECK-SAME: ){{$}}
11 // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "OutOfLineCtor",
12 // CHECK-SAME: DIFlagFwdDecl
13 // CHECK-SAME: ){{$}}
15 // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "ImportedBase",
16 // CHECK-NOT: DIFlagFwdDecl
17 // CHECK-SAME: ){{$}}
19 // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "ImportedMethod",
20 // CHECK-NOT: DIFlagFwdDecl
21 // CHECK-SAME: ){{$}}
24 struct ImportedAfterCompletion;
25 ImportedAfterCompletion *force_fwd_decl;
26 struct __declspec(dllimport) ImportedAfterCompletion {
27 virtual ~ImportedAfterCompletion();
30 struct OutOfLineCtor {
31 OutOfLineCtor();
32 virtual void Foo();
35 struct __declspec(dllimport) ImportedBase {
36 ImportedBase();
37 virtual void Foo();
40 struct DerivedFromImported : public ImportedBase {};
42 struct ImportedMethod {
43 ImportedMethod();
44 virtual void Foo();
45 static void __declspec(dllimport) create();
48 int main() {
49 ImportedAfterCompletion c;
50 OutOfLineCtor o;
51 DerivedFromImported d;
52 ImportedMethod m;