[clang] Handle __declspec() attributes in using
[llvm-project.git] / clang / test / CodeGenCXX / debug-info-class-nolimit.cpp
blobb184b9e08da7f356edd3877ddf8f0f8c7a535e12
1 // RUN: %clang_cc1 -triple x86_64-apple-darwin -debug-info-kind=standalone -o - -emit-llvm %s | FileCheck %s
3 // We had a bug in -fstandalone-debug where UnicodeString would not be completed
4 // when it was required to be complete. This originally manifested as an
5 // assertion in CodeView emission on Windows with some dllexport stuff, but it's
6 // more general than that.
8 struct UnicodeString;
9 UnicodeString *force_fwd_decl;
10 struct UnicodeString {
11 private:
12 virtual ~UnicodeString();
14 struct UseCompleteType {
15 UseCompleteType();
16 ~UseCompleteType();
17 UnicodeString currencySpcAfterSym[1];
19 UseCompleteType require_complete;
20 // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "UnicodeString"
21 // CHECK-NOT: DIFlagFwdDecl
22 // CHECK-SAME: ){{$}}
24 namespace rdar14101097_1 { // see also PR16214
25 // Check that we emit debug info for the definition of a struct if the
26 // definition is available, even if it's used via a pointer wrapped in a
27 // typedef.
28 // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "foo"
29 // CHECK-NOT: DIFlagFwdDecl
30 // CHECK-SAME: ){{$}}
31 struct foo {
34 typedef foo *foop;
36 void bar() {
37 foop f;
41 namespace rdar14101097_2 {
42 // As above, except trickier because we first encounter only a declaration of
43 // the type and no debug-info related use after we see the definition of the
44 // type.
45 // CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "foo"
46 // CHECK-NOT: DIFlagFwdDecl
47 // CHECK-SAME: ){{$}}
48 struct foo;
49 void bar() {
50 foo *f;
52 struct foo {