OSDN Git Service

* tree-optimize.c (init_tree_optimization_passes): Re-organize
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / tree-ssa / 20040319-1.c
1 /* { dg-do run } */
2 /* { dg-options "-O2" } */
3
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.  */
8
9 extern void abort (void);
10
11 struct bar { int count;  int *arr;};
12
13 void foo (struct bar *b)
14 {
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 ();
19 }
20
21 main ()
22 {
23   struct bar x;
24   x.arr = &x.count;
25   foo (&x);
26   return 0;
27 }