1*67e74705SXin Li /* RUN: %clang_cc1 -fsyntax-only -verify -std=c90 -pedantic %s 2*67e74705SXin Li */ 3*67e74705SXin Li void foo(void)4*67e74705SXin Lifoo (void) 5*67e74705SXin Li { 6*67e74705SXin Li struct b; 7*67e74705SXin Li struct b* x = 0; 8*67e74705SXin Li struct b* y = &*x; 9*67e74705SXin Li } 10*67e74705SXin Li foo2(void)11*67e74705SXin Livoid foo2 (void) 12*67e74705SXin Li { 13*67e74705SXin Li typedef int (*arrayptr)[]; 14*67e74705SXin Li arrayptr x = 0; 15*67e74705SXin Li arrayptr y = &*x; 16*67e74705SXin Li } 17*67e74705SXin Li foo3(void)18*67e74705SXin Livoid foo3 (void) 19*67e74705SXin Li { 20*67e74705SXin Li void* x = 0; 21*67e74705SXin Li void* y = &*x; /* expected-warning{{address of an expression of type 'void'}} */ 22*67e74705SXin Li } 23*67e74705SXin Li 24*67e74705SXin Li extern const void cv1; 25*67e74705SXin Li foo4(void)26*67e74705SXin Liconst void *foo4 (void) 27*67e74705SXin Li { 28*67e74705SXin Li return &cv1; 29*67e74705SXin Li } 30*67e74705SXin Li 31*67e74705SXin Li extern void cv2; foo5(void)32*67e74705SXin Livoid *foo5 (void) 33*67e74705SXin Li { 34*67e74705SXin Li return &cv2; /* expected-warning{{address of an expression of type 'void'}} */ 35*67e74705SXin Li } 36*67e74705SXin Li 37*67e74705SXin Li typedef const void CVT; 38*67e74705SXin Li extern CVT cv3; 39*67e74705SXin Li foo6(void)40*67e74705SXin Liconst void *foo6 (void) 41*67e74705SXin Li { 42*67e74705SXin Li return &cv3; 43*67e74705SXin Li } 44*67e74705SXin Li 45