forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C++
		
	
	
	
 | 
						|
// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "PR16214",{{.*}} line: [[@LINE+2]],{{.*}}
 | 
						|
// CHECK-NOT: DIFlagFwdDecl
 | 
						|
struct PR16214 {
 | 
						|
  int i;
 | 
						|
};
 | 
						|
 | 
						|
typedef PR16214 bar;
 | 
						|
 | 
						|
bar *a;
 | 
						|
bar b;
 | 
						|
 | 
						|
namespace PR14467 {
 | 
						|
// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "foo",{{.*}} line: [[@LINE+2]],{{.*}}
 | 
						|
// CHECK-NOT: DIFlagFwdDecl
 | 
						|
struct foo {
 | 
						|
};
 | 
						|
 | 
						|
foo *bar(foo *a) {
 | 
						|
  foo *b = new foo(*a);
 | 
						|
  return b;
 | 
						|
}
 | 
						|
}
 | 
						|
 | 
						|
namespace test1 {
 | 
						|
// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "foo",{{.*}} line: [[@LINE+1]],{{.*}} flags: DIFlagFwdDecl
 | 
						|
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: !DICompositeType(tag: DW_TAG_structure_type, name: "foo",{{.*}} line: [[@LINE+2]],{{.*}}
 | 
						|
// CHECK-NOT: DIFlagFwdDecl
 | 
						|
struct foo {
 | 
						|
};
 | 
						|
 | 
						|
struct bar {
 | 
						|
  foo f;
 | 
						|
};
 | 
						|
 | 
						|
void func() {
 | 
						|
  foo *f;
 | 
						|
}
 | 
						|
}
 |