block-in_structors.C   [plain text]


/* APPLE LOCAL file radar 6305545 */
/* { dg-do run { target *-*-darwin[1-2][0-9]* } } */
/* { dg-options "-mmacosx-version-min=10.5" { target *-*-darwin* } } */
/* { dg-skip-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */

extern "C" void abort(void);

static int count  = 100;
struct CParallelTest
{
	CParallelTest (void);
	~CParallelTest (void) {
	  void (^p1)() = ^ { count -= 3; };
	  p1();
	}
};

CParallelTest::CParallelTest (void)
{
  void (^p1)() = ^ { count = 1; };
  int (^p2)() = ^ { return ++count; };
  int (^p3)() = ^ { return ++count; };
  p1(); p2(); p3();
}

int main()
{
  {
	CParallelTest t1;
  }
  if (count != 0)
    abort();
  return 0;
}