blocks.c revision 2475d76920b43014e661690836642ca3c9967179
1// RUN: clang-cc -triple i386-unknown-unknown %s -emit-llvm -o %t -fblocks 2void (^f)(void) = ^{}; 3 4// rdar://6768379 5int f0(int (^a0)()) { 6 return a0(1, 2, 3); 7} 8 9// Verify that attributes on blocks are set correctly. 10typedef struct s0 T; 11struct s0 { 12 int a[64]; 13}; 14 15// RUN: grep 'internal void @__f2_block_invoke_(.struct.s0\* noalias sret .*, .*, .* byval .*)' %t 16struct s0 f2(struct s0 a0) { 17 return ^(struct s0 a1){ return a1; }(a0); 18} 19 20// This should not crash: rdar://6808051 21void *P = ^{ 22 void *Q = __func__; 23}; 24 25void (^test1)(void) = ^(void) { 26 __block int i; 27 ^ { i = 1; }(); 28}; 29 30