/* APPLE LOCAL file mainline 2006-06-29 4336222 */
/* { dg-do compile  } */
/* { dg-options "-std=c99 -pedantic-errors" } */
/* Radar 4336222 */

int a;
struct s { void (*f)(int (*)[a]); };

static int i;
static int new_i() { i++; return i; }
static int bar1(int a[new_i()][new_i()]);

void foo(int n) {
  extern void bar(int i[n][n]);			/* Since this isn't a VM type ensure we can have linkage.  */
  extern int bar1(int a[new_i()][new_i()]);	/* Since this isn't a VM type ensure we can have linkage.  */
}

void foo1(int n) {
  goto A;
  void bar(int i[n][n]);			/* Not a VM type, as VM arguments don't matter. */
  int bar1(int a[new_i()][new_i()]);		/* Not a VM type, as VM arguments don't matter. */
 A:
  ;
}

void foo2(int n) {
  goto A;		/* { dg-error "jump into scope of identifier with variably modified type" } */
  int (*(*bar2)(void))[n];
 A:
  ;
}
