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