1/* This testcase is to make sure we have i in referenced vars and that we
2   properly compute aliasing for the loads and stores.  */
3
4extern void abort (void);
5
6static int i;
7static int *p = &i;
8
9int __attribute__((noinline))
10foo(int *q)
11{
12  *p = 1;
13  *q = 2;
14  return *p;
15}
16
17int __attribute__((noinline))
18bar(int *q)
19{
20  *q = 2;
21  *p = 1;
22  return *q;
23}
24
25int main()
26{
27  int j = 0;
28
29  if (foo(&i) != 2)
30    abort ();
31  if (bar(&i) != 1)
32    abort ();
33  if (foo(&j) != 1)
34    abort ();
35  if (j != 2)
36    abort ();
37  if (bar(&j) != 2)
38    abort ();
39  if (j != 2)
40    abort ();
41
42  return 0;
43}
44