/* APPLE LOCAL file radar 6083129 byref escapes */
/* { dg-do run { target *-*-darwin[1-2][0-9]* } } */
/* { dg-options "-fblocks" } */
/* { dg-skip-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */

#include <stdio.h>

extern "C" void abort(void);

static int count;
extern "C" void _Block_object_dispose(void * arg, int flag) {
  printf ("%p\n", arg);
  ++count;
}

int main() {
  {
    __block int O1;
    int i;
    int p;
    for (i = 1; i <= 5; i++) {
      __block int I1;
      p = 0;
      while (p != 10) {
	__block int II1;
	if (p == 2)
	  break;
	++p;
      }
    }
  }
  return count-21;
}
