/* PR c/68320 */
/* { dg-do compile } */
/* { dg-options "" } */

void
fn1 (void)
{
  for (typedef int T;;) /* { dg-error "declaration of non-variable" } */
    if (1)
      ;
  T x; /* { dg-error "unknown type name" } */
}

void
fn2 (int i)
{
  for (typedef int T;;) /* { dg-error "declaration of non-variable" } */
    if (1)
      i = 5;
  T x; /* { dg-error "unknown type name" } */
}

void
fn3 (void)
{
  for (typedef int T;;) /* { dg-error "declaration of non-variable" } */
    if (1)
      {
      }
  T *x; /* { dg-error "unknown type name" } */
}

void
fn4 (void)
{
  for (typedef int T;;) /* { dg-error "declaration of non-variable" } */
    if (1)
      ;
  T, T; /* { dg-error "undeclared" } */
}

void
fn5 (void)
{
  for (typedef int T;;) /* { dg-error "declaration of non-variable" } */
    if (1)
      ;
  T = 10; /* { dg-error "undeclared" } */
}

void
fn6 (void)
{
  for (typedef int T;;) /* { dg-error "declaration of non-variable" } */
    if (1)
      ;
  T[0]; /* { dg-error "undeclared" } */
}

void
fn7 (void)
{
  for (typedef int T;;) /* { dg-error "declaration of non-variable" } */
    if (1)
      ;
  T (); /* { dg-warning "implicit declaration" } */
}
