1 /* { dg-do run } */
2 
3 extern void abort (void);
4 
5 int i, j, *pj = &j, **ppj = &pj;
6 int x, *px = &x;
7 
8 short s, *ps = &s, k;
9 
10 unsigned short u, *pu = &u, **ppu = &pu;
11 
12 char c, *pc = &c;
13 
14 unsigned char v = 48;
15 
16 static int
bar(int p)17 bar (int p)
18 {
19   p = k;
20   *px = **ppu = i;
21   *ppj = &p;
22   if (**ppj)
23     *pj = p;
24   return p;
25 }
26 
27 void __attribute__((noinline))
foo()28 foo ()
29 {
30   for (; i <= 3; i++)
31     for (; j; j--);
32 
33   u ^= bar (*pj);
34 
35   for (k = 1; k >= 0; k--)
36     {
37       int l;
38       bar (0);
39       for (l = 1; l < 5; l++)
40 	{
41 	  int m;
42 	  for (m = 6; m; m--)
43 	    {
44 	      v--;
45 	      *ps = *pc;
46 	    }
47 	}
48     }
49 }
50 
51 int
main()52 main ()
53 {
54   foo ();
55   if (v != 0)
56     abort ();
57   return 0;
58 }
59