mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-30 16:17:05 +00:00 
			
		
		
		
	git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61755 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			29 lines
		
	
	
		
			605 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			605 B
		
	
	
	
		
			C
		
	
	
	
	
	
| // RUN: %llvmgcc %s -S -emit-llvm -O2 -o %t.s
 | |
| // RUN: grep {call i32 .*printf.*argc} %t.s | count 3
 | |
| // RUN: not grep __block_holder_tmp %t.s
 | |
| // rdar://5865221
 | |
| 
 | |
| // All of these should be inlined equivalently into a single printf call.
 | |
| 
 | |
| static int fun(int x) {
 | |
| 	return x+1;
 | |
| }
 | |
| 
 | |
| static int block(int x) {
 | |
| 	return (^(int x){return x+1;})(x);
 | |
| }
 | |
| 
 | |
| static void print(int result) {
 | |
|     printf("%d\n", result);
 | |
| }
 | |
| 
 | |
| int main (int argc, const char * argv[]) {
 | |
|     int	x = argc-1;
 | |
|     print(fun(x));
 | |
|     print(block(x));
 | |
|     int	(^block_inline)(int) = ^(int x){return x+1;};
 | |
|     print(block_inline(x));
 | |
|     return 0;
 | |
| }
 | |
| 
 |