/* PR 17252. When a char * pointer P takes its own address, storing | |
into *P changes P itself. */ | |
char *a; | |
main () | |
{ | |
/* Make 'a' point to itself. */ | |
a = (char *)&a; | |
/* Change what 'a' is pointing to. */ | |
a[0]++; | |
/* If a's memory tag does not contain 'a' in its alias set, we will | |
think that this predicate is superfluous and change it to | |
'if (1)'. */ | |
if (a == (char *)&a) | |
abort (); | |
return 0; | |
} |