1#version 310 es
2precision mediump float;
3layout(location = 0) out int FragColor;
4
5void main()
6{
7   FragColor = 16;
8
9   // Basic loop variable.
10   for (int i = 0; i < 25; i++)
11      FragColor += 10;
12
13   // Multiple loop variables.
14   for (int i = 1, j = 4; i < 30; i++, j += 4)
15      FragColor += 11;
16
17   // A potential loop variables, but we access it outside the loop,
18   // so cannot be one.
19   int k = 0;
20   for (; k < 20; k++)
21      FragColor += 12;
22   k += 3;
23   FragColor += k;
24
25   // Potential loop variables, but the dominator is not trivial.
26   int l;
27   if (k == 40)
28   {
29      for (l = 0; l < 40; l++)
30         FragColor += 13;
31      return;
32   }
33   else
34   {
35      l = k;
36      FragColor += l;
37   }
38
39   // Vectors cannot be loop variables
40   for (ivec2 i = ivec2(0); i.x < 10; i.x += 4)
41   {
42      FragColor += i.y;
43   }
44
45   // Check that static expressions can be used before the loop header.
46   int m = 0;
47   m = k;
48   int o = m;
49   for (; m < 40; m++)
50      FragColor += m;
51   FragColor += o;
52}
53