blob: 820c96e5e54e9dc674ec4536103bfbba94a4197e [file] [log] [blame]
/* 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;
}