#version 310 es precision mediump float; layout(location = 0) out int FragColor; void main() { FragColor = 16; // Basic loop variable. for (int i = 0; i < 25; i++) FragColor += 10; // Multiple loop variables. for (int i = 1, j = 4; i < 30; i++, j += 4) FragColor += 11; // A potential loop variables, but we access it outside the loop, // so cannot be one. int k = 0; for (; k < 20; k++) FragColor += 12; k += 3; FragColor += k; // Potential loop variables, but the dominator is not trivial. int l; if (k == 40) { for (l = 0; l < 40; l++) FragColor += 13; return; } else { l = k; FragColor += l; } // Vectors cannot be loop variables for (ivec2 i = ivec2(0); i.x < 10; i.x += 4) { FragColor += i.y; } // Check that static expressions can be used before the loop header. int m = 0; m = k; int o = m; for (; m < 40; m++) FragColor += m; FragColor += o; }