1// 2// The LLVM Compiler Infrastructure 3// 4// This file is distributed under the University of Illinois Open Source 5// License. See LICENSE.TXT for details. 6 7#include <Block.h> 8#include <stdio.h> 9 10// CONFIG rdar://6225809 11// fixed in 5623 12 13int main(int argc, char *argv[]) { 14 __block int a = 42; 15 int* ap = &a; // just to keep the address on the stack. 16 17 void (^b)(void) = ^{ 18 //a; // workaround, a should be implicitly imported 19 Block_copy(^{ 20 a = 2; 21 }); 22 }; 23 24 Block_copy(b); 25 26 if(&a == ap) { 27 printf("**** __block heap storage should have been created at this point\n"); 28 return 1; 29 } 30 printf("%s: Success\n", argv[0]); 31 return 0; 32} 33