blob: 0b3b38dd17b1012e40d809d0957ae2f7c95526a2 [file] [log] [blame]
Douglas Katzman3459ce22015-10-08 04:24:12 +00001// RUN: %clang_cc1 -triple x86_64-apple-darwin -debug-info-kind=standalone -o - -emit-llvm %s | FileCheck %s
David Blaikie03039fe2013-06-21 03:41:46 +00002
Reid Kleckner22466a922016-09-09 17:03:53 +00003// We had a bug in -fstandalone-debug where UnicodeString would not be completed
4// when it was required to be complete. This orginally manifested as an
5// assertion in CodeView emission on Windows with some dllexport stuff, but it's
6// more general than that.
7
8struct UnicodeString;
Reid Kleckner6c7b1c62016-09-13 00:01:23 +00009UnicodeString *force_fwd_decl;
Reid Kleckner22466a922016-09-09 17:03:53 +000010struct UnicodeString {
11private:
12 virtual ~UnicodeString();
13};
14struct UseCompleteType {
15 UseCompleteType();
16 ~UseCompleteType();
17 UnicodeString currencySpcAfterSym[1];
18};
19UseCompleteType require_complete;
20// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "UnicodeString"
21// CHECK-NOT: DIFlagFwdDecl
22// CHECK-SAME: ){{$}}
23
David Blaikie03039fe2013-06-21 03:41:46 +000024namespace 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.
Duncan P. N. Exon Smith9dd4e4e2015-04-29 16:40:08 +000028// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "foo"
Duncan P. N. Exon Smithf04be1f2015-03-03 17:25:55 +000029// CHECK-NOT: DIFlagFwdDecl
30// CHECK-SAME: ){{$}}
David Blaikie03039fe2013-06-21 03:41:46 +000031struct foo {
32};
33
34typedef foo *foop;
35
36void bar() {
37 foop f;
38}
39}
40
41namespace 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.
Duncan P. N. Exon Smith9dd4e4e2015-04-29 16:40:08 +000045// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "foo"
Duncan P. N. Exon Smithf04be1f2015-03-03 17:25:55 +000046// CHECK-NOT: DIFlagFwdDecl
47// CHECK-SAME: ){{$}}
David Blaikie03039fe2013-06-21 03:41:46 +000048struct foo;
49void bar() {
50 foo *f;
51}
52struct foo {
53};
54}