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();
 | 
						|
}
 |