1 // RUN: %clang -emit-llvm -g -S %s -o - | FileCheck %s 2 3 namespace PR16214_1 { 4 // CHECK-DAG: [ DW_TAG_structure_type ] [foo] [line [[@LINE+1]], {{.*}} [def] 5 struct foo { 6 int i; 7 }; 8 9 typedef foo bar; 10 11 bar *a; 12 bar b; 13 } 14 15 namespace PR14467 { 16 // CHECK-DAG: [ DW_TAG_structure_type ] [foo] [line [[@LINE+1]], {{.*}} [def] 17 struct foo { 18 }; 19 20 foo *bar(foo *a) { 21 foo *b = new foo(*a); 22 return b; 23 } 24 } 25 26 namespace test1 { 27 // CHECK-DAG: [ DW_TAG_structure_type ] [foo] [line [[@LINE+1]], {{.*}} [decl] 28 struct foo { 29 }; 30 31 extern int bar(foo *a); 32 int baz(foo *a) { 33 return bar(a); 34 } 35 } 36 37 namespace test2 { 38 // FIXME: if we were a bit fancier, we could realize that the 'foo' type is only 39 // required because of the 'bar' type which is not required at all (or might 40 // only be required to be declared) 41 // CHECK-DAG: [ DW_TAG_structure_type ] [foo] [line [[@LINE+1]], {{.*}} [def] 42 struct foo { 43 }; 44 45 struct bar { 46 foo f; 47 }; 48 49 void func() { 50 foo *f; 51 } 52 } 53