Dead
[official-gcc.git] / gomp-20050608-branch / gcc / testsuite / gcc.dg / tree-ssa / 20040319-1.c
blobd6e5449716944ffb1d11f515248163bd1ae7c097
1 /* { dg-do run } */
2 /* { dg-options "-O2" } */
4 /* Test derived from PR 14643. When a function has no addressable
5 variables but 2 or more pointers have conflicting memory tags, they
6 were not being processed by the type based alias analyzer,
7 resulting in optimizations removing a non-redundant load. */
9 extern void abort (void);
11 struct bar { int count; int *arr;};
13 void foo (struct bar *b)
15 b->count = 0;
16 *(b->arr) = 2;
17 if (b->count == 0) /* b->count can't be assumed to be 0 here. */
18 abort ();
21 main ()
23 struct bar x;
24 x.arr = &x.count;
25 foo (&x);
26 return 0;