/* APPLE LOCAL file radar 6225809 - radar 5847213 */ /* __block var used in a nested block neeb be implicitly declared in each intervening block. */ /* { dg-do run { target *-*-darwin[1-2][0-9]* } } */ /* { dg-options "-mmacosx-version-min=10.6 " { target *-*-darwin* } } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */ #include <stdio.h> static void Block_copy (void (^I)(void)) { I(); } int main(int argc, char *argv[]) { __block int a = 42; int save_a = a; // just to keep the address on the stack. void (^b)(void) = ^{ Block_copy(^{ a = 2; }); }; Block_copy(b); if(a == save_a) { printf("**** __block heap storage should have been created at this point\n"); return 1; } printf("%s: Success (old %d new %d)\n", argv[0], save_a, a); return 0; }