30 lines
681 B
Plaintext
30 lines
681 B
Plaintext
|
|
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;
|
||
|
|
}
|