forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			30 lines
		
	
	
		
			490 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			490 B
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -fblocks %s -emit-llvm -o %t
 | |
| // rdar: // 8041962
 | |
| 
 | |
| extern "C" int printf(const char*, ...);
 | |
| 
 | |
| struct ST {
 | |
|      int filler; 
 | |
|      int referrer;
 | |
| };
 | |
| 
 | |
| void OUTER_BLOCK(void (^fixer)(ST& ref)) {
 | |
|     ST ref = {2, 100};
 | |
|     fixer(ref);
 | |
| }
 | |
|   
 | |
| void INNER_BLOCK(int (^largeDo) ()) {
 | |
| 	printf("%d\n", largeDo());
 | |
| }
 | |
| 
 | |
| void scan() {
 | |
|             OUTER_BLOCK(^(ST &ref) {
 | |
|                 INNER_BLOCK(^() { return ref.referrer + ref.filler; });
 | |
|             });
 | |
| 
 | |
| }
 | |
| 
 | |
| int main() {
 | |
|     scan();
 | |
| }
 |