1struct rtx_def 2{ 3 int code; 4}; 5 6main() 7{ 8 int tmp[2]; 9 struct rtx_def *r, s; 10 int *p, *q; 11 12 /* The alias analyzer was creating the same memory tag for r, p and q 13 because 'struct rtx_def *' is type-compatible with 'int *'. However, 14 the alias set of 'int[2]' is not the same as 'int *', so variable 15 'tmp' was deemed not aliased with anything. */ 16 r = &s; 17 r->code = 39; 18 19 /* If 'r' wasn't declared, then q and tmp would have had the same memory 20 tag. */ 21 p = tmp; 22 q = p + 1; 23 *q = 0; 24 tmp[1] = 39; 25 if (*q != 39) 26 abort (); 27 exit (0); 28} 29