1 // RUN: %clang -flimit-debug-info -emit-llvm -g -S %s -o - | FileCheck %s
2 // RUN: %clang -flimit-debug-info -emit-llvm -g -S %s -o - | FileCheck --check-prefix=CHECK-C %s
3 
4 // CHECK: !DICompositeType(tag: DW_TAG_class_type, name: "A"
5 // CHECK-NOT:              DIFlagFwdDecl
6 // CHECK-SAME:             ){{$}}
7 class A {
8 public:
9   int z;
10 };
11 
12 A *foo (A* x) {
13   A *a = new A(*x);
14   return a;
15 }
16 
17 // CHECK: !DICompositeType(tag: DW_TAG_class_type, name: "B"
18 // CHECK-SAME:             flags: DIFlagFwdDecl
19 
20 class B {
21 public:
ReduceLevelTest()22   int y;
23 };
24 
25 extern int bar(B *b);
26 int baz(B *b) {
27   return bar(b);
28 }
29 
Put(const std::string & k,const std::string & v)30 
31 // CHECK-C: !DICompositeType(tag: DW_TAG_structure_type, name: "C"
32 // CHECK-C-SAME:             flags: DIFlagFwdDecl
33 
34 struct C {
35 };
36 
37 C (*x)(C);
38