struct rtx_def { int code; }; main() { int tmp[2]; struct rtx_def *r, s; int *p, *q; /* The alias analyzer was creating the same memory tag for r, p and q because 'struct rtx_def *' is type-compatible with 'int *'. However, the alias set of 'int[2]' is not the same as 'int *', so variable 'tmp' was deemed not aliased with anything. */ r = &s; r->code = 39; /* If 'r' wasn't declared, then q and tmp would have had the same memory tag. */ p = tmp; q = p + 1; *q = 0; tmp[1] = 39; if (*q != 39) abort (); exit (0); }