/* APPLE LOCAL file radar 5988451 - nested blocks */ /* This routine tests a nested block when a copied-in variable in the inner block must be 'frozen' at the outer block so, it has the value at the point of inner block declaration and not when block is envoked. */ /* { dg-do run { target *-*-darwin[1-2][0-9]* } } */ /* { dg-options "-fblocks" } */ /* { dg-skip-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */ extern void abort(void); void * _NSConcreteStackBlock; void callVoidVoid(void (^closure)(void)) { closure(); } int main(int argc, char *argv[]) { int local_i_var = 1; void (^vv)(void) = ^{ if (argc > 0) { callVoidVoid(^{ if (local_i_var != 1) abort(); }); } }; local_i_var = 2; vv(); return 0; }