xref: /aosp_15_r20/external/skia/resources/sksl/folding/StructFieldNoFolding.rts (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1uniform half4 colorRed, colorGreen;
2
3struct S {
4    int a, b, c;
5};
6
7int numSideEffects = 0;
8
9noinline int side_effecting(int value) {
10    numSideEffects++;
11    return value;
12}
13
14bool test() {
15    // Structs with elements that have side-effects are not eligible for optimization.
16    int val1 = 2;
17    int val2 = 1;
18
19    int noFlatten0 = S(--val1, side_effecting(2), 3).a;
20    int noFlatten1 = S(side_effecting(1), 2, 3).b;
21    int noFlatten2 = S(1, val2 += 1, 3).c;
22
23    return (noFlatten0 == 1) && (noFlatten1 == 2) && (noFlatten2 == 3) &&
24           (val1 == 1) && (val2 == 2) && (numSideEffects == 2);
25}
26
27half4 main(float2 coords) {
28    return test() ? colorGreen : colorRed;
29}
30