|  | /* 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; | 
|  | } | 
|  |  |