/* { dg-do run } */
/* { dg-options "-std=c99 -pedantic-errors" } */
/* PR c/18740 */

static int i;

int foo(int n)
{
  int (*t)[n];
  i = 0;
  int j = 0;
  char b[1][n+3];			/* Variable length array.  */
  int d[3][n];				/* Variable length array.  */
  sizeof (b[i++ + sizeof(j++)]);	/* Outer sizeof is evaluated for vla, but not the inner one.  */
  if (i != 1 || j != 0)
    return 1;
  __typeof__(b[i++]) c1;		/* typeof is evauluated when given a vm */
  if (i != 2)
    return 1;
  __typeof__(t + (i++,0)) c2;		/* typeof is evauluated when given a vm */
  if (i != 3)
    return 1;
  __typeof__(i + (i++,0)) c3;		/* typeof is not evauluated when not given a vm */
  if (i != 3)
    return 1;
  sizeof (d[i++]);			/* sizeof is evaluated for vla.  */
  if (i != 4)
    return 1;
  __alignof__(__typeof__(t + (i++,0)));	/* typeof is not evauluated when given a vm inside alignof*/
  if (i != 4)
    return 1;
  sizeof(__typeof__(t + (i++,0)));	/* typeof is not evauluated when given a vm inside sizeof*/
  if (i != 4)
    return 1;
  return 0;
}

int foo6(int a, int b[a][a], int (*c)[sizeof(*b)]) {
  return sizeof (*c);
}

int main() {
  int b[10][10];
  int (*c)[sizeof(int)*10];
  if (foo6(10, b, c) != 10*sizeof(int)*sizeof(int))
    return 1;
  return foo(10);
}
