blob: ac66058f3693c0b73913c5565ebee8290b21039a [file] [log] [blame]
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;
}