60 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
| // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -debug-info-kind=limited %s -o - | FileCheck %s
 | |
| 
 | |
| // Make sure we generate debug symbols for an indirectly referenced
 | |
| // extension to an interface.
 | |
| 
 | |
| // This happens to be the order the members are emitted in... I'm assuming it's
 | |
| // not meaningful/important, so if something causes the order to change, feel
 | |
| // free to update the test to reflect the new order.
 | |
| // CHECK: !DIDerivedType(tag: DW_TAG_member, name: "a"
 | |
| // CHECK: !DIDerivedType(tag: DW_TAG_member, name: "d"
 | |
| // CHECK: !DIDerivedType(tag: DW_TAG_member, name: "c"
 | |
| // CHECK: !DIDerivedType(tag: DW_TAG_member, name: "b"
 | |
| 
 | |
| @interface I
 | |
| {
 | |
|     @public int a;
 | |
| }
 | |
| @end
 | |
| 
 | |
| void foo(I* pi) {
 | |
|     int _a = pi->a;
 | |
| }
 | |
| 
 | |
| // another layer of indirection
 | |
| struct S
 | |
| {
 | |
|     I* i;
 | |
| };
 | |
| 
 | |
| @interface I()
 | |
| {
 | |
|     @public int b;
 | |
| }
 | |
| @end
 | |
| 
 | |
| void gorf (struct S* s) {
 | |
|     int _b = s->i->b;
 | |
| }
 | |
| 
 | |
| 
 | |
| I *source();
 | |
| 
 | |
| @interface I()
 | |
| {
 | |
|     @public int c;
 | |
| }
 | |
| @end
 | |
| 
 | |
| void use() {
 | |
|     int _c = source()->c;
 | |
| }
 | |
| 
 | |
| @interface I()
 | |
| {
 | |
|     @public int d;
 | |
| }
 | |
| @end
 | |
| 
 | |
| I *x();
 |