/* { dg-do compile } */
/* { dg-options "-std=gnu89 -pedantic-errors" } */

w *x; /* { dg-error "unknown type name 'w'" } */

int z;    /* { dg-message "previous declaration of 'z'" } */
y         /* { dg-error "unknown type name 'y'" } */
  * z;    /* { dg-error "conflicting " } */

int f1()
{
  int d, e;
  d * e; /* { dg-bogus "unknown type name 'd'" } */
  g * h; /* { dg-error "unknown type name 'g'" } */
  /* { dg-error "mixed declarations" "" { target *-*-* } .-1 } */
  g i;   /* { dg-error "unknown type name 'g'" } */
}

typedef int a;

int f2()
{
b: a: ; /* { dg-bogus "a label can only be part of a statement" } */
c: d e; /* { dg-error "a label can only be part of a statement" } */
/* { dg-error "unknown type name 'd'" "unknown type name" { target *-*-* } .-1 } */
   ;
}

void *f3()
{
  return x; /* { dg-bogus "'x' undeclared" } */
}

