// RUN: %clang -emit-llvm -g -S %s -o - | FileCheck %s namespace PR16214_1 { // CHECK-DAG: [ DW_TAG_structure_type ] [foo] [line [[@LINE+1]], {{.*}} [def] struct foo { int i; }; typedef foo bar; bar *a; bar b; } namespace PR14467 { // CHECK-DAG: [ DW_TAG_structure_type ] [foo] [line [[@LINE+1]], {{.*}} [def] struct foo { }; foo *bar(foo *a) { foo *b = new foo(*a); return b; } } namespace test1 { // CHECK-DAG: [ DW_TAG_structure_type ] [foo] [line [[@LINE+1]], {{.*}} [decl] struct foo { }; extern int bar(foo *a); int baz(foo *a) { return bar(a); } } namespace test2 { // FIXME: if we were a bit fancier, we could realize that the 'foo' type is only // required because of the 'bar' type which is not required at all (or might // only be required to be declared) // CHECK-DAG: [ DW_TAG_structure_type ] [foo] [line [[@LINE+1]], {{.*}} [def] struct foo { }; struct bar { foo f; }; void func() { foo *f; } }