xref: /aosp_15_r20/external/skia/resources/sksl/shared/ForLoopMultipleInitES3.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorGreen, colorRed;
2*c8dee2aaSAndroid Build Coastguard Worker
3*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 coords) {
4*c8dee2aaSAndroid Build Coastguard Worker    // Two variables, both used.
5*c8dee2aaSAndroid Build Coastguard Worker    half sumA = 0, sumB = 0;
6*c8dee2aaSAndroid Build Coastguard Worker    for (half a = 0, b = 10; a < 10 && b > 0; ++a, --b) {
7*c8dee2aaSAndroid Build Coastguard Worker        sumA += a;
8*c8dee2aaSAndroid Build Coastguard Worker        sumB += b;
9*c8dee2aaSAndroid Build Coastguard Worker    }
10*c8dee2aaSAndroid Build Coastguard Worker    if (sumA != 45 || sumB != 55) {
11*c8dee2aaSAndroid Build Coastguard Worker        return colorRed;
12*c8dee2aaSAndroid Build Coastguard Worker    }
13*c8dee2aaSAndroid Build Coastguard Worker
14*c8dee2aaSAndroid Build Coastguard Worker    // Two variables, one dead
15*c8dee2aaSAndroid Build Coastguard Worker    int sumC = 0;
16*c8dee2aaSAndroid Build Coastguard Worker    for (int c = 0, d = 0; c < 10; ++c) {
17*c8dee2aaSAndroid Build Coastguard Worker        sumC += c;
18*c8dee2aaSAndroid Build Coastguard Worker    }
19*c8dee2aaSAndroid Build Coastguard Worker    if (sumC != 45) {
20*c8dee2aaSAndroid Build Coastguard Worker        return colorRed;
21*c8dee2aaSAndroid Build Coastguard Worker    }
22*c8dee2aaSAndroid Build Coastguard Worker
23*c8dee2aaSAndroid Build Coastguard Worker    // Three variables, all used, some array-typed
24*c8dee2aaSAndroid Build Coastguard Worker    float sumE = 0.0;
25*c8dee2aaSAndroid Build Coastguard Worker    for (float d[2] = float[2](0, 10), e[4] = float[4](1,2,3,4), f = 0; d[0] < d[1]; ++d[0]) {
26*c8dee2aaSAndroid Build Coastguard Worker        sumE += half(e[0]);
27*c8dee2aaSAndroid Build Coastguard Worker    }
28*c8dee2aaSAndroid Build Coastguard Worker    if (sumE != 10) {
29*c8dee2aaSAndroid Build Coastguard Worker        return colorRed;
30*c8dee2aaSAndroid Build Coastguard Worker    }
31*c8dee2aaSAndroid Build Coastguard Worker
32*c8dee2aaSAndroid Build Coastguard Worker    // Four variables, all dead
33*c8dee2aaSAndroid Build Coastguard Worker    for (half4 x, y, z, w;; ) break;
34*c8dee2aaSAndroid Build Coastguard Worker
35*c8dee2aaSAndroid Build Coastguard Worker    // Just referencing a variable instead of declaring it--legal, if not meaningful.
36*c8dee2aaSAndroid Build Coastguard Worker    for (sumA;; ) return colorGreen;
37*c8dee2aaSAndroid Build Coastguard Worker}
38