1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
  
     | 
    
      // if you unroll all loops with a few iterations, you won't pass this
[require]
GLSL >= 1.10
rlimit 268435456
[vertex shader]
void main()
{
	gl_Position = gl_Vertex;
	gl_TexCoord[0] = gl_Position;
}
[fragment shader]
void main()
{
	gl_FragColor = vec4(0.1, 0.2, 0.3, 0.4);
	if(gl_TexCoord[0].x > 2.0) // this branch is never taken, but the compiler doesn't know this
	{
		for(int i0 = 0; i0 < 16; ++i0)
		for(int i1 = 0; i1 < 16; ++i1)
		for(int i2 = 0; i2 < 16; ++i2)
		for(int i3 = 0; i3 < 16; ++i3)
		for(int i4 = 0; i4 < 16; ++i4)
		for(int i5 = 0; i5 < 16; ++i5)
		for(int i6 = 0; i6 < 16; ++i6)
		for(int i7 = 0; i7 < 16; ++i7)
		for(int i8 = 0; i8 < 16; ++i8)
		for(int i9 = 0; i9 < 16; ++i9)
		for(int i10 = 0; i10 < 16; ++i10)
		for(int i11 = 0; i11 < 16; ++i11)
		for(int i12 = 0; i12 < 16; ++i12)
		for(int i13 = 0; i13 < 16; ++i13)
		for(int i14 = 0; i14 < 16; ++i14)
		for(int i15 = 0; i15 < 16; ++i15)
		{
			gl_FragColor = exp(gl_FragColor);
		}
	}
}
[test]
draw rect -1 -1 2 2
probe all rgba 0.1 0.2 0.3 0.4
 
     |