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;
}
