f4a2713ac8
Change-Id: Ia40e9ffdf29b5dab2f122f673ff6802a58bc690f
52 lines
932 B
C++
52 lines
932 B
C++
// 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;
|
|
}
|
|
}
|