33 lines
		
	
	
		
			627 B
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			627 B
		
	
	
	
		
			Plaintext
		
	
	
	
| // RUN: %clang_cc1 -emit-llvm -o - -fblocks %s -O1 -triple x86_64-apple-darwin10.0.0 -fobjc-runtime=macosx-fragile-10.5 | FileCheck %s
 | |
| 
 | |
| // PR10835 / <rdar://problem/10050178>
 | |
| struct X {
 | |
|   X();
 | |
|   X(const X&);
 | |
|   ~X();
 | |
| };
 | |
| 
 | |
| @interface NRVO
 | |
| @end
 | |
| 
 | |
| @implementation NRVO
 | |
| // CHECK: define internal void @"\01-[NRVO getNRVO]"
 | |
| - (X)getNRVO { 
 | |
|   X x;
 | |
|   // CHECK: tail call void @_ZN1XC1Ev
 | |
|   // CHECK-NEXT: ret void
 | |
|   return x;
 | |
| }
 | |
| @end
 | |
| 
 | |
| X blocksNRVO() {
 | |
|   return ^{
 | |
|     // CHECK-LABEL: define internal void @___Z10blocksNRVOv_block_invoke
 | |
|     X x;
 | |
|     // CHECK: tail call void @_ZN1XC1Ev
 | |
|     // CHECK-NEXT: ret void
 | |
|     return x;
 | |
|   }() ;
 | |
| }
 | |
| 
 |