forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			28 lines
		
	
	
		
			962 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			962 B
		
	
	
	
		
			C++
		
	
	
	
// RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited -triple x86_64-apple-darwin %s -o - | FileCheck %s
 | 
						|
//
 | 
						|
// Test that indirect field decls are handled gracefully.
 | 
						|
// rdar://problem/16348575
 | 
						|
//
 | 
						|
template <class T, int T::*ptr> class Foo {  };
 | 
						|
 | 
						|
struct Bar {
 | 
						|
  int i1;
 | 
						|
  // CHECK: ![[INT:[0-9]+]] = !DIBasicType(name: "int"
 | 
						|
  // CHECK: !DIDerivedType(tag: DW_TAG_member, scope:
 | 
						|
  // CHECK-SAME:           line: [[@LINE+4]]
 | 
						|
  // CHECK-SAME:           baseType: ![[UNION:[0-9]+]]
 | 
						|
  // CHECK-SAME:           size: 32, offset: 32
 | 
						|
  // CHECK: ![[UNION]] = distinct !DICompositeType(tag: DW_TAG_union_type,{{.*}} identifier: "_ZTSN3BarUt_E")
 | 
						|
  union {
 | 
						|
    // CHECK: !DIDerivedType(tag: DW_TAG_member, name: "i2",
 | 
						|
    // CHECK-SAME:           line: [[@LINE+5]]
 | 
						|
    // CHECK-SAME:           baseType: ![[INT]]
 | 
						|
    // CHECK-SAME:           size: 32
 | 
						|
    // CHECK-NOT:            offset:
 | 
						|
    // CHECK-SAME:           ){{$}}
 | 
						|
    int i2;
 | 
						|
  };
 | 
						|
};
 | 
						|
 | 
						|
Foo<Bar, &Bar::i2> the_foo;
 |