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