1/* PR 17252.  When a char * pointer P takes its own address, storing
2   into *P changes P itself.  */
3
4char *a;
5
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