| /* RUN: %clang_cc1 -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; | 
 | } | 
 |  |