modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20030828-2.c (about) 1 struct rtx_def 2 { 3 int code; 4 }; 5 6 main() 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 }