forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			46 lines
		
	
	
		
			681 B
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			681 B
		
	
	
	
		
			Plaintext
		
	
	
	
| // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
 | |
| 
 | |
| struct A { ~A(); };
 | |
| 
 | |
| @interface B {
 | |
|   A a;
 | |
| }
 | |
| 
 | |
| - (const A&)getA;
 | |
| @end
 | |
| 
 | |
| @implementation B 
 | |
| 
 | |
| - (const A&)getA {
 | |
|   return a;
 | |
| }
 | |
| 
 | |
| @end
 | |
| 
 | |
| // CHECK-LABEL: define void @_Z1fP1B
 | |
| // CHECK: objc_msgSend to
 | |
| // CHECK-NOT: call void @_ZN1AD1Ev
 | |
| // CHECK: ret void
 | |
| void f(B* b) {
 | |
|   (void)[b getA];
 | |
| }
 | |
| 
 | |
| // PR7741
 | |
| @protocol P1 @end
 | |
| @protocol P2 @end
 | |
| @protocol P3 @end
 | |
| @interface foo<P1> {} @end
 | |
| @interface bar : foo <P1, P2, P3> {} @end
 | |
| typedef bar baz;
 | |
| void f5(foo&);
 | |
| void f5b(foo<P1>&);
 | |
| void f5c(foo<P2>&);
 | |
| void f5d(foo<P3>&);
 | |
| void f6(baz* x) { 
 | |
|   f5(*x); 
 | |
|   f5b(*x); 
 | |
|   f5c(*x); 
 | |
|   f5d(*x);
 | |
|   (void)((foo&)*x);  
 | |
| }
 |