1#define S (sizeof (int))
2
3unsigned int c[624];
4void __attribute__((noinline))
5bar (void)
6{
7  unsigned int i;
8  /* Obfuscated c[i] = c[i-1] * 2.  */
9  for (i = 1; i < 624; ++i)
10    *(unsigned int *)((void *)c + (__SIZE_TYPE__)i * S)
11	= 2 * *(unsigned int *)((void *)c + ((__SIZE_TYPE__)i +
12					     ((__SIZE_TYPE__)-S)/S) * S);
13}
14extern void abort (void);
15int
16main()
17{
18  unsigned int i, j;
19  for (i = 0; i < 624; ++i)
20    c[i] = 1;
21  bar();
22  j = 1;
23  for (i = 0; i < 624; ++i)
24    {
25      if (c[i] != j)
26	abort ();
27      j = j * 2;
28    }
29  return 0;
30}
31