uniform half4 colorRed, colorGreen; struct S { int a, b, c; }; int numSideEffects = 0; noinline int side_effecting(int value) { numSideEffects++; return value; } bool test() { // Structs with elements that have side-effects are not eligible for optimization. int val1 = 2; int val2 = 1; int noFlatten0 = S(--val1, side_effecting(2), 3).a; int noFlatten1 = S(side_effecting(1), 2, 3).b; int noFlatten2 = S(1, val2 += 1, 3).c; return (noFlatten0 == 1) && (noFlatten1 == 2) && (noFlatten2 == 3) && (val1 == 1) && (val2 == 2) && (numSideEffects == 2); } half4 main(float2 coords) { return test() ? colorGreen : colorRed; }