char*z=(char*)(uintptr_t)(constvoid*)ptr;// no warning
char*z1=(char*)(constvoid*)ptr;// expected-warning {{cast from 'const void *' to 'char *' drops const qualifier}}
volatilechar*vol=0;
char*vol2=(char*)vol;// expected-warning {{cast from 'volatile char *' to 'char *' drops volatile qualifier}}
constvolatilechar*volc=0;
char*volc2=(char*)volc;// expected-warning {{cast from 'const volatile char *' to 'char *' drops const and volatile qualifiers}}
int**intptrptr;
constint**intptrptrc=(constint**)intptrptr;// expected-warning {{cast from 'int **' to 'const int **' must have all intermediate pointers const qualified}}
volatileint**intptrptrv=(volatileint**)intptrptr;// expected-warning {{cast from 'int **' to 'volatile int **' must have all intermediate pointers const qualified}}
int*intptr;
constint*intptrc=(constint*)intptr;// no warning
constchar**charptrptrc;
char**charptrptr=(char**)charptrptrc;// expected-warning {{cast from 'const char *' to 'char *' drops const qualifier}}