/* RUN: clang-cc -fsyntax-only -verify -std=c90 -pedantic %s
 */
void
foo (void)
{
 struct b;
 struct b* x = 0;
 struct b* y = &*x;
}

void foo2 (void)
{
 typedef int (*arrayptr)[];
 arrayptr x = 0;
 arrayptr y = &*x;
}

void foo3 (void)
{
 void* x = 0;
 void* y = &*x; /* expected-warning{{address of an expression of type 'void'}} */
}

extern const void cv1;

const void *foo4 (void)
{
  return &cv1;
}

extern void cv2;
void *foo5 (void)
{
  return &cv2; /* expected-warning{{address of an expression of type 'void'}} */
}

typedef const void CVT;
extern CVT cv3;

const void *foo6 (void)
{
  return &cv3;
}

