1*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorRed, colorGreen; 2*c8dee2aaSAndroid Build Coastguard Worker 3*c8dee2aaSAndroid Build Coastguard Workerstruct S { 4*c8dee2aaSAndroid Build Coastguard Worker int a, b, c; 5*c8dee2aaSAndroid Build Coastguard Worker}; 6*c8dee2aaSAndroid Build Coastguard Worker 7*c8dee2aaSAndroid Build Coastguard Workervoid check_array_1(int[1]) {} 8*c8dee2aaSAndroid Build Coastguard Workervoid check_array_2(int[2]) {} 9*c8dee2aaSAndroid Build Coastguard Workervoid check_array_3(int[3]) {} 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Workerbool test() { 12*c8dee2aaSAndroid Build Coastguard Worker const S x = S(1, 2, 3); 13*c8dee2aaSAndroid Build Coastguard Worker const S xx = S(1, 2, 3); 14*c8dee2aaSAndroid Build Coastguard Worker const S y = S(1, 2, 4); 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker int a[x.a]; 17*c8dee2aaSAndroid Build Coastguard Worker int b[x.b]; 18*c8dee2aaSAndroid Build Coastguard Worker int c[x.c]; 19*c8dee2aaSAndroid Build Coastguard Worker check_array_1(a); 20*c8dee2aaSAndroid Build Coastguard Worker check_array_2(b); 21*c8dee2aaSAndroid Build Coastguard Worker check_array_3(c); 22*c8dee2aaSAndroid Build Coastguard Worker 23*c8dee2aaSAndroid Build Coastguard Worker // Structs with elements lacking side-effects can be optimized. 24*c8dee2aaSAndroid Build Coastguard Worker int two = 2; 25*c8dee2aaSAndroid Build Coastguard Worker int flatten0 = S(x.a, two, 3).a; 26*c8dee2aaSAndroid Build Coastguard Worker int flatten1 = S(x.a, two, 3).b; 27*c8dee2aaSAndroid Build Coastguard Worker int flatten2 = S(x.a, two, 3).c; 28*c8dee2aaSAndroid Build Coastguard Worker 29*c8dee2aaSAndroid Build Coastguard Worker return (x == xx) && !(x != xx) && (x != y) && !(x == y) && (x.a == y.a) && 30*c8dee2aaSAndroid Build Coastguard Worker (flatten0 == x.a) && (flatten1 == x.b) && (flatten2 == x.c); 31*c8dee2aaSAndroid Build Coastguard Worker} 32*c8dee2aaSAndroid Build Coastguard Worker 33*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 coords) { 34*c8dee2aaSAndroid Build Coastguard Worker return test() ? colorGreen : colorRed; 35*c8dee2aaSAndroid Build Coastguard Worker} 36