/* APPLE LOCAL file radar 5822844 */
/* Test that blocks can be declared at global scope. */
/* { dg-do run { target *-*-darwin[1-2][0-9]* } } */
/* { dg-options "-mmacosx-version-min=10.6 -fblocks" { target *-*-darwin* } } */
/* { dg-skip-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */

#include <stdio.h>

static void* _NSConcreteGlobalBlock;


typedef void (^ HelloBlock_t)(const char * name);

HelloBlock_t helloBlock = ^(const char * name)
{
  printf("Hello there, %s!\n", name);
};	

static HelloBlock_t s_helloBlock = ^(const char * name)
{
  printf("Hello there, %s!\n", name);
};	

int X = 1234;
int (^CP)(void) = ^{ X = X+1;  return X; };

int
main(int argc, char * argv[])
{
  helloBlock("world");
  s_helloBlock("world");

  CP();
  printf ("X = %d\n", X);
  return X - 1235;
}
