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