/* APPLE LOCAL file radar 5803600 */
/* Test that all global variables referenced in blocks are treated as 'byref' as default. */
/* { dg-do run { target *-*-darwin[1-2][0-9]* } } */
/* { dg-options "-mmacosx-version-min=10.5 -fblocks" { target *-*-darwin* } } */
/* { dg-skip-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */

#include <stdio.h>
void * _NSConcreteStackBlock;

void CallBlock (void (^voidvoidBlock)(void)) {
   voidvoidBlock();
}

int glob = 10;
static int stat = 10;

int foo() {
    static int local = 10;
    CallBlock( ^ {++glob; ++stat; ++local; 
		  CallBlock(^ { ++glob; ++stat; ++local; }); 
		  ++glob; ++stat; ++local; });

    if (glob != 13 || stat != 13 || local != 13)
      return 1;
    return 0;
}

int main()
{
  return foo ();
}

