1 /* PR 17252. When a char * pointer P takes its own address, storing 2 into *P changes P itself. */ 3 4 char *a; 5 main()6main () 7 { 8 /* Make 'a' point to itself. */ 9 a = (char *)&a; 10 11 /* Change what 'a' is pointing to. */ 12 a[0]++; 13 14 /* If a's memory tag does not contain 'a' in its alias set, we will 15 think that this predicate is superfluous and change it to 16 'if (1)'. */ 17 if (a == (char *)&a) 18 abort (); 19 20 return 0; 21 } 22