1#version 400
2
3flat in ivec4 uiv4;
4in vec4 uv4;
5bool ub;
6bool uba;
7bvec4 ub41, ub42;
8in float uf;
9flat in int ui;
10
11out float of1;
12out vec4  of4;
13
14bool foo() { ++of1; return of1 > 10.0; }
15
16void main()
17{
18    of1 = 0.0;
19    of4 = vec4(0.0);
20
21    if (ub || ui > 2)  // not worth short circuiting
22        ++of1;
23
24    if (ub && !uba)  // not worth short circuiting
25        ++of1;
26
27    if (ub || foo())   // must short circuit
28        ++of1;
29
30    if (ub && foo())   // must short circuit
31        ++of1;
32
33    if (foo() || ub)   // not worth short circuiting
34        ++of1;
35
36    if (foo() && ub)   // not worth short circuiting
37        ++of1;
38
39    if (ub || ++of1 > 1.0)   // must short circuit
40        ++of4;
41
42    if (++of1 > 1.0 || ub)   // not worth short circuiting
43        ++of4;
44
45    if (ub || sin(uf) * 4.0 > of1)  // worth short circuiting
46        ++of1;
47
48    if (ub && sin(uf) * 4.0 > of1)  // worth short circuiting
49        ++of1;
50}
51